Forum: PC-Programmierung An welchem USB-Port hängt mein Gerät?


von apfelbaum (Gast)


Lesenswert?

Hi, ich habe ein USB-Gerät und möchte dieses ansteuern. Dazu muss ich 
wissen, an welchem Port das Gerät angeschlossen ist. Unter Linux kann 
ich einfach lsusb eintippen und dann sehen, an welchem USB-Port das 
Gerät hängt.

Im Gerätemanager von Windows sehe ich zwar, dass das Gerät da ist, aber 
ich finde keinen Hinweis darauf, an welchem der USB-Ports, ob z.B. 
USB00, USB01 ...

Wie kann ich das rauskriegen?

von Dennis S. (eltio)


Lesenswert?

Vielleicht hilft dir USBDevView von Nirsoft [1] weiter. Dort wird 
zumindest die Instance ID angezeigt.

Gruß
Dennis

[1] http://www.nirsoft.net/utils/usb_devices_view.html

von Programmierer (Gast)


Lesenswert?

Du musst beim Zugriff halt danach suchen, typischerweise anhand VID/PID. 
libusb zB hat ein entsprechendes API.

von Rufus Τ. F. (rufus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Mit Bordmitteln geht das wohl gar nicht, da brauchts ein 
USB-Analyse-Tool.

http://www.heise.de/download/usb-device-tree-viewer-1186404.html

Das Ergebnis sieht dann so aus wie im Screenshot.

von Christian R. (supachris)


Lesenswert?

apfelbaum schrieb:
> Dazu muss ich
> wissen, an welchem Port das Gerät angeschlossen ist.

Das muss man selbst herausfinden, denn das ändert sich ja immer mal. Du 
musst entweder über die Such-Funktionen deines USB-APIs gehen (bei 
LibUSB) oder über die Setup Api von Windows, wenn du z.B. WinUSB 
benutzt, denn da brauchst du dann den DevicePath zum Öffnen.
Welche Software/Treiber nutzt du denn? Diese USB001 Geschichte gibts so 
unter Win eigentlich nicht, da zählt der DevicePath und der ist 
eineindeutig.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Programmierer schrieb:
> Du musst beim Zugriff halt danach suchen, typischerweise anhand VID/PID.

Yep, und wenn es deren mehrere sein können, noch anhand der 
Seriennummer.

Was anderes machen ja lsusb und Konsorten auch nicht.

von potter (Gast)


Lesenswert?

Was für ein Gerät?

Deiner Anwendung ist es egal, an welchem Port das Gerät hängt. Eine 
Verbindung baust Du mit VID und PID auf (oder über die COM Nummer).

von Mike (Gast)


Lesenswert?

potter schrieb:
> Eine Verbindung baust Du mit VID und PID auf

Wenn zwei gleiche Geräte dran hängen, reicht das nicht.

von usb (Gast)


Lesenswert?

Mike schrieb:
> Wenn zwei gleiche Geräte dran hängen, reicht das nicht.

Natürlich reicht es auch dann.
Dann gibt es ja zwei Instanzen deines Treibers.

von Rolf M. (rmagnus)


Lesenswert?

usb schrieb:
> Natürlich reicht es auch dann.
> Dann gibt es ja zwei Instanzen deines Treibers.

Und woher weiß man, welches von den beiden Geräten nun das ist, das man 
ansprechen möchte?

von René K. (king)


Lesenswert?

Rolf Magnus schrieb:
> Und woher weiß man, welches von den beiden Geräten nun das ist, das man
> ansprechen möchte?

Du nimmst Dir das Gerät mit der passenden Seriennummer.

von Rolf M. (rmagnus)


Lesenswert?

René König schrieb:
> Rolf Magnus schrieb:
>> Und woher weiß man, welches von den beiden Geräten nun das ist, das man
>> ansprechen möchte?
>
> Du nimmst Dir das Gerät mit der passenden Seriennummer.

Ähm, ja genau. Danke für die Bestätigung. Wenn du genau hinschaust, 
siehst, du, daß das "es", das angeblich reichen soll, die Seriennummer 
nicht beinhaltet. Daher meine Frage, wie das ohne Seriennummer gehen 
soll.

: Bearbeitet durch User
von Christian R. (supachris)


Lesenswert?

Ohne Seriennummer ist es für den Nutzer nicht zuzuordnen. Für Windows 
schon, der DevicePath ist dann trotzdem eineindeutig, denn statt des 
SerialNumber Strings werden dann zufällig erzeugte Zahlen/Buchstaben 
vergeben. Allerdings ändern die sich halt immer mal.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.