2016-05-04 2 views
0

Ich benutze USB4Java, um ein bestimmtes USB-Gerät auf einem Thread abzufragen und sofort die Daten einzulesen, wenn verfügbar. Das Problem, das ich habe, ist, dass es keine available() Methode gibt, wie es für Streams ist, die die verfügbare Anzahl von Bytes auf dem Port zum Lesen prüft (a la NRSerial für serielle Ports). Gibt es eine entsprechende Vorgehensweise für USB? Wenn nicht, könnte ich einfach die Lesefunktion aufrufen und auf Timeout warten? Letzteres scheint mir zu brutaler Gewalt.Polling USB für Daten mit USB4Java

Antwort

0

Es gibt einfach keine andere Wahl als Polling (zumindest in USB 2.0). So funktioniert das Einlesen in USB: Der Host fragt das Gerät nach Daten ab. Das Gerät muss Daten speichern, die in einem Puffer an den Host gesendet werden, und warten, bis der Host danach fragt. Nur USB 3 gibt dem Gerät die Möglichkeit, dem Host mitzuteilen, wenn sich neue Daten im Puffer befinden (technisch gesehen ist dies auch die Host-Abfrage für ein Flag, das leichter ist als eine Leseübertragung auszulösen).