Advertisement
Guest User

Untitled

a guest
Jul 16th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. String data = "";
  2.  
  3.  
  4. void setup() { Serial.begin(9600);
  5.  
  6. delay(6000);
  7. Serial1.begin(9600); // default NMEA GPS baud
  8. Serial.println("Starting");
  9.  
  10.  
  11.  
  12. // $GPRMC,104322.00,A,5225.12039,N,00705.03973,E,0.546,,160718,,,A*7D
  13.  
  14. }
  15.  
  16. //-------------------------------------------------------------------//
  17. void getData(){
  18.  
  19. char c;
  20.  
  21. int q = 0;
  22. while( q < 2){
  23. if (Serial1.available()) {
  24.  
  25. c = Serial1.read();
  26. if (c == '$'){
  27. q ++;
  28. }
  29. if ( q == 1){
  30. data += c;
  31. }
  32. if( data.startsWith("$") && c == '\n'){
  33.  
  34. q++;
  35.  
  36. }
  37.  
  38. }
  39. if (data.length() == 66){ //other gps (Blue 6M)
  40.  
  41. data = data.substring(0,16) + "0" + data.substring(16,28)+ data.substring(29,42) + data.substring(43, 50) + data.substring(51,52) + "XXXXXX"+ data.substring(52,66);
  42. }
  43. }
  44. if (data.length() == 71){
  45. data = data.substring(0,50) + "0" + data.substring(50,72);
  46. }
  47.  
  48. if (data.length() == 72){
  49. data = data.substring(0,45) + "0" + data.substring(45,73);
  50. }
  51.  
  52. if (data.length() == 73){
  53. data = data.substring(0,45) + "0" + data.substring(45,74);
  54. }
  55.  
  56.  
  57.  
  58. }
  59.  
  60. //-------------------------------------------------------------------//
  61.  
  62. boolean checkData(){ if (data.substring(0,6).equals("$GPRMC") && data.length() == 74){
  63.  
  64. return true;
  65.  
  66. }
  67.  
  68. return false; }
  69.  
  70. //-------------------------------------------------------------------//
  71.  
  72. boolean checkStatus(){
  73.  
  74. if ((data.substring(18,19)).equals("A")){ return true;
  75.  
  76. } return false; }
  77.  
  78. //-------------------------------------------------------------------//
  79.  
  80. String getTime(){ String time = String((data.substring(7,9).toInt())+2) + ":" + data.substring(9,11) + ":" +data.substring(11,13);
  81.  
  82. return time;
  83.  
  84. }
  85.  
  86.  
  87.  
  88.  
  89. //-------------------------------------------------------------------//
  90.  
  91. String getLongitude(){ /*
  92. uint32_t deg = (data.substring(20,22).toInt())*1000000;
  93. uint32_t mm = (data.substring(22,24).toInt())*100;
  94. uint32_t ssms = data.substring(25,29).toInt();
  95. uint32_t longitude = (((ssms/60)+mm)/60)+deg;
  96.  
  97. */
  98.  
  99. String longitude = data.substring(30,31) + data.substring(20,22) + data.substring(22,24) + data.substring(25,29); return longitude; }
  100.  
  101. //-------------------------------------------------------------------//
  102.  
  103. String getLatitude(){ /* uint32_t deg = (data.substring(32,35).toInt())*1000000;
  104.  
  105. uint32_t mm = (data.substring(35,37).toInt())*100;
  106.  
  107. uint32_t ssms = data.substring(38,42).toInt(); uint32_t latitude = (((ssms/60)+mm)/60)+deg;
  108.  
  109. */
  110.  
  111. String latitude = data.substring(43,44) + data.substring(32,35) + data.substring(35,37) + data.substring(38,42);
  112.  
  113. return latitude; }
  114. //-------------------------------------------------------------------//
  115.  
  116. String getDate(){ String date = data.substring(59,61) + "." + data.substring(61,63) + "." + data.substring(63,65); return date; }
  117.  
  118. //-------------------------------------------------------------------//
  119. /*String getSpeed(){
  120. uint32_t beforekomma = data.substring(45,48).toInt();
  121. uint32_t komma = data.substring(49,51).toInt();
  122. uint32_t speed = ((((beforekomma*100)+komma)*1000)*1852)/10;
  123.  
  124. String kmh = String(speed);
  125. return kmh;
  126. }
  127. */
  128. //-------------------------------------------------------------------//
  129. void loop() {
  130.  
  131.  
  132.  
  133.  
  134. getData();
  135. //Serial.println("getData");
  136. //Serial.println(data);
  137. if (checkData() == true){
  138. // Serial.println("checkData");
  139. if (checkStatus() == true){
  140. Serial.println("-- Active Fix --");
  141. Serial.println("Time(DE):");
  142. Serial.println(getTime());
  143. Serial.println("Date:");
  144. Serial.println(getDate());
  145. Serial.println("Longitude:");
  146. Serial.println(getLongitude());
  147. Serial.println("Latitude:");
  148. Serial.println(getLatitude());
  149. //Serial.println("Speed(in Km/h):");
  150. //Serial.println(getSpeed());
  151. Serial.println("Data:");
  152. Serial.println(data);
  153.  
  154.  
  155. }
  156. }
  157.  
  158. if (data.length() >75 && data.substring(0,6).equals("$GPRMC")) {
  159. Serial.println("Data coruppt or GPS-Module broken. You may restart the device to fix issue.");
  160. Serial.println(data);
  161.  
  162. }
  163.  
  164. if (data.substring(18,19).equals("V")) {
  165. Serial.println("-- No Fix --");
  166. }
  167.  
  168. data = "";
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement