Fehlendes Lesen der Daten

1455
user55848

Beim Lesen von Daten von einem HID-Gerät über Hidraw verpassen ich manchmal einige Daten. Ich kann sehen, dass die Daten mit einem Hardware-Snooping-Gerät korrekt über USB übertragen werden, aber aus irgendeinem Grund bekomme ich die Daten beim Lesen von Hidraw nicht immer.

Das Problem wurde weniger spürbar, als ich einen Prozess auf dem System stoppte, der viel CPU verbrauchte. Daher denke ich, dass mein Problem irgendwie mit dem CPU-Hunger zusammenhängt.

Das Lesen der HID-Daten erfolgt über einen Thread, der auf eine Sperrauswahl wartet.

Zum Beispiel:

FD_ZERO ( &fdset_device ); FD_SET ( fd, &fdset_device );  // fd is file descriptor for /dev/hidraw0  fd_set read_set; read_set = fdset_device;  for ( ;; ) { if ( ( select_result = select ( fd + 1, &read_set, NULL, NULL, NULL ) ) >= 0 ) { int report_len = read ( fd, report_buffer, sizeof ( report_buffer ) ); ... … 

Unter korrekten Bedingungen werden also die Pakete A,B,C,D,E,Fgesendet und ich empfange Hidraw-Pakete A,B,C,D,E,F, aber wenn der Fehler auftritt, erhalte ich vielleicht A,B,E,FoderA,B,C,F

Ich bin mir nicht sicher, warum und unter welchen Umständen ich solche Daten vermisse. Hat jemand Probleme mit hidraw gesehen, die Daten verlieren?

1
Probleme, die sich auf die Programmierung und Softwareentwicklung beziehen, sind nicht relevant, siehe [On-Topic] (https://superuser.com/help/on-topic). Versuchen Sie [SO], aber lesen Sie zuerst [Wie stelle ich eine gute Frage?] (Https://stackoverflow.com/help/how-to-ask). DavidPostill vor 7 Jahren 0

0 Antworten auf die Frage