Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   USB Device Lister (https://www.delphipraxis.net/14979-usb-device-lister.html)

scp 19. Jan 2004 23:59


USB Device Lister
 
Name: USB Device Lister
Version: 0.82 (20.01.2004)
Betriebssyteme: 98/Me/2000/XP (nur unter XP getestet)
Download hier oder Direktlink

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.

Computerbabalulu 20. Jan 2004 03:02

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

Robert Marquardt 20. Jan 2004 05:23

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.

Robert Marquardt 20. Jan 2004 11:04

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.

Luckie 20. Jan 2004 11:16

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:

---------------------------
Usbdevs
---------------------------
Could not get LENGTH of Host Controller Name.
---------------------------
OK
---------------------------

Robert Marquardt 20. Jan 2004 15:14

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.

scp 20. Jan 2004 16:51

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.

scp 20. Jan 2004 18:55

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.

scp 23. Jan 2004 00:30

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 :-)

Robert Marquardt 23. Jan 2004 06:35

Re: USB Device Lister
 
Die USB files habe ich auch konvertiert :-)
deshalb solltest du dich ja direkt bei mir melden. robert_marquardt gmx de

scp 23. Jan 2004 07:55

Re: USB Device Lister
 
Achso :-) Hatte dir ne PN geschickt. OK, dann schick ich dir noch ne Mail.

Alter Mann 2. Feb 2004 16:45

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:
 // 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);
Wieviel durchläufe gibt es eigendlich in der Schleife? Ich habe mal einen Zähler eingebaut und der will garnicht aufhören...

[edit=MrSpock]Doppelter intrag gelöscht. Mfg, MrSpock[/edit]

scp 3. Feb 2004 01:35

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.

Robert Marquardt 3. Feb 2004 05:50

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.

GoTo0815 26. Mai 2004 16:19

Re: USB Device Lister
 
Gibt es einen einfachen Weg die VendorID meines USB Sticks in Delphi anzeigen zu lassen???

Gruß

Hendrik

Matze 27. Mai 2004 07:54

Re: USB Device Lister
 
Zitat:

Zitat von HendrikSturm
Gibt es einen einfachen Weg die VendorID meines USB Sticks in Delphi anzeigen zu lassen???

Es ist wohl am Besten, wenn du einen neuen Thread aufmachst, das passt hier nicht hinein. ;)


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