如何解决从蓝牙模块接收Arduino命令
首先,这是我的第一个Arduino项目,但之前我已经编写了基本的c ++代码。无论如何,我都在努力让Arduino在将数据保存到变量时进行确认。我知道它正在接收数据,但没有将其附加到我的数据变量中。这是代码,如果我能对自己做错的事情有基本的了解,我将不胜感激。
#include <SoftwareSerial.h>
SoftwareSerial BTserial(0,1);
//declair pins
void setup() {
Serial.begin(9600);
//setup pins
}
void loop() {
String data;
bool run = false;
data = "";
while (Serial.available()) {
char inChar = (char)Serial.read();
Serial.print(inChar); //I know it is getting the sent data because prints here
if (inChar == '\n') {
Serial.print("Received Command: ");
if (data == "")
Serial.print("Data is NULL"); //this always prints too
Serial.print(data);
Serial.print('\n');
run = true;
break;
} else {
data += inChar;
}
}
if(run) {
//do stuff
}
}
我知道有很多网站可以复制粘贴内容,但是我想自己做,并了解自己做错了什么。我确实读过它们。
例如,如果我从手机发送command
,则输出为
command
Received Command: Data is NULL
解决方法
除非您在序列开始监听时收到换行符以外的其他字符,否则以下段将在第一个循环中始终显示为空,因为该程序从上到下执行,并且此处尚未给数据赋值。
if (data == "") {
Serial.print("Data is NULL"); //this always prints too
}
P.S。这个表情
String data;
data = "";
可以简化为
String data ="";
效率更高。
一旦获得一些示例数据,如果我能找出问题,我将尝试提供更多信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。