Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Tracker APRS do samochodu
SQ2PPJ Offline
Nowicjusz
*

Liczba postów: 19
Dołączył: 17-07-2014
Post: #7
RE: Tracker APRS do samochodu
Mam pewien problem z odczytem danych z GPS-u. Jeśli dane z GPS-u odczytam bezpośrednio na Serial to dostaje czytelny przekaz NMEA:
Kod ARDUINO:
Kod:
#include <SoftwareSerial.h>
#include<string.h>
#include <Wire.h>

SoftwareSerial nss(3, 4);

void setup()
{
Serial.begin(115200);
nss.begin(9600);

}
void loop()
{
  if (nss.available()) Serial.write(nss.read());
    
}

W odpowiedzi na serial monitorze dostaje dane w postaci:

Cytat:$GPGSA,A,3,24,26,28,12,15,18,22,,,,,.22,N,0.41,K,A​*34
$GPGGA,070017.000,5428.5821,N,01822.3515,E,1,7,0.9​9,162.6,M,34.0,M,,*50
$GPGSA,A,3,24,26,28,12,15,18,22,,,,,$GPGGA,070019.​000,5428.5822,N,01822.3513,E,1,7,0.99,162.6,M,34.0​,M,,*5B
$GPGSA,A,3,24,26,28,12,15,18,22,,,,,,1.33,0.99,0.8​9*04
$GPRMC,070019.000,A,5428.5822,N,01822.3513,E,0.26,​118.04,290714,,,A*6B
$GPVTG,118.04,T,,M,0.26,N,0.48,K,A*39
$GPGGA,070020.000,5428.5822,N,01822.3512,E,1,7,0.9​9,162.6,M,34.0,M,,*50
$GPGSA,A,3,24,26,28,12,15,18,22,,,,,,1.33,0.99,0.8​9*04

Jeśli natomiast próbuje odczytać te dane do zmiennej, tak aby je potem obrobić, to niestety dane są mocno "pocięte".

Kod:
#include <SoftwareSerial.h>
#include<string.h>
#include <Wire.h>

SoftwareSerial gps(3, 4);

void setup()
{
Serial.begin(115200);
gps.begin(9600);

}
void loop()
{
  Serial.flush();
  char sign;
  String gps_string = " ";
          if( gps.available()) sign = gps.read();
           if (sign == '$')
          {
            if (gps.available()) sign = gps.read();
            while (sign != 13)
           {
           gps_string = gps_string + char(sign);  
           if (gps.available()) sign = gps.read();
           //delay(10);
           }
          
         }
           if (gps_string != " ") Serial.println(gps_string);
}

I wyglądają mniej więcej tak:

Cytat: GPGGA,072234.000,5428.5814,N,01822.3484,E,1,8,0.91​,159.7,M,34.0,M,,*50
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA​AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA$GPGGA​,072236.000,5428.5815,N,01822.3485,E,1,8,0.91,159.​7,M,34.0,M,,*52
33333333333333333333333333333333333333333333333333​33333333333333333333333333333333333333333333333333​33333333333333333333333333333333333333333333333333​33333333333333333333333333333$GPGGA,072237.000,542​8.5815,N,01822.3486,E,1,8,0.91,159.7,M,34.0,M,,*
GPGGA,072238.000,5428.5816,N,01822.3486,E,1,8,0.92​,159.7,M,34.0,M,,*5F
16,N,01822.3486,E,1,8,0.91,159.7,M,34.0,M,A112.,01​G1
GPGGA,072240.000,5428.5816,N,01822.3486,E,1,8,0.91​,159.7,M,34.0,M,,*53
GPGSA,A,3,26,,1,,1.9*2G,,45,4,4,1,5*G41,,25,,,,2
G31100,112$P,54586,286,2229,
GPGGA,072241.000,5428.5815,N,01822.3487,E,1,8,0.91​,159.7,M,34.0,M,,*50

Czy jest jakiś sposób na zsynchronizowanie odczytu danych z portu szeregowego ?
29-07-2014 9:24
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
Tracker APRS do samochodu - SQ2PPJ - 17-07-2014, 11:42
RE: Tracker APRS do samochodu - SQ2PPJ - 29-07-2014 9:24

Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości