痞子小小崔
2017-11-30 10:27
采纳率: 60%
浏览 3.9k

Arduino 软串口的失效问题

遇到需要2个软串口的情况,其中一个串口失效了,获取不到数据。切换监听也写了,还是没有用。
硬件电路没有问题,换了另一个只用了一个软接口的代码后可执行。

新人学习中,求大神指导,我是不是遗漏了什么。

#include <Arduino.h>
#include <SoftwareSerial.h>

SoftwareSerial GSMSerial(10, 11); // RX, TX
SoftwareSerial GpsSerial(5, 6); // RX, TX

#define DEBUGSerial Serial
。
。
。
void setup()
{
  DEBUGSerial.begin(9600);
  GSMSerial.begin(9600);
  Init();
  GpsSerial.begin(9600);
}

void loop()
{
  gpsRead();  //获取GPS数据
  parseGpsBuffer();//解析GPS数据  
  printGpsBuffer();//输出解析后的数据
  GSMSerial.end();
  if(tic == 0) {
    Init();
  }else{
    url = urlhead+"longitude="+llongitude+"&latitude="+llatitude;
    SendMessage();
  }
}

**下面的GSMSerial.available()失效,准确说是没有在监听;**
void gpsRead() {
  GpsSerial.listen();
  while (GSMSerial.available())
  {
    gpsRxBuffer[ii++] = GSMSerial.read();
    if (ii == gpsRxBufferLength)clrGpsRxBuffer();
  }
    。
    。
    。
}

void Init()
{
  GSMSerial.listen();
  DEBUGSerial.print("正在初始化,请稍后。。。");
  // AT
  GSMSerial.print("AT");  
    。
    。
    。
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 痞子小小崔 2017-11-30 10:27

    是Arduino UNO型号

    2 打赏 评论
  • 陌上·R·d 2021-03-17 00:07

    请问你的问题解决了吗?我也是同样的问题。cry...

    1 打赏 评论
  • 冰糖葫芦不再含糖 2021-04-03 18:27

    好兄弟,你解决了没

     

    1 打赏 评论
  • xiannvjj 2021-07-10 10:53

    呜呜呜救命我也是

    打赏 评论
  • 任培 2021-08-05 11:19

    SoftwareSerial: listen()
    Description
    Enables the selected software serial port to listen. Only one software serial port can listen at a time; data that arrives for other ports will be discarded. Any data already received is discarded during the call to listen() (unless the given instance is already listening).

    同一时间,只能有一个串口在监听,可以使用listen切换监听串口。看你的描述像是这个问题导致的

    打赏 评论

相关推荐 更多相似问题