【发布时间】:2021-12-26 16:10:55
【问题描述】:
我正在尝试从蓝牙设备中了解有关 arduino 串行读取的一些知识。这是我到处找到的代码:
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte);
}
}
当我从移动蓝牙发送单词“word”时,我得到 4 行:
我收到了:w
我收到了:o
我收到:r
我收到:d
这很好......但这是我的问题:
我想在接收到的字符进入串行输入后立即检查它们,所以如果其中一个是字符“r”,我想在串行监视器中打印额外的一行,例如:“哇,那是一个 r!”
所以我在 println(incomingByte) 之后添加了一个 if 语句,我的代码现在是这样的:
Serial.print("I received: ");
Serial.println(incomingByte);
if (incomingByte == "r") {
Serial.println("wow, that was an r!");
}
该代码永远不会起作用,就像根本没有“r”一样。 有人可以向我解释吗? 谢谢
【问题讨论】:
-
在 cpp(arduino 所基于的语言)中,双引号 (") 构成一个字符串,它本质上是一个字符数组,因此,“r”的 int 值只是程序存储数组的位置。你应该尝试使用单引号(因为它是单个字符),所以
if (incomingByte == 'r')