有一个简单的程序来重新启动IoT设备。一切都按预期进行。一旦我将该代码放入我的较大程序中,它将不再起作用。我从设备读回的部分只会返回“”(空字符串)。有人知道为什么吗?
工作程序就是:
#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()仅返回一个空字符串。
答案 0 :(得分:0)
发现原因: 不可能同时通过软件串行连接2个设备 解决方法: 使用SoftwareSerial的.listen()函数来收听您当时使用的那个