Auf USB.org sind verschiedene Dokumente erhältlich. Beinhaltet die "USB 3.2 Specification" auch die "USB 2.0 Specification". Die 2.0 ist immerhin von 2000. Daher frage ich mich, welche ich zum einlesen verwenden soll?
Sofern du nicht explizit USB 3.0 brauchst, lies die USB 2.0 Spezifikation. Die ist immer noch gültig, und die meisten USB-Peripherien in Mikrocontrollern unterstützten USB 2.0.
Jens schrieb: > Daher frage ich mich, welche ich zum einlesen verwenden soll? Sammle, was du kriegen kannst. Es gibt da nicht nur ein paper, sondern einen ganzen Sack davon - und jedes baut im Grunde auf einem anderen auf. Aber normalerweise wollen die für's Papier richtig Geld haben. W.S.
...und wenn du etwas lesen willst, wo du noch eine Chance hast, es nachzuvollziehen, dann fang mit USB1.1 an. Ja, das ist uralt. Aber um die Grundlagen nachzuvollziehen, reicht es - und du hast viel, viel, viel weniger textuelle kreuz-und-quer-Verweise im Dokument (nach dem Motto "this behaviour depends on the status of ABC and DEF, oft ohne Links) Zumindest war das 2002 so, als ich mal damit gearbeitet habe... MfG, Arno
Niklas G. schrieb: > Und meinen supertollen Artikel Ähemm.. "Anwendungen können anhand VID/PID direkt das korrekte Gerät finden, es muss nicht wie bei der seriellen Schnittstelle der richtige Port ausgewählt werden" Das ist eine kühne Behauptung, die ich so nicht bestätigen kann. Bei USB-Geräten, die ein VCP darstellen, hat man in der Regel keine andere Chance, als der Reihe nach alle Ports von COM1..COMxyz durchzutesten, ob dieser Stream sich öffnen läßt oder nicht. Und wenn er sich öffnen läßt, dann ist noch immer nicht gesagt, daß es das richtige Gerät ist. Also schreib mal, wie man es macht, daß man den richtigen COM-Port aus vorgegebener vid&pid herausfindet. W.S.
W.S. schrieb: > Das ist eine kühne Behauptung, die ich so nicht bestätigen kann. Bei > USB-Geräten, die ein VCP darstellen, hat man in der Regel keine andere > Chance, als der Reihe nach alle Ports von COM1..COMxyz durchzutesten, ob > dieser Stream sich öffnen läßt oder nicht. Ganz genau. Wenn man daher eben keinen VCP implementiert sondern ein "normales" USB-Gerät, auf welches man per Kernel-Treiber, libusb und/oder WinUSB zugreift, kann man darüber via VID&PID das Gerät finden. Ein Beispiel: https://github.com/Erlkoenig90/usbclient/blob/master/src/main.cc#L101 Wenn man einen VCP implementiert, hat man aus Anwendungssicht einen Serial-Port mit genau den beschriebenen Nachteilen des Serial-Ports. Mit "Vorteile USB" ist natürlich nicht gemeint, dass man wieder auf Serial umadapterisiert (VCP)! Ein VCP vereint gewissermaßen die Nachteile von USB und Serial-Port, diesen Fall sollte man also nicht als Grundlage für die Suche nach USB-Vorteilen nehmen.
W.S. schrieb: > Also schreib mal, wie man es macht, daß man den richtigen COM-Port aus > vorgegebener vid&pid herausfindet. Ich würd versuchen die Liste aller angeschlossenen USB-Geräte durchzugehen und schauen ob das gesuchte Gerät (VID/PID/Seriennummer/Geräteklasse) dabei ist und auf welchen COM-Port das gerade gemappt ist. Oder vielleicht kann man auch alle COM-Ports durchgehen und schauen welches Gerät das ist. Geht mit Sicherheit irgendwie.
W.S. schrieb: > Das ist eine kühne Behauptung, die ich so nicht bestätigen kann. Bei > USB-Geräten, die ein VCP darstellen, hat man in der Regel keine andere > Chance, als der Reihe nach alle Ports von COM1..COMxyz durchzutesten, ob > dieser Stream sich öffnen läßt oder nicht. Und wenn er sich öffnen läßt, > dann ist noch immer nicht gesagt, daß es das richtige Gerät ist. Richtig, das ist übler Hack, der leider immer noch von vielen als "Lösung" angesehen wird. Gerade bei USB-Serialports geht das auch sauber umzusetzen. W.S. schrieb: > Also schreib mal, wie man es macht, daß man den richtigen COM-Port aus > vorgegebener vid&pid herausfindet. VID/PID allein reicht nicht, dafür hat man bei der USB-Org ja glücklicherweise vorgesorgt, und die Seriennummer in den Standard geschrieben. Wenn der Hersteller bzw. der Implementierer die eineindeutig programmiert hat, lässt sich jedes Gerät zuordnen. Dann muss man "nur" noch in der Registry schauen, welches USB Gerät momentan am Rechner steckt und an einer anderen Stelle schauen, welche VID/PID/SerialNumber Kombi da drauf gemapt ist. Und das geht dann ganz ohne wildes Öffnen oder gar schon irgendwas auf ein unbekanntes Gerät schreiben.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.