RS232-Ports öffnen!!
-
Hey,
ich habe eine Methode entwickelt die überprüfen soll, welche Ports ann einem PC verfügbar sind.
Dafür versuche ich einfach alle Ports von 1 bis 255 zu öffnen. Lässt sich der Port öffnen ist er verfügbar. Soweit kein Problem. Das öffnen der Ports mache ich mit der Methode CreateFile().
Bei den Ports 1-9 gibt es keine Probleme die Ports zu öffnen.
Wenn ich nun jedoch versuche einen Port von 10-255 zu öffnen, lässt sich der Port nicht öffnen.
Hat jemand Rat für mich?
-
-
Na so habe ich es auch gemacht, doch sobald ich einen Port ab COM10 öffnen möchte, bekomme ich ein ungültiges Handle. Für COM1-COM9 funktioniert es. Gibt es vielleicht eine Einschränkung von Windows? Hier mal mein Code:
char_t cBuffer[17] = ""; CString szString = ""; _itoa(nComPort, (char_t*)cBuffer, 10); szString = cBuffer; CString szComName = "COM" + szString; CString ComName = _T(szComName); /* trying to open the port */ hCom = ::CreateFile(ComName, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-
Du kannst nicht lesen!

strPort.Format("\\\\.\\COM%d",, nPortNumber);
-
hmm, werds mal ausprobieren.
-
Es klappt, warum ich allerdings \.\ vor den Portnamen schreiben muss, weiß ich nicht.
-
Was hälst Du von der Begründung: Es ist so dokumentiert!
-
Siehe MS-Knowledgebase: "HOWTO: Specify Serial Ports Larger than COM9" http://support.microsoft.com/?scid=kb;en-us;115831