首页 > 解决方案 > 带有 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() 只返回一个空字符串。

标签: arduino

解决方案


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


推荐阅读