2012-05-02 66 views
1

我試圖打印一個字符數組到串行。數組本身充滿了字符,但只要我打印整個數組 - 而不僅僅是它的元素 - 打印的字符串是空的。Arduino C++字符數組是空的,元素填充

#define MAX_PAYLOAD_SIZE 80 
class CmdBuffer { 
... 
private: 
    char buffer[MAX_PAYLOAD_SIZE+1]; 
    int bufferpointer; 
... 
}; 

//In cpp File 
String CmdBuffer::readCommand(char data) { 
    buffer[++bufferpointer]=data; 
    if(data != CMD_EOF) { 
     return NULL; 
    } 
    buffer[++bufferpointer]='\0'; 
    ... 
    for(int i=0; i<bufferpointer; i++) { 
     Serial.print(buffer[i]); 
    } 
    Serial.println("\n-------"); 
    Serial.println(buffer); 
    Serial.println("END"); 
    ... 
} 

如果輸入字符是abcdefg則輸出看起來像

abcdefg 
------- 

END 

那麼,爲什麼可以在元件被打印,而整個陣列不能?

回答

4

我懷疑這是因爲你沒有指定的第一個字符:

buffer[++bufferpointer]=data; 

由於預增的,你錯過的第一個字符。它可能包含一個null,所以它終止你的字符串。要修復它,請使用後增加:

buffer[bufferpointer++]=data; 
+0

非常感謝。我應該想到這一點。浪費了2個小時;-) – gorootde