Hallo!
...und es wurde doch gelesen!
Das Gerät selbst ist ein selbstentwickeltes Messgerät aus unserer Firma. Normalerweise reden die verbauten µC nur untereinander via USB. Ich muss jetzt aber für einen Prüfstand den Master auf dem PC nachbilden.
Das Protokoll ist relativ simpel:
Bulk-in Pipe ist 85h, Bulk-Out Pipe is 06h
Ich kann mit dem Gerät reden...alles gut...!
Wenn ich auf die Bulk-Out Pipe ein 0x0000 0114 (hex) rausschiebe, werden Messdaten vom Messgerät auf der Bulk-In Pipe 84 ausgegeben.
Anschließend können(!) auf der 83h Statusdaten anliegen....oder auch nicht.
Das Problem ist, dass ich die die vorhandenen Daten auf der 83h abholen muss, bevor neue an der 84h anliegen. (und umgekehrt)
Ohne das Gerät selber kann man es schlecht nachstellen.
Leider funktioniert der Timeout nicht, wenn der EP gültig ist aber keine Daten vorhanden sind. (oder ich habe den richtigen noch nicht gefunden)
Ich muss also rausfinden, ob auf EP 83h oder 84h Daten anliegen und wenn ja, darauf reagieren. (Was sicherlich mit Interrupts zu lösen sein müsste, ich weiß nur nicht wie)
Ein rudimentäres Python-Skript auf dem PC funktioniert via "CallBack"-Funktionen des darunterliegenden WinUSB-Treibers. (Der selbe, den auch der NI-VISA Wizard bereitstellt)
Ich kann leider nicht so viele "interna" freigeben, hoffentlich reicht das Blockdiagramm um mein Problem zu verstehen.
Mirko
Edit: Die Kommando Bulk-Out ist 06h (im Anhang steht noch 02h)