Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. #define HWSerial Serial1
  2. const int sentenceSize = 80;
  3.  
  4. char sentence[sentenceSize];
  5. int incomingByte;
  6.  
  7. void setup() {
  8. // put your setup code here, to run once:
  9. delay(1000);
  10. Serial.begin(9600);
  11. HWSerial.begin(9600);
  12. Serial.print(1);
  13. byte updateRateCmd[] = {0xA0, 0xA1, 0x00, 0x03, 0x0E, 0x14, 0x00, 0x1A, 0x0D, 0x0A}; // for 10 Hz
  14. byte baudrateCmd[] = {0xA0, 0xA1, 0x00, 0x04, 0x05, 0x00, 0x05, 0x00, 0x00, 0x0D, 0x0A}; // for 115200
  15. byte NMEAmessage[] = {0xA0, 0xA1, 0x00, 0x09, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0D, 0x0A};// for altitude
  16. HWSerial.write(baudrateCmd, sizeof(baudrateCmd));
  17. HWSerial.flush();
  18. delay(10);
  19. HWSerial.begin(115200);
  20. HWSerial.write(updateRateCmd, sizeof(updateRateCmd));
  21. HWSerial.flush();
  22. HWSerial.write(NMEAmessage, sizeof(NMEAmessage));
  23. HWSerial.flush();
  24. }
  25.  
  26. void loop() {
  27. // put your main code here, to run repeatedly:
  28. static int i = 0;
  29. if (HWSerial.available()>0)
  30. {
  31. char ch = HWSerial.read();
  32. if (ch != '\n' && i < sentenceSize)
  33. {
  34. sentence[i] = ch;
  35. i++;
  36. }
  37. else
  38. {
  39. sentence[i] = '\0';
  40. i = 0;
  41. displayGPS();
  42. }
  43. }
  44. }
  45.  
  46. void displayGPS()
  47. {
  48. char field[20];
  49. getField(field, 0);
  50. // if (strcmp(field, "$GPRMC") == 0)
  51. if (strcmp(field, "$GPGGA") ==0)
  52. {
  53. //first two
  54. Serial.print("one two ");
  55. getField(field, 1); // number
  56. Serial.print(field);
  57. getField(field, 2); // N/S
  58. Serial.print(field);
  59.  
  60. Serial.print("Lat: ");
  61. getField(field, 3); // number
  62. Serial.print(field);
  63. getField(field, 4); // N/S
  64. Serial.print(field);
  65.  
  66. Serial.print(" Long: ");
  67. getField(field, 5); // number
  68. Serial.print(field);
  69. getField(field, 6); // E/W
  70. Serial.print(field);
  71.  
  72.  
  73. Serial.print("six seven: ");
  74. getField(field, 6); // number
  75. Serial.print(field);
  76. getField(field, 7); // N/S
  77. Serial.print(field);
  78.  
  79. Serial.print(" Altitude: ");
  80. getField(field, 9);
  81. Serial.println(field);
  82. }
  83. }
  84.  
  85. void getField(char* buffer, int index)
  86. {
  87. int sentencePos = 0;
  88. int fieldPos = 0;
  89. int commaCount = 0;
  90. while (sentencePos < sentenceSize)
  91. {
  92. if (sentence[sentencePos] == ',')
  93. {
  94. commaCount ++;
  95. sentencePos ++;
  96. }
  97. if (commaCount == index)
  98. {
  99. buffer[fieldPos] = sentence[sentencePos];
  100. fieldPos ++;
  101. }
  102. sentencePos ++;
  103. }
  104. buffer[fieldPos] = '\0';
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement