0

我想连接 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);              
      }*/
        
}

任何想法?

关于结果的图片:

软件串行数据错误

良好的串行数据

4

1 回答 1

0

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

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

您还应该在这两个引脚上使用 AltSoftSerial。SoftwareSerial 效率很低,因为它会长时间禁用中断。它不能同时发送和接收。事实上,在传输或接收 字符时,Arduino 无能为力。

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

于 2017-05-30T02:31:51.460 回答