Arduino Nano Gnss软件系列

时间:2017-05-29 19:32:51

标签: arduino gps software-serial

我想连接Arduino nano和GNSS(SIMCom的SIM33ELA独立GNSS模块)。

首先我为rx / tx编写了一个程序,它运行良好,但现在我想使用Software Serial,我得到了错误的数据。

#include <SoftwareSerial.h>
char incomingByte;   // for incoming serial data
double tbs;
SoftwareSerial mySerial(8, 9); // RX, TX
void setup() {
   Serial.begin(115200);     
   while (!Serial) {    
  }
  mySerial.begin(115200);
  while (!mySerial) {

  } 
}

void loop() {
    if (mySerial.available()) {
      tbs = mySerial.read();
      incomingByte = (char)tbs;
     Serial.print(incomingByte);
    }

   /*if (Serial.available() > 0) {        
      incomingByte = Serial.read();            
      Serial.print(incomingByte);              
      }*/

}

任何想法?

关于结果的图片:

Wrong data with Software serial

Good data with Serial

1 个答案:

答案 0 :(得分:0)

大多数情况下,不要将一个字符读入double个浮点变量。就这样做:

void loop()
{
  if (mySerial.available()) {
    char c = mySerial.read();
    Serial.write( c );
  }
}

您还应该在这两个引脚上使用AltSoftSerial。 SoftwareSerial的效率非常低,因为它会长时间禁用中断。它不能同时发送和接收。实际上,当一个角色被传输时,Arduino无法做任何其他事情。

对于GPS库,您可以尝试NeoGPS。它是唯一可以解析最新设备句子的Arduino库。它比其他所有图书馆都更小,更快,更可靠,更准确。