Forum: Mikrocontroller und Digitale Elektronik PyUSB : Flush-Buffer + Zadig


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von M. L. (ado)


Bewertung
0 lesenswert
nicht 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 ?

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht 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.

von M. L. (ado)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.