2016-07-18 21 views
0

Ich benutze usb4java und ich habe das Beispiel wie auf der Hilfeseite (http://usb4java.org/quickstart/javax-usb.html) beschrieben verwendet, um Daten auf einem Bondrucker durch synchrone I/O (pipe.syncSubmit), jede Zeile mit endend, zu drucken LF (10) um den Ausgang zu spülen.usb4java - Spülen funktioniert nicht

Es funktioniert gut mit einem chinesischen 58mm Modell, aber wenn ich an einen Epson 80mm Drucker anschließe, wird die Ausgabe zufällig geschnitten. Meistens fehlen die letzten Zeilen.

Ich frage mich, ob ich mehr als nur senden LF, schließen Sie die Pipe und Freigabe der UsbInterface, um sicherzustellen, dass alle Bytes an den Drucker übertragen werden müssen. Gibt es eine Art Flush-Operation oder einen Schreib-Cache auf einem solchen Nicht-Massenspeichergerät, das ich irgendwie deaktivieren muss?

Antwort

0

Versuchen Sie, den Pipe-Befehl mit Chunks von maximal 4 Bytes, z.

pipe.syncSubmit(new byte[] { 70, 71, 72, 73}); 
pipe.syncSubmit(new byte[] { 74, 75, 76, 10}); 

Als letzten Byte 10 sollte es für den Zeilenvorschub (was thew Ausgabe an den Drucker Wallungen).

Das half mir (obwohl die vom USB-Gerät angekündigte Paketgröße 64 war). Nicht sicher, ob es einen Fehler in usb4java oder ein anderes Problem gibt.