COM > 10: CreateFile schlägt fehl
-
Ich weiß ich weiß, das Problem ist bekannt und die Lösung angeblich auch:
Anstatt
CreateFile("COM10", ...
soll es bei Ports >= 10
CreateFile("\\\\.\\COM10", ...
sein.
Trotzdem erhalte ich denselben Fehler. Die Schnittstelle an sich geht aber, habe vorher immer mit den Ports 1-9 gearbeitet.
Ist das irgendein Unicode Problem? Hab schon versucht, mit Unicode und dann
CreateFile(L"\\\\.\\COM10", ...
aber dann bekomme ich überall Compilerfehler mit irgendwelchen LPCSTR die ich nicht gefixt bekomme.
Daher die Frage: Braucht CreateFile Unicode? Falls nein, was könnte sonst der Fehler sein
-
Wenn du
L"..."
verwendest, dann musst duCreateFileW
verwenden stattCreateFile
. Wobei mir von keinem Problem mitCreateFileA
(bzw.CreateFile
in einem nicht-UNICODE Programm) bekannt wäre. Wird also vermutlich nix bringen.Ansonsten sollte alles hier stehen:
https://support.microsoft.com/kb/115831Ich hab' das auch schon in vielen Programmen verwendet, hat immer einwandfrei funktioniert. Wichtig ist natürlich dass du die passenden Parameter/Flags übergibst, also z.B.
OPEN_EXISTING
beidwCreationDisposition
und0
beidwShareMode
.
(Und falls du das nicht machst bitte keine Vorträge darüber dass es beiCOM1...9
ja auch funktioniert hat - kann leicht sein dass die Regeln beiCOM1...9
zwecks Kompatibilität mit alten Programmen aufgeweicht wurden.COM1...9
ohne"\\\\.\\"
gibt es schliesslich überhaupt nur zwecks der Kompatibilität mit alten Programmen.)Kannst ja mal den ganzen Aufruf posten, also welche Flags etc. du übergibst. Und hol dir mit
GetLastError
den Fehlerwert und poste diesen hier (bzw. such' damit zuerst selbst ob du ne Lösung findest, und poste dann die Lösung hier ;)).
-
Erstmal vielen Dank für deine Rückmeldung.
Fakt ist, das ich es zuhause nicht hinbekommen habe und auf der Arbeit ging es auf anhieb (auch ohne Unicode). Also vermute ich mal, ich war gestern zu müde und hab versucht den falschen COM-Port zu öffnen.
Wie dem auch sei, ich stelle das generell auf "\\\.\" um. Und wenn ich es zuhause nochmal getestet habe, gebe ich auch nochmal Feedback
-
Richtig blöde Ursache:
2 Laptops, 2x Win 7, 2x Visual Studio 2013, auf dem einem Laptop muss das Visual Studio als Admin gestartet werden, damit \\\.\\COMX geht, auf dem anderen nicht
Eine Stunde hat mich das gekostet