Buchstaben über COM Port schicken ?
-
Hallo,
ich versuche gerade folgendermaßen einen Buchstaben über den Seriellen Com Port zu schicken.
Ich habe zunächst so einen Com Handle geöffnet:
hCom = ::CreateFile(portNumber, // filename GENERIC_READ | GENERIC_WRITE, // desired access 0, // exclusive NULL, // security irrelevant OPEN_EXISTING, // it has to be there FILE_FLAG_OVERLAPPED, // open asynchronous NULL); // template file if (!hCom) return FALSE;Dann wollte ich folgender maßen einen Buchstaben darüber hinaussenden:
WriteData(char sign) { OVERLAPPED ovl = {0}; ovl.hEvent = WriteEvent; DWORD bytesWritten; BOOL ok = ::WriteFile(hCom, // handle (LPCSTR)sign, // 8-bit data sizeof(sign), // length &bytesWritten, // amount written &ovl); // overlapped structure if(!ok) { /* failed */ DWORD err = ::GetLastError(); if(err != ERROR_IO_PENDING) { /* serious error */ return FALSE; } /* serious error */Aber leider funktioniert das so nicht. Auf dem anderen PC im Hyper Terminal kommt nichts an. Das Lesen funktioniert schon super nur das schreiben wie gesagt noch nicht.
Gruß
Wildcard
-
Hallo Wildcard
Ohne auf dein eigentliches Problem mit deinem Code einzugehen lege ich dir einmal ans Herz, die fertige MFC-Klasse (siehe Link unten) für die serielle Kommunikation anzusehen. Eventuell hat ein anderer dir bereits die gesamte Arbeit und alle Sorgen abgenommen.
Gruss Klopfspecht
-
Auch eine Implementation. Finde ich persönlich sehr gut.
http://www.codeproject.com/KB/system/serial.aspx
Simon
-
Nur so nebenbei: hast du denn mal die Rückgaben von WriteFile und GetLastError gecheckt?