arduino - 带有 SoftwareSerial 的 Arduino:2 个程序,相同的代码,一个不工作
问题描述
有一个简单的程序来重启物联网设备。一切正常,正如预期的那样。一旦我将该代码放入更大的程序中,它就不再起作用了。我从设备读回的部分只会返回“”(空字符串)。任何人都知道为什么?
工作程序只是:
#include <SoftwareSerial.h>
SoftwareSerial NB_IOT_DEV (12, 13); //(RX = 0, TX = 1)
String nbState = "";
void setup() {
Serial.begin(9600);
Serial.println(F("Hello World"));
NB_IOT_DEV.begin(9600);
Serial.println(F("Sending EASY+Restart"));
short i=0;
NB_IOT_DEV.println("EASY+Restart");
do {
nbState = NB_IOT_DEV.readString();
nbState.trim();
Serial.print(F("NB State: "));
Serial.println(nbState);
delay (1000);
i++;
} while (nbState.indexOf("ModemStatus:Detached") == -1 && i < 50);
Serial.println(F("Sending EASY+Device"));
i=0;
NB_IOT_DEV.println("EASY+Device");
do {
nbState = NB_IOT_DEV.readString();
nbState.trim();
Serial.print(F("NB State: "));
Serial.println(nbState);
delay (1000);
i++;
} while (nbState.indexOf("EASY#Device:Success") == -1 && i < 50);
}
void loop() {
}
在非工作草图中,我有一个从循环函数调用的函数内的代码,它的代码完全相同,但 .readString() 只返回一个空字符串。
解决方案
找到原因:不可能同时通过软件串行连接2个设备解决方法:使用SoftwareSerial的.listen()函数来收听您当时使用的那个
推荐阅读
- laravel - Laravel:FormRequest 验证扩展未运行
- python - Python NameError:未定义名称“ridge_regression_sklearn”
- python - 如何从点云重新格式化文本文档?
- mysql - 数据库位于服务器的本地主机中。如何远程连接
- c# - C# 程序将整数作为输入,然后使用该整数显示一个矩形
- azure-functions - Azure 函数应用跟踪表现出奇怪的行为
- r - 如何计算R中从一个阶段到另一个阶段的不同阶段
- c - 如何扫描C中由空格分隔的多个输入?
- android - 如何使用共享首选项在 Android Studio 中创建动态启动画面以设置 TextView
- android - Flutter Bloc Builder 没有被调用,也没有在状态更改后更新 UI