Hallo,
ich parse den GPGGA GPS Satz und möchte die Uhrzeit am Display anzeigen.
ich erhalte: Gps.utctime = 170552;
Gps.hour = Gps.utctime / 10000;
Gps.second = Gps.utctime % 100;
Gps.minute =(Gps.utctime % 10000)/100;
Gps.hour ist dann 17
Gps.second ist dann 52
Gps.minute ist dann 5
wenn ichs mit dem Taschenrechner nachrechne stimmt es, aber im Betrieb
wird manchmal eine Sekunde ausgelassen.
Ist die Umrechnung oben so korrekt oder würdet ihr das anderst machen?
>> da ist wohl noch ein Fehler bei mir oder?
Da hab ich keine Ahnung, DENN
- ich weiß nicht, wie dein Programm aussieht
- ich weiß nicht, was dein AVR (nicht) macht
- ich weiß nicht, was dein AVR machen soll
etc...
Aber das Team von strcpy und strtok_r aus der Standardlib funktioniert
bei mir
1
// Header
2
structdate{inth;intm;ints;};
3
//Main:
4
chars[]="$GPGGA,191410,"\
5
"4735.5634,N,00739.3538,E,"\
6
"1,04,4.4,351.5,M,48.0,M,,*45";
7
char*wort,*end;
8
charbuffer[10];
9
structdatetest;
10
11
wort=strtok_r(s,",",&end);
12
wort=strtok_r(NULL,",",&end);
13
14
strncpy(buffer,wort,7);
15
16
test.h=(buffer[0]-'0')*10;
17
test.h+=(buffer[1]-'0');
18
test.m=(buffer[2]-'0')*10;
19
test.m+=(buffer[3]-'0');
20
test.s=(buffer[4]-'0')*10;
21
test.s+=(buffer[5]-'0');
hth Jörg
ps. (mingw-gcc) PC-Programm im Anhang (da heißt die Funktion "strtok"
und hat weniger argumente)
Eine eigene Frage?
Dieser Thread ist über 18 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.