2017-05-29 129 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庫。它比所有其他庫更小,更快,更可靠,更準確。