带有SoftwareSerial的Arduino:2个程序,相同的代码,一个不起作用

时间:2019-05-13 22:40:28

标签: arduino

有一个简单的程序来重新启动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()仅返回一个空字符串。

1 个答案:

答案 0 :(得分:0)

发现原因: 不可能同时通过软件串行连接2个设备 解决方法: 使用SoftwareSerial的.listen()函数来收听您当时使用的那个