Beispielcode 'Listener.cpp' mit der seriellen Schnittstelle



  • Hello,

    ich verwende gerade die Bibliothek von Ramon de Klein (http://www.codeproject.com/KB/system/serial.aspx?msg=3519759#xx3519759xx) für die serielle Schnittstelle mit Visual Studio. Unten ist ein Teil des Beispiels „Listener.cpp“ zu sehen.

    Frage: Soweit ich verstehe wird das Programm abgeschlossen wenn das Zeichen EOF (ASCII = 27) empfangen wird. Aber in der Wirklichkeit wird das Programm abgeschlossen solange eine Zeichenkette über die serielle Schnittstelle vorkommt. Habe ich was falsch verstanden?

    if (eEvent & CSerial::EEventRecv)
    		{
    			// Read data, until there is nothing left
    			DWORD dwBytesRead = 0;
    			char szBuffer[101];
    			do
    			{
    				// Read data from the COM-port
    				lLastError = serial.Read(szBuffer,sizeof(szBuffer)-1,&dwBytesRead);
    				if (lLastError != ERROR_SUCCESS)
    					return ::ShowError(serial.GetLastError(), _T("Unable to read from COM-port."));
    
    				if (dwBytesRead > 0)
    				{
    					// Finalize the data, so it is a valid string
    					szBuffer[dwBytesRead] = '\0';
    
    					// Display the data
    					printf("%s", szBuffer);
    
    					// Check if EOF (CTRL+'[') has been specified
    					if (strchr(szBuffer,EOF_Char))
    						fContinue = false;
    				}
    			}
    		    while (dwBytesRead == sizeof(szBuffer)-1);
    		}
    

    MfG
    Senmeis


  • Mod

    Es wird zwar geprüft, ob das EOF-Zeichen empfangen wurde, die Konsequenz dieser Prüfung wird aber komplett ignoriert. Tatsächlich wird so lange gelesen, wie auch etwas empfangen wird.


Anmelden zum Antworten