目前是大学的学生,决定跳过我的编程课,并有点儿用指针玩。这应该采取一个特定的串行输入,并改变我连接到Teensy ++ 2.0的三个LED的状态。但是,它似乎只是让我回到第一个输入。
http://arduino.cc/en/Serial/ReadBytesUntil
这是我对ReadBytesUntil引用()的输入变#,#,###(1,1,255就是一个例子)
我想基本上我的问题是,不ReadBytesUntil()处理逗号?如果是这样,这里发生了什么?输入字符串上的teensy指针
编辑 - 我问我的老师,甚至他不知道为什么它不起作用。
char *dataFinder(char *str){
while (*str != ','){
str++;
}
str++;
return str;
}
void inputDecoder(){
str = incomingText;
whichLED = *str;
dataFinder(str);
onoff = *str;
dataFinder(str);
powerLevel = *str;
}
void loop(){
int length;
if (Serial.available() > 0){ //this is basically: if something is typed in, do something.
length = Serial.readBytesUntil(13,incomingText, 10); //reads what is typed in, and stores it in incomingVar
incomingText[length]=0; ///swapping out cr with null
inputDecoder();
//ledControl();
Serial.print("Entered:");
//incomingText[9]=0;
Serial.println(incomingText); //Here for testing, to show what values I'm getting back.
Serial.println(whichLED);
Serial.println(onoff);
Serial.println(powerLevel);
}
delay(1000);
}
我很抱歉,如果这真的很愚蠢。这是我在此的头一篇博文。 – Solidus
输出是什么? 'whichLED','onoff'和'powerLevel'应该分别为“1,1,255”,“1,255”,“255”,因为dataFinder()不是终止任何字符串的NUL。编辑:你没有使用'dataFinder()'的返回值,所以'str'在'inputDecoder()'中总是有相同的值,尝试'str = dataFinder(str);' – SpacedMonkey