Serial via Usb unter Windows

Gast #1606769
Lesenswert?
• ▲
▼
Hi all,

wie kann man erkennen, ob ein "klassischer" Com-Port oder ein
Serial_Via_Usb-Adapter am Pc angeschlossen ist bzw. verwendet wird?

Gibt es eine Möglichkeit, dieses heraus zu bekommen (evtl. via 
API-Funktionen)?

Betriebssysteme: Windows XP, Windows Vista, Windows 7
Programiersprachen: Vb6, C#, Vb.net


Viele Dank
Klaus
Gast #1607560
Lesenswert?
• ▲
▼
Hallo,

also ich habe gerade zwei dieser Teile bei mir angeschlossen und diese 
dann auch noch über eine Brücke miteinander verbunden, damit ich mit mir 
selbst kommunizieren kann. Beide werden im Geräte-Manager angezeigt. 
Einfach Windows Pause drücken und dann unter Hardware den Geräte Manager 
anklicken. Dort kannst du dann "Anschlüsse (COM und LPT)" erweitern. Bei 
mir werden die Anschlüsse dann als "USB Serial Port (COMx)" angezeigt.
Ich hoffe das war was du gesucht hast.

Viele Grüße
malzu
Gast #1607692
Lesenswert?
• ▲
▼
Hi malzu,

sorry das ich mich ungenau ausgedrückt habe.

Leider ist Deine Methode nicht das was ich brauche.

Ich habe ein selbst geschriebenes Programm. Dieses Programm soll nun
erkennen, ob der angeschlossene Com-Port ein "klassischer" oder ein
"serial via usb" ist.

Beispiel: Vb6
  Ich verwende das MScomm32.ocx. Dieses Ocx kann zwar Com 1 bis 16 
handeln,
  aber es erkennt (leider) nicht das oben geforderte.

Beispiel: C# bzw. vb.net
  Ich verwende System.IO.Ports.SerialPort . Auch hier erkenne ich nicht, 
ob
  ich einen "klassischen"- oder "serial via usb"-Port verwende.

Ich habe bis heute nicht herausbekommen, wie ich an diese Information
heran komme.

Bye
Klaus
Gast #1607714
Lesenswert?
• ▲
▼
> Eigentlich ist das auch der Sinn der Sache: aus Sicht der Anwendung und
> der angeschlossenen Geräte soll man möglichst keinen Unterschied zu
> einer "echten" RS232 merken...

Eigentlich ja, aber da das USB das Timing etwas "verbastelt" (wegen dem 
USB Polling), muss man u.U. Timeouts oder das Protokoll abhängig vom 
Port (USB oder interner) anpassen.

Oder man macht sich als Programmierer das Leben einfach und öffnet nur 
ein
Fenster "Dies ist leider kein kompatibler COM Port" -> "Tschüss" ;-)
Gast #1607756
Lesenswert?
• ▲
▼
Hi Ihr,

klar Uwe, du hast normalerweise Recht.
Der Anwendung sollte (muss) es egal sein, welche "ComPort-Art" sie 
verwendet.
Leider macht das USB immer wieder Timming Probleme.


Justus, diese Methode verwende ich zum Erkennen der angeschlossenne 
Com-Ports bei dem VB6-Programm.
Leider kann ich den bei mir eingetragenen Namen,
z.B. \Device\Serial0 oder \Device\F5U103UD0 oder \Device\Nmserial1,
nicht eindeutig auf auf einen klassischen oder serial-via-usb Port
schliessen.

Bye
Klaus
#1607992
Lesenswert?
• ▲
▼
Andere Möglichkeit wäre für die bekannten Kandidaten FTDI, Silabs und 
Prolific die entsprechenden Registry-Zweige zu (durch)suchen und zu 
schauen, ob die virtuellen COM da drin sind. Bei FTDI wäre das der 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS Zweig, in dem 
alle installierten FTDI Devices aufgelistet werden. Da stehen in den 
Untereinträgen auch die zugeordneten COM drin.
#1608120
Lesenswert?
• ▲
▼
Hab den Quellcode hier nicht vorliegen, daher nur eine grobe 
Beschreibung (Rest siehe Links)

// GUID erzeugen
SetupDiClassGuidsFromName("Ports", ...)
// die entsprechenden Informationen besorgen
SetupDiGetClassDevs(...)
// Aufzählen
SetupDiEnumDeviceInterfaces(...)
// Untersuchen
SetupDiGetDeviceInterfaceDetail(...)

Bei der letzten Funktion kommt dann auch ein DevicePath raus der bei 
USB->Seriell-Wandlern mit \\?\usb beginnen sollte.

http://www.naughter.com/enumser.html
http://stackoverflow.com/questions/571229/why-do-some-devices-not-enumerate-with-setupdigetdeviceinterfacedetail

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.