【发布时间】:2021-07-05 18:31:30
【问题描述】:
我正在阅读一些机器人代码,并且遇到了像 Newline 和 Carriage 这样的东西。那两件事是什么?我找不到任何与代码本身相关的有用用法。 这是代码
// !! make sure you have enabled Newline or Carriage return
#define _mode 0 // (0) used for calibration and testing, (1) uses serial as input
void handle_serial() {
//: reads and stores the serial data
int i = 0; float buff[3] = {0, 0, 0};
String s_buff = "";
while (Serial.available()) {
char c = Serial.read();
if (c == 13 || c == 32 || c == '\n') {
buff[i] = s_buff.toFloat();
s_buff = "";
i++;
} else
s_buff += c;
}
if (_mode == 0)
commands_exe(buff[0], buff[1], buff[2]);
else if (_mode == 1)
if (state == 4) {
_direction = {buff[0], buff[1]};
turn = buff[2];
}
}
【问题讨论】:
-
你应该烧掉这段代码。也可能是项目中的大多数其他代码。
-
为什么?我不明白?
-
我试图删除代码并运行程序,但出现错误。我不认为它一文不值
-
如果你看
13是'\r',32是' '(空格),唯一正确显示的字符文字是'\n'。代码显示if (whitespace) { ... } else { add c to s_buff }在调用s_buff.toFloat()之前,没有验证s_buff是否持有有效值。事实上,如果接收到的第一个字符是空白,它将尝试对空字符串进行转换。这只是鼓励您重新开始的几个原因...
标签: c arduino esp32 arduino-esp32