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.
Problem gelöst: http://www.ftdichip.com/Support/Knowledgebase/index.html?howdoiopencom10orhigher.htm
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.