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 ?
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.