Graben herum mit/für HID-Berichte, stieß ich auf ein seltsames Problem in einem USB-HID-Gerät. Ich implementiere ein Gerät der HID-Klasse und habe mein Programm auf dem von Keil gelieferten HID-USB-Programm basiert. Einige Codes wurden in diesem Projekt geändert und es scheint gut mit 32-Byte-Eingabe- und 32-Byte-Ausgabeberichten zu funktionieren. Irgendwie, nach tausenden von Datenübertragungen, würde der Endpunkt 1 out hängen bleiben und eine schlechte Pipe werden. Dann habe ich im Google nach einigen Tipps gesucht, ein Thema erinnere mich daran, dass wir ein Datenlängen-Null-Paket nach dem Senden einer Paketlänge schreiben sollen, was du in der Berichtsbeschreibung definiert hast. Aber es funktioniert nicht für mich. Dann schreibe ich eine Datenlänge Null in die Kontroll-Pipe, nachdem ich ein Out-Paket erhalten habe und magisch, es funktioniert! Es würde niemals nach Millionen Übertragungen hängen!usb hid: warum sollte ich schreiben "Null" auf die Steuerleitung in der Out-Endpunkt Interrupt
Hier ist meine Frage: Warum funktioniert es nach dem Schreiben einer Datenlänge Null auf eine Steuerleitung. Die Daten, die in der Out-Pipe übertragen werden, sollten keine Beziehung zu den Daten in der Kontroll-Pipe haben. Das verwirrt mich!
Siehe: [Senden Sie uns] und zeigen Sie bitte eine [MCVE]. Sie haben sich auch nicht die Mühe gemacht, die 2-minütige Site-Tour zu beenden, bevor Sie gefragt haben. –