2011-04-28 2 views
0
char* lastfeedbuffer[3]; 
void lastfeed_receive(){ 
    while(Serial.available() >= LASTFEED_LEN){ 
    char c = Serial.read(); 
    if (c == LASTFEED_HEAD){ 
     for (int i = 0; i < LASTFEED_LEN - 1; i++){ 
     lastfeedbuffer[i] = Serial.read(); 
     } 
    } 
    } 
    Serial.println(lastfeedbuffer); 
    if (lastfeedbuffer == "00"){ 
    Serial.println("asdf"); 
    } 
} 

Je ne comprends pas pourquoi le code suivant n'imprime pas le asdf. les gravures Serial.println(lastfeedbuffer)00, ce qui signifie qu'il devrait aller dans la boucle des idées pourquoi il ne fonctionne pas?Arduino C ne va pas dans la boucle?

+2

'' lastfeedbuffer' et "00" 'ne sont pas des types compatibles: le premier est d'un tableau de type' 3 pointeur vers char'; la seconde est de type 'array of char'. Augmentez le niveau d'avertissement de votre compilateur et ** MIND THE WARNINGS **. – pmg

Répondre

3

Utilisez strcmp(lastfeedbuffer, "00") == 0 - Qu'est-ce que vous faites actuellement est de comparer deux pointeurs non reliés.

En outre, je crois que vous avez char lastfeedbuffer[3]; pas char* lastfeedbuffer[3]; dans votre code actuel?