Kann COM-Port nicht öffnen

Frankdfe

Erfahrenes Mitglied
Hallo!

Ich habe Probleme den COM-Port (an dem ein Drucker hängt) mit C++ zu öffnen. Der folgende Code schlägt fehl:
Code:
HANDLE hcom;
DCB dcb;
BOOL b;

hcom = CreateFile ("COM2", GENERIC_READ | GENERIC_WRITE, 
                   0,0,OPEN_EXISTING, 0,0);

b=GetCommState (comm, &dcb)
GetCommState liefert false zurück und GetLastError() liefert 1 (Invalid function).
Wenn ich aber Daten via
Code:
copy a.txt com2
versende, funktioniert das ohne Probleme.

Woran könnte das liegen?
 
Zuletzt bearbeitet:
moin


Sach das doch gleich.
Warum speicherst du den Handle den CreateFile zurück gibt in "hcom" und verwendest bei GetCommState "comm"?


mfg
umbrasaxum
 
Funktioniert auch nicht.

Übrigens ist in dcb nach dem GetCommState-Aufruf, alles bis auf DCBlength und fBinary(=1) auf 0 gesetzt.
 
Hast du überprüft, ob du nach CreateFile ein gültiges Handle (ungleich INVALID_HANDLE_VALUE) hast? Wenn nicht, ruf mal GetLastError auf, und lass dir den Wert ausgeben.
Versuch mal spasshalber "\\\\.\\COM2" als Dateinamen, manchmal spinnt Windows da rum.
 
Das Handle ist gültig (=4c) und \\\\.\\COM2 funktioniert auch nicht.

Ich hatte schonmal einen anderen Barcode-Drucker hier, mit dem mein Programm funktioniert hat. Allerdings kann ich nicht überprüfen, ob es mit dem alten Drucker immer noch funktioniert. Vielleicht hat sich ja was geändert (habe u.a. einen Druckertreiber für den neuen Drucker installiert)
 
Update:

Ich habe mal mit dem FileMonitor untersucht, was passiert wenn ich
Code:
copy a.txt com2
eingebe. Da wird auf Dateien mit dem Namen
Code:
C:\WINNT\System32\spool\PRINTERS\00012.SPL und
C:\WINNT\System32\spool\PRINTERS\00012.SHD
zugegriffen bzw. diese erstellt und wieder gelöscht. Es scheint also so zu sein, als ob der Druckertreiber den direkten Zugriff auf den COM-Port abfängt. Weiß hier jemand, wie sowas funktioniert oder kennt jemand eine Tutorial zu dem Thema (also Treiber und was passiert wenn ich auf "dessen" Port zugreife) ? Ansonsten funktioniert mein Programm immer noch nicht.

:( Helft mir! :(
 
Zurück