PyUSB : Flush-Buffer + Zadig

OP #5069415
Lesenswert?

Ich verwende hier in einer Testumgebung PyUSB um die Funktionen einer 
neuen USB-Hardware zu testen, die ich entwickele. Dabei handelt es sich 
um eine Neuimplementierung vorhandener Hardware auf eine neue 
Microcontroller-Familie (STM32F0).

Oft befinden sich während Software-Tests noch Daten-Reste in den 
USB-Buffern des Betriebssystems (Windows7).
Gibt es eine Möglichkeit die USB-Buffer im Windows7-Betriebssystem am 
Anfang des Python-Scripts zu löschen (flush) ?

PyUSB verwendet libusb, unsere Standardanwendung die 
Windows-Standard-Hid-Treiber.
Mit Zadig kann ich die Treiberzuordnung von Windows-Std nach libusb 
umstellen.
Leider nur in die Richtung nach libUsb und nicht zurück.
Zum Zurücksetzen lösche ich die Zuordnung in "UsbDeview".
Danach lösche ich die Inf-Datei, z.B. C:\Windows\inf\oem89.inf
Nach dem Reconnect holt sich das Device wieder den 
Standard-Windowstreiber.

Gibt es da vielleicht eine einfachere Möglichkeite zwischen 2 
Treiberzuordnungen hin und herwechseln zu können ?
#5069633
Lesenswert?

M. L. schrieb:
> Gibt es da vielleicht eine einfachere Möglichkeite zwischen 2
> Treiberzuordnungen hin und herwechseln zu können ?

Ja: Flashe den STM32F0 mit einer Firmware die eine andere VID:PID 
Kombination zum Testen mit LibUSB hat.

M. L. schrieb:
> Oft befinden sich während Software-Tests noch Daten-Reste in den
> USB-Buffern des Betriebssystems (Windows7).

Kann ich so nicht nachvollziehen. Eventuell auf LibUSB-Win32 Treiber 
umsteigen, da bekommt das Gerät beim Anstecken einen neuen Namen (falls 
der alte noch existiert). Müsste mit PyUSB eigentlich tun - YMMV.
OP #5070169
Lesenswert?

Danke für die gute Idee zwei PIDs zu nehmen.
Ich habe jetzt 2 weitere Debug-Konfigurationen in EmBitz mit einem 
#define Schalter erstellt, und ich kann jetzt in der GUI der IDE die 
gewünschte Version auswählen und kompilieren.
Vielleicht baue ich noch einen Taster an der Hardware mit dem man beim 
Bestromen die zweite Variante mit Tastendruck auswählen kann.

Den LibUSB-Win32 Treiber verwende ich bereits, ich hatte den 
Treibernamen nur nicht komplett ausgeschrieben.
Beim Neu-Einstecken des USB-Devices werden die USB-BetriebssystemBuffer 
gelöscht. Über den einen Endpoint werden zur Zeit verschiedene 
Datenarten übertragen und bei meinen kleinen Python-Testscripts mache 
ich keine DeepPacketInspections zu Sortierung der verschiedenen 
Paketarten sondern stelle die Pakete auf der Console nur da.
Ich dachte es gibt da vielleicht einen Befehl mit dem man die Buffer 
löschen kann ohne das Gerät neu einzustecken.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren