C Arduino上的意外输出

C Arduino上的意外输出,c,arduino,C,Arduino,我使用的是Leonardo,我想在键入“>”和“时打印一条消息。问题是,查找“>”的代码总是查看字符0,而您正在将其追加到字符串中,因此在获得第一个非“>”字符后,您永远无法达到打印的条件 String txtMsg = ""; // a string for incoming text void setup() { Serial.begin(9600); while (!Serial); // wait for serial port to connect. Needed f

我使用的是Leonardo,我想在键入“>”和“时打印一条消息。问题是,查找“>”的代码总是查看字符0,而您正在将其追加到字符串中,因此在获得第一个非“>”字符后,您永远无法达到打印的条件

String txtMsg = ""; // a string for incoming text

void setup() {
    Serial.begin(9600);
    while (!Serial); // wait for serial port to connect. Needed for Leonardo only
}

void loop() {
    // add any incoming characters to the String:
    int got_start = 0;
    while (Serial.available() > 0) {
        char inChar = Serial.read();
        if (inChar == '>' && !got_start) {
            got_start = 1;
        }
        if (got_start) {
            txtMsg += inChar;
        }   
        if (inChar == '<' && got_start) {
            got_start = 0; 
            Serial.println(txtMsg);
            txtMsg = "";    
        }   
    }   
}   
String txtMsg=”“;//输入文本的字符串
无效设置(){
Serial.begin(9600);
while(!Serial);//等待串行端口连接。仅Leonardo需要
}
void循环(){
//将任何传入字符添加到字符串:
int got_start=0;
while(Serial.available()>0){
char inChar=Serial.read();
如果(inChar=='>'&&!启动){
got_start=1;
}
如果(已启动){
txtMsg+=英寸;
}   

如果(inChar==”“它没有像我期望的那样工作。”-那么它实际上做了什么?为什么不打印您实际接收到的字符?(作为调试问题的一种手段,不是永久性的解决方案)这很有用,但是否有任何方法可以使用
charAt()实现这一点
function?@mafap您了解现有代码的错误吗?您可以使用
charAt()
在您添加到字符串后,但我不太确定您为什么要添加。现在我明白了。我想使用此函数,因为我需要获取字符串中不同位置的字符值。我只是不知道最好的方法是什么。
String txtMsg = ""; // a string for incoming text

void setup() {
    Serial.begin(9600);
    while (!Serial); // wait for serial port to connect. Needed for Leonardo only
}

void loop() {
    // add any incoming characters to the String:
    int got_start = 0;
    while (Serial.available() > 0) {
        char inChar = Serial.read();
        if (inChar == '>' && !got_start) {
            got_start = 1;
        }
        if (got_start) {
            txtMsg += inChar;
        }   
        if (inChar == '<' && got_start) {
            got_start = 0; 
            Serial.println(txtMsg);
            txtMsg = "";    
        }   
    }   
}