启用换行符或回车符 return
Enabling Newline or Carriage return
我正在阅读一些机器人代码,我遇到了类似 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];
}
}
Newline and Carriage. What are those two things?
那是两个控制字符。通常表示为转义序列"\n"
(换行)和"\r"
(回车return)
https://en.wikipedia.org/wiki/Carriage_return
https://en.wikipedia.org/wiki/Newline
两者都有历史原因。托架 return 将打印头移回行首。新行移至下一行。
这仍然在计算机中用于移动光标或在阅读文本文件时进行换行。
这段代码的想法是读取字节,直到收到换行符、space 或回车 return。然后将之前收到的字节转换为浮点数。
但是正如评论所暗示的那样,由于多种原因,此实现很糟糕。主要是它很容易出错。
例如,如果您没有及时收到 space、换行符或回车符 return,您就有可能超出缓冲区的边界。
它也经常被用来终止串行命令,这样计算机就知道他何时收到了完整的命令,同时允许在终端中很好地显示它们。由发送方来确保发送正确的数据,这通常是一个非常糟糕的主意。
您可以从这个片段中学到的唯一一件事就是如何不去做。
我正在阅读一些机器人代码,我遇到了类似 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];
}
}
Newline and Carriage. What are those two things?
那是两个控制字符。通常表示为转义序列"\n"
(换行)和"\r"
(回车return)
https://en.wikipedia.org/wiki/Carriage_return
https://en.wikipedia.org/wiki/Newline
两者都有历史原因。托架 return 将打印头移回行首。新行移至下一行。
这仍然在计算机中用于移动光标或在阅读文本文件时进行换行。
这段代码的想法是读取字节,直到收到换行符、space 或回车 return。然后将之前收到的字节转换为浮点数。
但是正如评论所暗示的那样,由于多种原因,此实现很糟糕。主要是它很容易出错。
例如,如果您没有及时收到 space、换行符或回车符 return,您就有可能超出缓冲区的边界。
它也经常被用来终止串行命令,这样计算机就知道他何时收到了完整的命令,同时允许在终端中很好地显示它们。由发送方来确保发送正确的数据,这通常是一个非常糟糕的主意。
您可以从这个片段中学到的唯一一件事就是如何不去做。