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
-
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.