![]() |
USB Device Lister
Name: USB Device Lister
Version: 0.82 (20.01.2004) Betriebssyteme: 98/Me/2000/XP (nur unter XP getestet) ![]() ![]() Was kann es? Der USB Device Lister erstellt eine Liste der angeschlossenen USB-Geräte. Desweiteren zeigt er alle möglichen Infos wie Hersteller und Gerätenamen (sowohl aus dem Gerät ausgelesene Strings als auch mittels einer Liste aus der Vendor-/Device-ID), Seriennummer und Interface Descriptor an. Wozu? Wenn man mal einen Treiber für ein Gerät nicht hat und nicht genau weis, wer das Gerät tatsächlich herstellt, kann man dies so gut heraus finden. Ausserdem ist dies durch den beigelegten Quelltext eine Veranschaulichung, wie man USB-Geräte unter Delphi ansteuert. |
Re: USB Device Lister
Hallo
Gibt es eine Möglichkeit, einen Reset eines USB Gerätes via Software zu machen? Also so, als wenn man das Gerät aus und wieder ein steckt! Gruß Baba |
Re: USB Device Lister
Kann man die Sourcen als Zip kriegen? Ich hab kein RAR.
Ein Reset eines USB-Geraets ist nicht ohne weiteres moeglich. Wer das braucht hat ein fehlerhaftes Geraet entwickelt. |
Re: USB Device Lister
Ich hab mir ein UnRAR besorgt.
Das Programm hat noch ein paar heftige Macken. Man kann fast beliebig viele USB Busse haben. Also mit einer while Schleife arbeiten. Die Endebedingung ist das CreateFile INVALID_HANDLE_VALUE liefert. > 0 funktioniert nicht. Das bringt mich dazu endlich mal die entsprechenden USB Header zu benutzen. Ich habe schon eine Konversion davon, aber meine USB-Komponente schlaeft friedlich. Ich werde sie aufwecken. scp, kontakte mich mal direkt. |
Re: USB Device Lister
Die Treeviewansicht ist Käse. ;)
OK, meine optische Maus hat er gefunden. Aber den USB Empfänger / Sender für den Router wird nicht erkannt. Bzw nur der Hersteller. "Device Name", "Vendor Name (by Device)" und "Device Name (By Device)" fehlen. Und nach dem Klicken auf "Scan" kommt erstmal diese Meldung: Zitat:
|
Re: USB Device Lister
Luckie, die Fehlermeldung kommt genau von dem beschriebenen Problem mit der for Schleife.
Es hilft auch nicht das die benutzten Beispielprogramme von John Hyde weder wirklich gut noch neu sind. John Hyde ist inzwischen im Ruhestand. |
Re: USB Device Lister
Ja, das hätte ich wohl dabei schreiben müssen, das es eine Alpha-Version ist (alles unter Version 1.0 ist bei mir Aplha bzw. Beta), sorry Leute. Ich habe mich zunächst nur bemüht, das VB-Beispiel in Delphi zu übersetzen und ein paar Kleinigkeiten hinzuzufügen.
@Luckie Benutze halt zur Zeit gerne Treeviews :-) "Device Name" und "Vendor Name" wird andhand der Device ID und der Vendor ID aus einer Liste geholt, die natürlich längst nicht alle Geräte enthält. "Vendor Name (by Device)" und "Device Name (By Device)" weredn direkt aus dem USB-Gerät ausgelesen, da dies aber in der Spec optinal ist, Zeigt er dies nicht bei jedem Gerät an. Die Exception-Behandlung werd ich auch noch umbauen bzw. statt Exceptions eine sanftere Fehlerbehandlung einbauen. |
Re: USB Device Lister
So, habe jetzt mal den Code ein bißchen zurechtgerückt und CTL_CODEs bei den DeviceIoControl-Aufrufen eingefügt.
@Robert Hab die for-Schleife gemäß deiner Empfehlung geändert. |
Re: USB Device Lister
So habe jetzt mal ne neue Version hochgeladen. An dem Programm selbst hat sich nicht viel geändert. Jedoch nutze ich jetzt die JwaWinIoCtl von den JEDIs.
Ausserdem habe ich die USB IOCTL Header aus dem MinGW Win32Api Projekt in Delphi übersetzt. PS: Mit USB Header meine ich nich die für HID, darum kümmert sich ja Robert M. schon seit geraumer Zeit :-) |
Re: USB Device Lister
Die USB files habe ich auch konvertiert :-)
deshalb solltest du dich ja direkt bei mir melden. robert_marquardt gmx de |
Re: USB Device Lister
Achso :-) Hatte dir ne PN geschickt. OK, dann schick ich dir noch ne Mail.
|
Re: USB Device Lister
Hallo scp,
was soll ich sagen, es läuft nicht. Beim zweiten Durchlauf von "CollectDescriptors" kommt eine Schutzverletzung. Es betrifft diesen Abschnitt:
Delphi-Quellcode:
Wieviel durchläufe gibt es eigendlich in der Schleife? Ich habe mal einen Zähler eingebaut und der will garnicht aufhören...
// Check for Strings
StringIndex := 0; repeat TotalLength := GetStringDescriptor(DevHandle, ConnectionIndex, StringIndex); If not (PCHostRequest.Data[0] = TotalLength) then TotalLength := 0; Inc(StringIndex); For i := 1 To TotalLength do DescriptorData[Nexti + i] := PCHostRequest.Data[i - 1]; Nexti := Nexti + TotalLength; //ShowMessage(IntToStr(StringIndex) + ', ' + //IntTostr(TotalLength) + #10 + BinToStr(@DescriptorData[Nexti + 1 - TotalLength], TotalLength)); until not (TotalLength <> 0); [edit=MrSpock]Doppelter intrag gelöscht. Mfg, MrSpock[/edit] |
Re: USB Device Lister
Ups... da stimmt wohl was mit der Erkennung nicht. Es wird solange versucht, bis TotalLength 0 zurückgibt, aber offensichtlich gibt er wohl bei einigen Geräten immer > 0 aus, egal was fürn Stringindex. Muss das mal bei Gelegenheit überarbeiten.
|
Re: USB Device Lister
Ich hatte erst nicht verstanden worum es geht.
Bei den Strings musst du immer erwarten das ers Aerger gibt. 1. Das USB device liefert manche Strings nicht. Das ist ein beliebter Firmware-Fehler. Es fallen durch 8 teilbare Stringlaengen aus. 2. Windows ergaenzt selbstaendig ein #0 (WideChar). Der Versuch mit einem Puffer der Laenge Null herauszufinden ob es den String gibt oder nicht geht immer schief. |
Re: USB Device Lister
Gibt es einen einfachen Weg die VendorID meines USB Sticks in Delphi anzeigen zu lassen???
Gruß Hendrik |
Re: USB Device Lister
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz