方法一:
void setup(){
Serial.begin(9600);
Serial.println("Hello");
}
void loop(){
String s = "";
while (Serial.available()) {
char c = Serial.read();
if(c!='\n'){
s += c;
}
delay(5); // 沒有延遲的話 UART 串口速度會跟不上Arduino的速度,會導致資料不完整
}
if(s!=""){
Serial.println(s);
}
}
使用Serial Monitor測試即可
方法二:
或使用Serial.readString()
void setup(){
Serial.begin(9600);
Serial.setTimeout(50);
//Serial.setTimeout() sets the maximum milliseconds to wait for serial data
Serial.println("Hello");
}
void loop(){
while (Serial.available()) {
Serial.println(Serial.readString());
}
}
疑惑?:為何網路上大家都使用前者?人云亦云?
感謝大大,正巧需要用到,就也用了兩種方式寫了一次
回覆刪除兩者的差距應該是速度,方法二的讀取時間非常久,而方法一讀取完就立刻離開就沒這問題
感謝大大, 方法二的寫法方便多了
回覆刪除http://rocksaying.tw/archives/2017/Arduino_Serial_and_String_exp1-readString.html
這邊也有人使用Serial.readString()的相關經驗
感謝。用readString()的確是直覺很多。
回覆刪除