【发布时间】:2015-11-08 23:56:04
【问题描述】:
我正在尝试使用 Serial.readBytesUntil() 函数读取字符串。我的代码在这里:
char *name_arr;
char *test = "Serial.begin is Ready";
void setup(){
Serial.begin(9600);
Serial.println(test);
}
void loop(){
if (Serial.readBytesUntil('\r', name_arr, 10)){
Serial.println(name_arr);
Serial.println();
}
}
当我只给一个数字作为串行输入时,什么都不会发生。Serial.println() 函数什么也不打印。
但是当我输入超过两个数字(如 15,12 等)时,它开始在无限循环中打印垃圾值。
如果我提供像“asd”这样的字符输入,或者将此代码用于循环()而不是之前的代码:
void loop(){
while (Serial.available()>0){
Serial.readBytesUntil('\r', name_arr, 10);
Serial.println(name_arr);
Serial.println();
}
然后它会打印除前两个字符之外的整个字符串“test”。但 test 仅在 setup 函数中打印:
似乎 setup() 函数一次又一次地运行。
如何将字符串输入保存在字符数组中(不在字符串类中)?
函数如何重新运行设置函数以及为什么不打印初始两位数?
【问题讨论】:
标签: arrays arduino serial-port