未收到来自两个不同串行端口Arduino Uno的数据

未收到来自两个不同串行端口Arduino Uno的数据,arduino,software-serial,Arduino,Software Serial,我目前正在尝试在我的arduino uno上使用两个不同的串行端口,即(2,3)用于gsm和(8,9)用于gps。我尝试了这两个链接 (一) (二) 但似乎一切都不起作用。串行监视器没有显示任何内容 更新 我将gps和串行端口库更改为AltSoftSerial和NeosWSSerial。尽管如果我在示例中使用它,它们都可以正常工作。但是当我实现这两个库并运行代码时,串行监视器中没有结果 #include <NMEAGPS.h> #include <GPSport.h> #

我目前正在尝试在我的arduino uno上使用两个不同的串行端口,即(2,3)用于gsm和(8,9)用于gps。我尝试了这两个链接

(一)

(二)

但似乎一切都不起作用。串行监视器没有显示任何内容

更新

我将gps和串行端口库更改为AltSoftSerial和NeosWSSerial。尽管如果我在示例中使用它,它们都可以正常工作。但是当我实现这两个库并运行代码时,串行监视器中没有结果

#include <NMEAGPS.h>
#include <GPSport.h>
#include <AltSoftSerial.h>

AltSoftSerial sim900a;

NMEAGPS  gps; // This parses the GPS characters
gps_fix  fix;

void setup()
{
  Serial.begin(9600);
  sim900a.begin(9600);
  gpsPort.begin(9600);
}

void loop()
{
  while (gps.available(gpsPort))
  {
    fix = gps.read();

    if (fix.valid.location)
    {
      Serial.println();

      Serial.print("Latitude= "); 
      Serial.print(fix.latitude(), 6);
      Serial.print(" Longitude= "); 
      Serial.println(fix.longitude(), 6);
      sendData = 1;
    }
    else
    {
      sendData = 0;
    }
  }

  if(sendData == 1)
  {
    //do stuffs
    delay(5000); 
  }
}
#包括
#包括
#包括
AltSoftSerial sim900a;
NMEAGPS gps;//这将解析GPS字符
全球定位系统;
无效设置()
{
Serial.begin(9600);
sim900a.begin(9600);
gpsPort.begin(9600);
}
void循环()
{
while(全球定位系统可用(gpsPort))
{
fix=gps.read();
if(fix.valid.location)
{
Serial.println();
Serial.print(“Latitude=”);
Serial.print(fix.latitude(),6);
Serial.print(“Longitude=”);
Serial.println(fix.longitude(),6);
sendData=1;
}
其他的
{
sendData=0;
}
}
if(sendData==1)
{
//做事
延迟(5000);
}
}

p/S:我已经尝试了listen()方法在每个端口上关闭和,但它似乎没有按预期工作。欢迎任何帮助。谢谢。

您将无法使用两个软件串行库来收听SIM900和GPS

主要问题是SIM900字符可以随时到达。它们可能在您收听一个软件串行端口时到达

唯一的方法是为其中一个设备使用硬件串行端口。我建议将GPS TX引脚连接到Arduino RX引脚0。然后,您将读取序列号上的GPS字符。您必须断开针脚0才能通过USB上传新草图。您仍然可以使用
Serial.print
在串行监视器窗口上显示信息

SIM900应位于插脚8和9上,您可以使用
AltSoftSerial
。这比
SoftwareSerial
更高效<代码>软件序列长时间禁用中断,这可能会干扰草图的其他部分或其他库。不惜一切代价避免它

有关“我的库安装”页面的详细信息:


NeoGPS
AltSoftSerial
可从Arduino IDE的菜单Sketch->Include Library->Manage Libraries中获得,很抱歉回复太晚。这是最新消息;我已经成功地实现了NeoGPS库,并通过在GPSport.h中包含NeoSWSerial来运行代码。在示例中进行测试后,我继续我的项目。我的代码中包含了AltSoftSerial和NeoGPS库,但仍然没有通过串行监视器接收到输出。我将在问题中加入我的最新代码。谢谢你回复我,先生。糟糕的是,我忘了我有一个中断设置,它会弄乱我的代码,当我删除这些代码行时,代码运行完全符合预期。谢谢你,先生顺便说一句,我想将void loop()中的代码插入到中断设置中。因为我希望将从lat lng接收的数据插入服务器。总是这可能吗?@Asyraf,我不确定。在问题的另一个更新部分显示代码。