目前是大學的學生,決定跳過我的編程課,並有點兒用指針玩。這應該採取一個特定的串行輸入,並改變我連接到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