【问题标题】:Arduino serial read and checkArduino 串行读取和检查
【发布时间】: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')

标签: c++ arduino


【解决方案1】:

我认为这是由于使用了"r" 而不是'r'。不同之处在于,在第一种情况下,您有字符串,即 char[],而在第二种情况下,您有单个 char。

【讨论】:

  • 谢谢你,你是对的
  • 编辑:哦,"X" 显然是字符串,'X' 是字符。对不起,我不自觉地把它写反了。
  • @user3513782 如果满意,请采纳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多