Welche COM-Ports sind verfügbar?
-
Hi Leute,
ich habe eine kurze Frage:
Es muss doch eine Möglichkeit geben, die verfügbaren COM-Ports rauszukriegen?
Oder muss ich mit CreateFile jeden COM-Port (z. B. COM1 bis COM6) testen und auf Success abfragen?
Grüße
-
Du musst ja zuerst mal rausfinden, welche COM-Ports es gibt... =>
http://www.naughter.com/enumser.htmlDann kommst Du wohl nicht darum den Port zu öffnen...
-
Vielen Dank für die schnelle Antwort!
Also muss ich wirklich nacheinander testen (CreateFile auf Success) für jeden Port der infrage käme.
(So verstehe ich zumindest die Source-Codes aus Deimem Link)Wie macht ihr/Du das üblicherweise?
Begrenzt Du die Anzahl möglicher COM-Ports auf z. B. 1 bis 10?
-
Ich habe mir den Link jetzt nicht angeschaut, aber: Das per CreateFile zu lösen, ist absolut behämmert. Wenn da Bluetooth-Geräte mit ins Spiel kommen, die beim Öffnen sofort versuchen, eine Verbindung herzustellen, kannst Du mindestens bis Halloween 2007 warten.
Sehr viel schneller geht das per QueryDosDevice:
BOOL PortExists(UINT_PTR PortNumber) { TCHAR Name[32]; wsprintf(Name, TEXT("COM%u"), PortNumber); QueryDosDevice(Name, NULL, 0); return(GetLastError() == ERROR_INSUFFICIENT_BUFFER); }Ich denke das es reicht, die Funktion von 1..255 aufzurufen.
-
Gästchen schrieb:
Ich habe mir den Link jetzt nicht angeschaut, aber: Das per CreateFile zu lösen, ist absolut behämmert.
???? Es ging nicht darum zu testen, ob es einen Port gibt sondern ob er "verfügbar" ist... Unter verfügbar verstehe ich, ob ich ihn öffnen kann...
Aber vielleicht hat der OP sich nur ungeschickt ausgedrückt und meine: Alle die es gibt (und vielleicht schon belegt sind).
-
Sorry für die Verwirrung.
Mein Problem:
Ich möchte z. B. in einer ComboBox eine Liste der COM-Ports zur Auswahl stellen, die zur seriellen Kommunikation verfügbar sind, also
1. im PC vorhanden sind und
2. auch frei sind, d. h. die kann ich benutzen.Dann möchte ich über den gewählten COM-Port die eingehenden Daten in eine Datei in hex-Schreibweise speichern, z.B:
56 E4 FF 35 A6 99 etcIm nächsten Schritt möchte ich die gespeicherten Daten gemäß eines Protokolls auswerten (in der Endfassung meines Programms soll das in Echtzeit gehen, also schon während der Aufzeichnung)...
Aber soweit bin ich ja noch nicht.
Grüße und vielen Dank für eure Postings
-
Zum "enumerieren" siehe mein erstes Post.
Für den Zugriff rate ich zu
http://www.codeproject.com/system/serial.asp