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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.