2016-07-15 10 views
1

Я хочу читать данные GPS из последовательного порта чипа ublox. Я не только хочу читать предложения NMEA, но и сырые данные (такие сообщения, как MEASX, RAWX, SFRBX). Если я просто подключу свои последовательные порты к компьютеру и прочитаю данные с помощью RealTerm (win), он отлично работает. Однако, если я пытаюсь читать данные с помощью adruino, он отлично читает в предложениях NMEA, но он не может корректно считывать исходные данные.Считывание данных датчика (данные GPS-данных) с помощью adruino и сохранение его на SD-карте

Вот код, я использую:

String inData; 

void setup() { 
    Serial.begin(38400); 
} 

void loop() { 
    while (Serial.available() > 0) 
    { 
     char recieved = Serial.read(); 
     inData += recieved; 

     // Process message when new line character is recieved 
     if (recieved == '\n') 
     { 
      //Serial.print("Arduino Received: "); 
      Serial.print(inData); 

      inData = ""; // Clear recieved buffer 
     } 
    } 

} 

Любые идеи, как просто прочитать в файле построчно. Я думаю, проблема в том, что я не знаю, как обрабатывать необработанные данные - как читать эти данные?

Лучшие

picture1picture2

ответ

2

Вам не нужно проверять CR, устройство GPS передает данные в блоках, так что если один блок будет сделано, то сообщение будет закрыт и доступен () -изменение больше не будет истинным.

if (gps.available()) 
{ 
    String Buffer = ""; 
    while (gps.available()) 
    { 
     char GPSRX = gps.read(); 
     Buffer += GPSRX; 

     //Serial.write(gps.read()); 
    } 
    Serial.print(Buffer); 
} 

с 'GPS' является экземпляром SoftwareSerial:

#include <SoftwareSerial.h>  
SoftwareSerial gps(4, 3); // RX, TX 

... 

void setup() 
{ 
    gps.begin(9600); 
    ... 
} 

void loop() 
{ 
    if (gps.available()) 
    { 
     ... 
    } 

    ... 
}