Historia: Moja aplikacja jest przeznaczona dla platform mobilnych i ma własne połączenie z drukarką mozaiką punktową, aby wydrukować niektóre faktury i dokumenty na temat obszaru lub pola. Niektóre z urządzeń z Androidem działają świetnie, ale niektóre z nich zawsze wyrzucają zepsute wyjątki, gdy użytkownicy próbują coś wydrukować.Delphi Firemonkey "Broken Pipe" Wyjątek
Proces:
- użyłem TBluetoothManager i TBluetoothDeviceList uzyskania listy sparowanych urządzeń i przechowywane wszystkie sparowane urządzenia w config plików INI.
- Gdy użytkownik chce drukować, inicjuję połączenie z urządzeniem, które jest gotowe do drukowania, a następnie wysyłam fakturę po linii do obiektu TBluetoothSocket.
- Zmieniam każdą linię na Bajtową tablicę za pomocą tej funkcji;
function StrToByteArr(strData: String): TArray<Byte>; var eEncoding: TEncoding; begin eEncoding := TEncoding.GetEncoding(857); Result := eEncoding.GetBytes(strData); end;
Wtedy wyślę moje wartości jako Byte Array do TBluetoothSocket.SendData(Byte>) Method
Problem: Próbowałem wydrukować moje wartości z 10+ różnymi urządzeniami i wskaźnik sukcesu nie jest wystarczająco dobre (8/20 urządzeń działa bez zarzutu). Co powinienem zrobić?