2016-08-02 22 views
1

Diese Frage ist ein Duplikat dieser question sein kann oder diese questionFehler beim Überprüfen Array-Element auf null

Ich bin mit C und versucht, mit einem Gerät zu kommunizieren, die auf die serielle Kommunikation funktioniert. Ich lese ein einzelnes Byte und speichere es in einem Array und überprüfe dann das Array-Element auf '\0' (0x00). Wenn es '\0' ist, bedeutet das, dass die Daten jetzt nicht verfügbar sind.

volatile int rxFlag = 0; 
volatile int index = 0; 

void function()    //event based function, whenever a byte is received 
{ 
    Rx[index] = ReadUSART();  //reading a byte 
    if(Rx[index] == '\0')  //checking if its null 
    { 
    rxFlag = 1;    //raise a flag 

    } 
    index++;      //increment index 
} 

Unter dem Screenshot der Rx ist:

enter image description here

Im Bild, das Sie die von Rx[0]-Rx[24] sehen kann er Daten enthält, aber Rx[25] ist ein Null-Terminator (0x00) und der rxFlag sollte auf 1 gesetzt. Aber es ist nicht festgelegt.

Was ist die andere Möglichkeit zu überprüfen, ob das Array-Element '\0' ist.

+0

Haben Sie versucht, einfache Debug-Code hinzufügen, um zu sehen, was 'Rx [25]' Ausgänge? –

+0

Was ist der Indexwert zum Zeitpunkt des Screenshots? Es scheint so, als hättest du '25' Zeichen erhalten, so dass zuletzt überprüft wurde, dass 'Rx [24]' ... – LPs

+0

Du kannst einfach' if (! Rx [index]) rxFlag = 1; 'als * nul-Zeichen *' überprüfen '\ 0'' hat den numerischen Wert' 0 '. –

Antwort

3

Sie haben einen Tippfehler, wenn Sie rxFlag zuweisen.

rxFlag == 1; 

sollte

rxFlag = 1; 
+0

Guter Fang, es ist witzig, wie fehlbar der menschliche Verstand ist, einen Blick auf ein "==" anstelle eines "=" zu werfen. –

+0

Wir waren alle dort :) – PaulHK

+0

...... AMEN ...... –