Forum: PC-Programmierung Probleme beim öffnen von COMx (x > 9)


von domi (Gast)


Lesenswert?

Hallo,

mein Programm sendet und empfängt Daten über eine serielle 
Schnittstelle, die der Benutzer auswählen kann. Verfügbare 
Schnittstellen werden in einer Liste angezeigt und können angewählt 
werden.
Jetzt ist mir aufgefallen, dass bei COM-Ports mit der Nummer 10 oder 
höher nicht geöffnet werden können.

Öffnen tue ich sie hiermit:

hCom = CreateFile (port.GetBuffer(50), GENERIC_READ | GENERIC_WRITE, 0, 
NULL,OPEN_EXISTING, 0, NULL);

Port ist ein CString und z.B. "COM27" und ich verwende MS Visual Studio 
.NET 2003

CreateFile gibt aber kein gültiges handle (sondern 0xffffffff) zurück. 
Bei COM1 bis COM9 funktioniert das ganze problemlos.

Kann mir jemand helfen?

Gruß,
Domi



P.S.: Ja, ich weiß, dass ich die Schnittstellen im Gerätemanager 
umbenennen kann. Das hilft mir bei mehr als 10 seriellen Schnittstellen 
aber nicht weiter.

von domi (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Für die, die den FTDI-Artikel nicht lesen wollen:

"\\.\COM27" anstelle von "COM27" verwenden.

Das betrifft alle Arten von seriellen Schnittstellen, nicht nur die 
von FTDI.

Beschrieben wird diese Syntax übrigens in der Dokumentation der 
Win32-API-Funktion CreateFile:

http://msdn2.microsoft.com/en-us/library/aa363858.aspx
1
To specify a COM port number greater than 9, use the following syntax: 
2
"\\\\.\\COM10". 
3
This syntax works for all port numbers and hardware that allows 
4
COM port numbers to be specified.

Die doppelten Backslashes sind C-Notation!

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
Noch kein Account? Hier anmelden.