Serielle Schnittstelle Gerät nach Ort und nicht nach COM PORT einbinden



  • Hallo,

    ich habe ein Gerät, welches in meinem Gerätemanager nicht unter den COM-Ports aufgelistet ist, allerdings auch über USB angeschlossen ist. Das Liegt an dem Treiber, ich schreibe das nur, bevor wieder irgendwelche Kommentare kommen...

    *Hier ist meine Frage:
    Ich möchte eine Serielle Schnittstelle nicht über HANDLE OpenSchnittstelle(const char
    ComName, DWORD BaudRate) etc. ansprechen, sondern über HANDLE OpenSchnittstelle(...Port_#00000001.Hub_#00000002).
    Kann mir jemand den Quellcode dazu nennen? Das wäre wirklich sehr nett, danke.
    **

    Meine Bitte:
    Bitte anwortet nur, wenn ihr davon Ahnung habt und die hier gestellte Frage auch beantworten könnt.
    Bitte schreibt keine beleidigenden Kommentare, nur weil ich eine Frage stelle, die in euren Augen evtl. dumm ist.
    Ich richte mich hiermit nur an die liebevollen hilfsbereiten Menschen. Alle anderen sollen diesen Eintrag ignorieren!
    Danke.



  • Wenn du die Frage im passenden Forum gestellt hättest, wären die Antworten vielleicht hilfreicher.



  • Ein USB-Port und ein COM-Port sind sehr unterschiedliche Dinge. Du kannst einen USB-Port nicht wie eine serielle Schnittstelle programmieren.

    Oder hast du da einen USB-To-Serial-Adapter? Der erzeugt eine COM-Schnittstelle, die du öffnen kannst. Dass da ein USB-Adapter dahintersteckt, kannst du vermutlich rausfinden, wenn du dich durch alle Geräte hangelst und irgendwie deinen Adapter identifizierst. Du hast kein OS genannt, oder auf welcher Hardware das laufen soll. Es hat auch mit C++ gar nichts zu tun.

    Was für ein Problem willst du denn lösen?

    ACDC schrieb:

    Bitte anwortet nur, wenn ihr davon Ahnung habt und die hier gestellte Frage auch beantworten könnt.
    Bitte schreibt keine beleidigenden Kommentare, nur weil ich eine Frage stelle, die in euren Augen evtl. dumm ist.
    Ich richte mich hiermit nur an die liebevollen hilfsbereiten Menschen. Alle anderen sollen diesen Eintrag ignorieren!
    Danke.[/i]

    War dir das liebevoll genug? Mit solchen asozialen, arroganten Disclaimern macht man sich nicht beliebt, vor allem wenn man selbst nicht dazu in der Lage ist, ordentliche Fragen zu stellen.



  • Das einfachste ist wenn du das Gerät über die VID und PID identifizieren kannst. Also wenn's nur ein solches Gerät im System gibt.

    Dann kannst du nen SELECT auf Win32_SerialPort machen (WMI), aus dem PNPDeviceID Feld die VID und PID rausparsen und vergleichen, und dann einfach CreateFile mit Win32_SerialPort.DeviceID aufrufen (bzw. genaugenommen "\\\\.\\" + Win32_SerialPort.DeviceID ).

    Man kann auch irgendwie rausbekommen welches Gerät an welchem Hub hängt, den dafür nötigen Code hab' ich allerdings nicht zur Hand. Und vor allem sind die Device-Instance Namen hardwareabhängig. D.h. von Mainboard zu Mainboard bzw. Hub zu Hub verschieden. Im Endeffekt ist das deutlich fummeliger, als wenn man einfach sagen kann "es gibt per Definition nur ein X Gerät pro System, und das verwende ich".

    Wenn das Gerät allerdings gar nicht unter COM-Ports gelistet wird, dann sehe ich da sowieso eher schwarz. Bist du sicher dass dieses überhaupt als COM-Schnittstelle anzusprechen ist?

    ps:

    Liebevoll³ schrieb:

    vor allem wenn man selbst nicht dazu in der Lage ist, ordentliche Fragen zu stellen.

    +1


Log in to reply