2012-05-02 12 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

関連する問題