2017-05-29 103 views
0

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

首先我写了一个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

+0

while(!mySerial){ }那条线是什么?你有没有在任何一个SoftwareSerial例子中看到这个? –

+0

是的,我看到了....但没有人可以帮助我...... –

+0

什么SoftwareSerial示例你看到那行? –

回答

0

大多数情况下,不读一个字符为double浮点变量。只需执行以下操作:

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

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

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