Advertisement
Guest User

Untitled

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