CreateFile() für Com Port endet mit Fehlercode 2 (File not found)
-
Hallo Leute,
ich benutze CreateFile() zum ansprechen des Com Ports. Der ist mittels eines Hilfsprogrammes auch gefunden (also abseits meines Programmes). Wenn ich ihn aber öffnen will, dann bekomm ich oben genannten Fehler.
Mein Aufruf:
CreateFile(T("COM1"), GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING,0,NULL);
Er muss doch aber den Com Port finden?
Danke
Ranger
-
Hast du das andere Programm auch geschlossen? Denn zwei Programme können nicht gleichzeitig auf einen COM-Port zugreifen.
-
Ja, das ist wieder zu, das war nur um zu sehen, ob das Gerät seinen Com Port finden kann. also es liegt nix auf dem Port.
-
Glasgow_Ranger schrieb:
Hallo Leute,
ich benutze CreateFile() zum ansprechen des Com Ports. Der ist mittels eines Hilfsprogrammes auch gefunden (also abseits meines Programmes). Wenn ich ihn aber öffnen will, dann bekomm ich oben genannten Fehler.
Mein Aufruf:
CreateFile(T("COM1"), GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING,0,NULL);
Er muss doch aber den Com Port finden?
Danke
Ranger
Der Aufruf ist eigentlich gut so. Merkwürdig. Vielleicht exisitert COM1 doch nicht? Hast du bereits in den Geräteeinstellungen geschaut?
File-Not-Found riecht schon stark danach, dass eben COM1 gar nicht existiert...
-
Der Port existiert auf alle Fälle, hab ihn mit einem anderen Programm auch gefunden.
Kann sein das irgend ein Prozess noch auf den Port einwirkt?
und wie kann ich das rausfinden?Das Programm läuft auf windows ce .net
-
vielleicht spinnt dein T macro? versuch mal einfach "COM1" oder L"COM1" für unicode. wenn das nicht klappt versuche mal "COM1:" bzw. L"COM1:". ist zwar unwahrscheinlich dass das was hilft, aber man weiss ja nie....
-
Glasgow__Ranger schrieb:
Kann sein das irgend ein Prozess noch auf den Port einwirkt?
Wenn du es ja mit einem anderen Programm testen konntest, dann greift auch kein weiteres Programm darauf zu. :xmas2: :xmas1: <- nice!
-
net schrieb:
vielleicht spinnt dein T macro? versuch mal einfach "COM1" oder L"COM1" für unicode. wenn das nicht klappt versuche mal "COM1:" bzw. L"COM1:". ist zwar unwahrscheinlich dass das was hilft, aber man weiss ja nie....
hab ich auch probiert hilft aber nix
-
Kannst du das denn für COM2 ausprobieren?
-
Geht nicht da an dem Gerät nur COM1 eine Serielle Schnittstelle ist
-
Kann auch sein, dass es nicht am CreateFile liegt.
Wie hast du denn die DCB-Struktur gesetzt?
-
Die DCB Struktur kann man nicht setzen, wenn man kein Handle hat
-
Glasgow__Ranger schrieb:
Geht nicht da an dem Gerät nur COM1 eine Serielle Schnittstelle ist
Und was steht eigentlich in den Geräteeinstellungen?
Also langsam glaube ich, dass da ein unkompatibles serielles COM Gerät vorhanden ist, welches mit CreateFile nicht angesprochen werden kann oder vielleicht ist dein Code bugbehaftet. Wobei letzeres eigentlich ausgeschlossen werden kann, denn der CreateFile Aufruf scheint i.O. zu sein. Evt. gibt es Probleme auf dem CE System mit CreateFile? Hast du diesbezüglich 'mal ge-googelt?
Hast du die Applikation bzw. den Code auf einem anderen Gerät testen können?
-
Jochen Kalmbach schrieb:
Die DCB Struktur kann man nicht setzen, wenn man kein Handle hat
Wie doof von mir. Hast natürlich Recht.
-
hab den Aufruf direkt aus der msdn
und jede andere Serielle Klasse die ich finde (google ;-)) öffnet genauso, bis auf ein paar Einstellungen die laut msdn für dieses System so sein müssen.hab auch ein bissl rumexperimentiert aba hat nix geholfen
-
Hast Du irgendwo gesagt das dies CE ist? Hab ich wohl übersehen...
Verwende bitte "COM1:" (doppelpunkt!).CreateFile("COM1:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, NULL);
-
Und das ganze steht auch so explizit in der Doku
http://msdn.microsoft.com/library/en-us/wceobjst/html/cerefCreateFile.aspWhen lpFileName points to a COM port to open, you must include a colon after the name. For example, specify COM1: to open that port. When using IrCOMM, specify COM3:.
-
Jup und da kommt bei getlasterror() der fehler code 55: The specified network resource or device is no longer available
-
Kann mir jemand sagen wie ich mit der ID die Texte auslesen kann? Und mit AFXMessagebox ausgeben kann?
-
FormatMessage