Lesen vom Seriellen Port: Buchstaben werden doppelt gelesen



  • Ich arbeite derzeit an einem Programm, um vom einem seriellen Port zu lesen und zu schreiben. Das Schreiben klappt bereits, jedoch habe ich ein Problem mit dem Lesen. Es werden teilweise Buchstaben doppelt oder dreifach gelesen.

    Bsp.:

    Gesendete Nachricht: "Test"
    Angezeigte Nachricht: "Teeessssttt"

    Mein Code zum Lesen:

    int newLineCounter = 0;
    	DWORD dwCommModemStatus;
    	unsigned char tmp;
    	while (!endCurrentRead)
    	{
    		ReadFile(hSerial, &tmp, 1, &bytesRead, NULL); // Get new letter
    
    		if (tmp != '\n')
    		{
    			newLineCounter = 0;
    			if (tmp >= 32 && tmp <= 126)
    			{
    				output += tmp; // Add current letter to the output
    			}
    		}
    		else
    		{
    			newLineCounter++;
    			if (newLineCounter < 2) // If there are more than 2 '\n' it doesn't write it down
    			{
    				output += tmp;
    			}
    			else if (newLineCounter == 2)
    			{
    				Print(output);
    				output = receiverName;
    				endCurrentRead = true;
    			}
    
    		}
    	}
    

    Mein HandleFile:

    serialHandle = CreateFile(LcomPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    

    Wie schaffe ich es, dass der Buchstabe nur einmal gelesen wird?
    Ich hoffe, dass mir jemand helfen kann.



  • Setze mal

    tmp = '#'; // oder ein anderes auffälliges Zeichen
    

    vor die ReadFile-Funktion. Und dann lies mal ReadFile und beachte den Rückgabewert.



  • Falsches Unterforum.


Log in to reply