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

    http://www.naughter.com/serialport.html



  • 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?


Anmelden zum Antworten