Guten Tag Foren-Gemeinde,
ich versuche gerade mit einem Arduino Uno die Daten eines GPS-Empfängers
via TTL auszulesen - was grundsätzlich auch funktioniert.
Ich hab Zugriff auf den Empfänger, kann ihn konfigurieren und er liefert
mir auch Daten.
Nun zu meinem Problem, dazu erstmal ein kleiner Datenauszug aus dem
Monitor:
B5,62,2,10,B0,0,6,68,90,18,C9,6,7,0,
0,0,0,0,0,0,0,0,5D,3,B4,9F,B6,C5,74,41,DC,65,A0,45,1F,4,1E,3,
37,BC,4A,D8,ED,CA,9E,41,E3,49,41,8C,49,70,77,41,92,57,8C,C4,18,7,21,0,
0,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,
FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,
FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,
FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,
FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,
...in der ersten Zeile steht "B0,0" für die Byte-Länge der auf "B0,0"
folgenden Nachricht (192 Bytes).
Leider fehlen, wie ihr oben im Beispiel seht, gut 50% der Daten
("FF,FF,FF,...") und mir fehlt total der Ansatz wo ich mit der Suche
anfangen soll...
Hier mein (nicht komplett vollständiger) Code:
1 | void get_gps_data()//Abruf der GPS-Daten
|
2 | {
|
3 | int counter24bits=16;
|
4 | int gps_length_flag=0;
|
5 | int data_counter=0;
|
6 | while(gps_length_flag==0)
|
7 | { data_counter++;
|
8 | if(data_counter==500)
|
9 | {gps_length_flag=1;}
|
10 | byteGPS[0]=Serial.read();
|
11 | Serial.print(byteGPS[0],HEX);
|
12 | if(byteGPS[0]==0xB5)
|
13 | { Serial.println("");
|
14 | Serial.print(byteGPS[0],HEX);Serial.print(",");
|
15 | byteGPS[1]=Serial.read();
|
16 | if(byteGPS[1]==0x62)
|
17 | { Serial.print(byteGPS[1],HEX);Serial.print(",");
|
18 | byteGPS[2]=Serial.read();
|
19 | if(byteGPS[2]==0x02)
|
20 | {Serial.print(byteGPS[2],HEX);Serial.print(",");
|
21 | byteGPS[3]=Serial.read();
|
22 | if(byteGPS[3]==0x10)
|
23 | {
|
24 | Serial.print(byteGPS[3],HEX);Serial.print(",");
|
25 | msg_length[0]=Serial.read();
|
26 | msg_length[1]=Serial.read();
|
27 | Serial.print(msg_length[0],HEX);Serial.print(",");
|
28 | Serial.print(msg_length[1],HEX);Serial.print(",");
|
29 | for(int i1=0;i1<msg_length[0];i1++)
|
30 | { byteGPS[4]=Serial.read();
|
31 | if(byteGPS[4]!='kkkkkk')
|
32 | {counter24bits++;
|
33 | Serial.print(byteGPS[4],HEX);Serial.print(",");
|
34 | if(counter24bits==24)
|
35 | {Serial.println("");
|
36 | counter24bits=0;}}}
|
37 | gps_length_flag=1;
|
38 | }}}}}
|
39 | }
|
Bin für jede Idee dankbar!!!
Taurus