69 lines
1.9 KiB
C
69 lines
1.9 KiB
C
//
|
|
// Created by xemon on 02.09.22.
|
|
//
|
|
|
|
#include "printf.h"
|
|
|
|
#include "Nmea0183Parser.h"
|
|
#include "stdio.h"
|
|
|
|
|
|
void testRmc(char *rmcStr, size_t rmcStrLen) {
|
|
printf("string %*s\n", (int) rmcStrLen, rmcStr);
|
|
if (bNmea0183IsValidString(rmcStr, rmcStrLen)) {
|
|
printf("it's valid nmea string\n");
|
|
if (bNmea0183IsRmcString(rmcStr, rmcStrLen)) {
|
|
printf("it's rmc string\n");
|
|
tNmeaRmc rmc;
|
|
if (bNmea0183ParseRMC(rmcStr + 7, rmcStrLen - 7, &rmc)) {
|
|
printf("RMC string parsed OK!\n");
|
|
if (rmc.location.ewIndicator) {
|
|
printf("lat %c %f\n", rmc.location.ewIndicator, rmc.location.latitude);
|
|
} else {
|
|
printf("no lat\n");
|
|
}
|
|
if (rmc.location.nsIndicator) {
|
|
printf("lon %c %f\n", rmc.location.nsIndicator, rmc.location.longitude);
|
|
} else {
|
|
printf("no lon\n");
|
|
}
|
|
|
|
printf("time %02i:%02i:%02i [%03i]\n",
|
|
rmc.time.hour,
|
|
rmc.time.minute,
|
|
rmc.time.second,
|
|
rmc.time.millisecond
|
|
);
|
|
|
|
printf("date %i %i 20%02i\n",
|
|
rmc.date.day,
|
|
rmc.date.month,
|
|
rmc.date.year
|
|
);
|
|
} else {
|
|
printf("Can't parse rmc string!\n");
|
|
}
|
|
} else {
|
|
printf("it's not rmc string\n");
|
|
}
|
|
} else {
|
|
printf("it's invalid nmea string\n");
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
char gprmc0[] = "$GPSACP: 115235.000,5244.8321N,04126.7108E,0.6,201.7,3,0.0,0.0,0.0,121022,05,08";
|
|
char gprmc1[] = "$GPRMC,125504.049,A,5542.2389,N,03741.6063,E,0.06,25.82,200906,,,*17";
|
|
printf("\n");
|
|
// testAcp(gprmc0, sizeof(gprmc0) - 1);
|
|
|
|
printf("\n");
|
|
testRmc(gprmc1, sizeof(gprmc1) - 1);
|
|
return 0;
|
|
} |