Geschichte: Meine Anwendung ist für mobile Plattformen konzipiert und hat eine eigene Verbindung mit Bluetooth-Nadeldrucker, um einige Rechnungen und Dokumente auf Fläche oder Feld zu drucken. Einige Android-Geräte funktionieren gut, aber einige von ihnen werfen immer gebrochene Pipe-Ausnahme, wenn Benutzer versuchen, etwas zu drucken.Delphi Firemonkey "Broken Pipe" Ausnahme
Prozess:
- benutzte ich TBluetoothManager und TBluetoothDeviceList für gekoppelte Geräte Liste bekommen und ich alle gekoppelten Geräte in Config-ini-Dateien gespeichert.
- Wenn Benutzer drucken möchte, initiiere ich die Verbindung mit dem Gerät, das zum Drucken bereit ist, und dann zahle ich Rechnung Zeile für Zeile an TBluetoothSocket Objekt.
- Ich ändere meine jede Zeile zu Byte-Array mit dieser Funktion;
function StrToByteArr(strData: String): TArray<Byte>; var eEncoding: TEncoding; begin eEncoding := TEncoding.GetEncoding(857); Result := eEncoding.GetBytes(strData); end;
Dann sende ich meine Werte als Byte-Array zu TBluetoothSocket.SendData(Byte>) Method
Problem: Ich versuchte, meine Werte mit 10+ verschiedenen Geräten und Erfolgsquote ist nicht gut genug zu drucken (8/20 Geräte sind in Ordnung). Was soll ich machen?