Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Basis-Informationen zu USB (https://www.delphipraxis.net/98447-basis-informationen-zu-usb.html)

KPBecker 27. Aug 2007 15:37


Basis-Informationen zu USB
 
Liebe Delphi-Praktiker,

kennt jemand von Euch eine gute Zusammenfassung zum Thema "USB, Delphi und ich" (Link) ?
Ich möchte Grundlageninformationen wie z.B.
- was sind gängige Protokolle
- wie erkenne ich, an welchem USB-Port ein Gerät angeschlossen ist
- wie kann ich das Gerät identifizieren
- wie kann ich das Gerät gezielt ansprechen
- usw.

Vielen Dank,
KPBecker

Robert Marquardt 27. Aug 2007 16:45

Re: Basis-Informationen zu USB
 
Eigentlich kann man keine der Fragen beantworten.
1. Es gibt keine Protokolle die man auf Anwendungsebene sprechen kann. Du sprichst ja auch nicht TCP/IP mit deiner Netzwerkkarte.
2. Es ist nicht vorgesehen das man wissen muss an welchem Port das Geraet haengt, um mit ihm sprechen zu koennen.
3. Auch dies ist ist nicht vorgesehen. Man muss nicht wissen das es ein USB-Geraet ist um mit ihm sprechen zu koennen.
4. Wieder nix. Oft wird das Geraet nur von einem Treiber angesprochen und unterliegt nicht direkter Kontrolle.

Ein USB-Geraet wird vollstaendig von seinem Treiber repraesentiert. Zum direkten Ansprechen kann man die Geraete einer Unterklasse oder eines bestimmten Herstellers direkt enumerieren, aber je nach Geraeteklasse hat der Treiber kein API das sich direkt ansprechen laesst. Ein USB-Stick z. B. hat den Mass Storage Treiber zugewiesen, der nur sinnvoll vom Filesystem-Treiber benutzt werden kann.

christian_u 27. Aug 2007 17:31

Re: Basis-Informationen zu USB
 
Doch, man kann schon Fragen beantworten und es gibt auch USB geräte die man auf Anwendungsebene ansprechen kann das sind alle geräte der Geräteklasse HID. Dort leitet der Treiber den jedes aktuelle betriebsystem mitbringt die daten direkt durch und die Anwendung ist dafür zuständig sie zu verarbeiten.
USB Geräte kannst du unter Windows über Registry Keys enumerieren, in Linux über das procfs. Um ein Gerät gezielt ansprechen zu können musst du etwas mehr über das gerät wissen das ist von Gerät zu Gerät verschieden.

KPBecker 28. Aug 2007 09:32

Re: Basis-Informationen zu USB
 
Liebe Delphi-Praktiker,

ganz konkret:
Ich schließe eine Webcam an einem USB-Port an. Wie erfährt mein Programm davon. Unter welchem Namen spreche ich das Gerät an.

Aber:
Ich glaube, ein paar Grundlagen zu USB und seiner Umgebung täte mir gut. Daher die Frage nach einer Einführung in dieses Thema im Internet.

Vielen Dank,
K.-P. Becker

hathor 28. Aug 2007 09:43

Re: Basis-Informationen zu USB
 
http://poweredusb.org/pdf/usb20.pdf

KPBecker 28. Aug 2007 09:53

Re: Basis-Informationen zu USB
 
Hallo, Hathor !

Vielen Dank für den Hinweis, aber ziemlich erschlagend für eine primäre Information.
Ich werde versuchen, mir die zunächst interessierenden Infos herauszuholen.

Gibt es auch etwas Kürzeres ?

Beste Grüße
K.-P. Becker

WS1976 28. Aug 2007 09:59

Re: Basis-Informationen zu USB
 
Hallo Christian,

ich will dir nicht zu nahe treten, aber ich zweifle doch sehr an deiner Aussage.
Natürlich findet man USB Geräte in der Registry aber nur als "Harddisk" oder als "Virtuelle Comports" oder als ein anderes "Gerät".(Was sollte eine USB Device auch anderes sein?)
Was soll denn ein Treiber, wenn er die Daten nur weiterleitet. Er (der Treiber) adaptiert die USB Device an einen vorhanden Gerätekontext.
(Sorry aber anders kann ich mich nicht ausdrücken)

Zitat:

Doch, man kann schon Fragen beantworten und es gibt auch USB geräte die man auf Anwendungsebene ansprechen kann das sind alle geräte der Geräteklasse HID. Dort leitet der Treiber den jedes aktuelle betriebsystem mitbringt die daten direkt durch und die Anwendung ist dafür zuständig sie zu verarbeiten.
USB Geräte kannst du unter Windows über Registry Keys enumerieren, in Linux über das procfs. Um ein Gerät gezielt ansprechen zu können musst du etwas mehr über das gerät wissen das ist von Gerät zu Gerät verschieden.
Solltest du Gegenbeispiele finden (haben), dann veröffentliche sie bitte hier. Mach das aber bitte mit den zugehörigen Registryeinträgen.

Grüsse
Rainer

Robert Marquardt 28. Aug 2007 12:05

Re: Basis-Informationen zu USB
 
Christian hat schon recht. USB-Geraete zerfallen in mehrere Klassen. Ein Geraet identifiziert sich gegenueber dem Rechner genau in welche Klasse es faellt. Von da ab uebernimmt der Klassentreiber. Bei Mass Storage etwa ist das eben ein Treiber der einem anderen Treiber zuarbeitet. Dabei geht dann die Tatsache das es sich um ein USB-Geraet handelt voellig verloren. Auch das API um Zugriff abstrahiert voellig von USB. Es ist das gewoehnliche API zum Zugriff auf ein Filesystem.
HID ist eine der Standardklassen fuer USB. Ein HID-Geraet erlaubt eine besonders praezise Beschreibung des Geraetes und es existiert ein HID API das es Applikationen erlaubt direkt auf das Geraet zuzugreifen. Meine HID-Komponente (Teil der JVCL) erschliesst dieses API.

WS1976 29. Aug 2007 06:12

Re: Basis-Informationen zu USB
 
Hallo Robert,
eigentlich wollte ich das so ähnlich rüberbringen!

Was aber ganz klar sein muss:
Du befindest dich bei jeder USB Device immer hinter einem abstrahierenden Treiber.
Du wirst also niemals direkten und unmittelbaren Zugriff auf das USB Protokoll haben.
Christian stellt das so dar (zumindest kann das so verstanden werden) als würde das Protokoll und dessen Inhalt einfach durchgereicht.

Grüsse
Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz