Erstellen einer USB-Device-Liste mithilfe von win32-api
Hallo liebe LabVIEW-Gemeinde,
mein Anliegen ist folgendes:
Ich arbeite zur Zeit als Praktikant an einem automatisierten Testsystem. Das DUT (device under test) wird bislang per fbus angesteuert und ausgelesen und nun soll das ganze auch per usb möglich sein. Da unsere Abteilung für Treiber gerade stark beschäftigt ist wird meine Anfrage für eine Erweiterung der Gerätetreiber noch ne Weile dauern weshalb ich mich gerade selber in die Windows-Programmierung einarbeite um vielleicht selbst einen Weg zu finden die DUT per USB anzusprechen.
Im Moment versuche ich per LabVIEW eine Liste mit Infos (genauer gesagt der Describer-Infos) aller angeschlossenen USB-Geräte zu erstellen. Laut meinen Infos soll das Ganze mit den Funktionen der setupapi.dll möglich sein, nämlich wie folgt:
1. Per Funktionsaufruf "HDEVINFO x = SetupDiCreateDeviceInfoList( IN LPGUID ClassGuid..OPTIONAL, IN HWND hwndParent OPTIONAL );" wird erst einmal eine Liste erstellt in der nacher die Suchergebnisse stehen.
2. Aufruf "x = SetupDiGetClassDevs(NULL, 0, 0, DIGCF_PRESENT | DIGCF_ALLCLASSES );" füllt die Liste mit den gefunden USB-Instanzen
3. Per "SetupDiGetDeviceInterfaceDetai..??);" Kann ich nun die einzelnen Ergebnisse auslesen.
Soviel zum Prinzip. Laut den Infos die ich mir bislang erarbeitet habe macht es allerdings keinen Sinn diese Library per LV aufzurufen, da LV mit den Windowsdatentypen wie z.B. "Handle oder struct" ohnehin nicht viel anfangen kann. Wenn ich mich nicht irre müsste ich selbst noch eine sogenannte "Wrapper-Library" schreiben (C++ z.B.) deren Funktionen die setupapi.dll aufrufen und die ergebnisse in LV taugliche Daten umwandeln. Erst per Aufruf dieser Wrapper-Library bekomm ich dann die gewünschten Daten in LabVIEW.
Meine Fragen an Euch sind nun folgende:
a) Sind meine beschriebenen Gedankengänge im Prinzip richtig?
b) Hat Jemand schonmal derartiges gemacht und kann mir ein wenig Hilfstellung im Erstellen der Wrapper-Library geben (zugegeben meine C++ Künste sind mittlerweile doch recht eingerostet)
c) Ich weiß zwar dass in HDEVINFO die ganzen Daten gespeichert werden, aber eine genau Spezifikation wie sie dort gespeichert werden konnte ich bislang nicht finden (also hinweise bezüglich der daten-strukte etc.)
Gruß, wonx
|