example.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include "minmea.h"
  5. int main()
  6. {
  7. char line[MINMEA_MAX_LENGTH];
  8. while (fgets(line, sizeof(line), stdin) != NULL) {
  9. printf("%s", line);
  10. switch (minmea_type(line)) {
  11. case MINMEA_GPRMC: {
  12. struct minmea_gprmc frame;
  13. if (minmea_parse_gprmc(&frame, line)) {
  14. printf("+++ raw coordinates and speed: (%d/%d,%d/%d) %d/%d\n",
  15. frame.latitude, frame.latitude_scale,
  16. frame.longitude, frame.longitude_scale,
  17. frame.speed, frame.speed_scale);
  18. printf("+++ fixed-point coordinates and speed scaled to three decimal places: (%d,%d) %d\n",
  19. minmea_rescale(frame.latitude, frame.latitude_scale, 1000),
  20. minmea_rescale(frame.longitude, frame.longitude_scale, 1000),
  21. minmea_rescale(frame.speed, frame.speed_scale, 1000));
  22. printf("+++ floating point degree coordinates and speed: (%f,%f) %f\n",
  23. minmea_coord(frame.latitude, frame.latitude_scale),
  24. minmea_coord(frame.longitude, frame.longitude_scale),
  25. minmea_float(frame.speed, frame.speed_scale));
  26. }
  27. } break;
  28. case MINMEA_GPGGA: {
  29. struct minmea_gpgga frame;
  30. if (minmea_parse_gpgga(&frame, line)) {
  31. printf("$GPGGA: fix quality: %d\n", frame.fix_quality);
  32. }
  33. } break;
  34. default: {
  35. } break;
  36. }
  37. }
  38. return 0;
  39. }
  40. /* vim: ts=4 sw=4 et: */