2017-05-29 7 views
0

Ich möchte Arduino Nano und GNSS (SIMCON SIM33ELA Standalone GNSS-Modul) verbinden.Arduino Nano Gnss Software Serial

Zuerst schrieb ich ein Programm für rx/tx, was gut funktioniert, aber jetzt möchte ich Software Serial verwenden und ich habe etwas falsches Daten.

#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);    
     }*/ 

} 

Irgendeine Idee?

Bilder über die Ergebnisse:

Wrong data with Software serial

Good data with Serial

+0

while (! MySerial) { } Was ist mit dieser Zeile? Haben Sie das in den SoftwareSerial-Beispielen gesehen? –

+0

Ja, ich sah .... aber niemand kann mir helfen .... –

+0

In welchem ​​SoftwareSerial-Beispiel haben Sie diese Zeile gesehen? –

Antwort

0

Meistens nicht lesen ein Zeichen in eine double Gleitkommavariable. Tun Sie dies einfach:

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

Sie sollten auch AltSoftSerial auf diesen beiden Pins verwenden. SoftwareSerial ist sehr ineffizient, da es Interrupts für lange Zeiträume deaktiviert. Es kann nicht gleichzeitig senden und empfangen. In der Tat kann der Arduino nichts anderes tun, während ein Zeichen oder empfangen wird.

Für eine GPS-Bibliothek können Sie versuchen NeoGPS. Es ist die einzige Arduino-Bibliothek, die die Sätze von den neuesten Geräten analysieren kann. Es ist auch kleiner, schneller, zuverlässiger und genauer als alle anderen Bibliotheken.