【发布时间】:2015-06-28 18:53:22
【问题描述】:
我目前正在尝试使用 AT 模式下的 XBee 在 PC 和 Arduino Uno 之间进行一些通信测试。
我的测试是将字符从计算机发送到 XBee 并通过条件语句进行处理。
我认为这个问题与 XBees 的配置无关,因为我在观看串行监视器时能够成功通信。
这是我在 Arduino 上运行的代码:
#include <SoftwareSerial.h>
SoftwareSerial xBee = SoftwareSerial(1, 0);
int Led = 9;
void setup()
{
pinMode(Led, OUTPUT);
xBee.begin(9600);
}
void loop()
{
if (xBee.available()> 0)
{
if (xBee.read() == 'r')
{
digitalWrite(Led, HIGH);
xBee.write("Led On");
delay(10);
}
else if (xBee.read() == 'o')
{
digitalWrite(Led, LOW);
xBee.write("Led Off");
delay(10);
}
else
{
xBee.write("NR"); // Testing for not recognized characters
}
delay(10);
}
delay(10);
}
我可以在将字符“r”从 PC 发送到 XBee 时打开 LED。预期的结果也会被接收回来。当我尝试从 PC 发送字符“o”时,LED 一直亮着,我得到“NR”的响应。
else if 语句中的不同字符也会出现同样的结果,发送字符 'o' 作为第一个字符,更改为 just if 语句,并将初始条件更改为 - while xBee.available()。
我该如何解决这个问题?
【问题讨论】:
-
您需要读取一次,将其存储在变量中,然后在 if/else if 条件中使用该变量。