GPS-Tracking-Velo
Dependencies: MODSERIAL SDBlockDevice GPS
Forschungsstand und Theoretische Grundlage
Die Bestandteile der Hardware, die das Projekt gebraucht wird, bestehen aus drei Komponente ein Mikrocontroller Board, eine GPS Antenne und ein SIM Modul. GPS basiert auf Satelliten, die mit codierten Radiosignalen ständig ihre aktuelle Position und genaue Uhrzeit ausstrahlen. Aus den Signallaufzeiten können eine GPS Antenne ihre eigene Position und Geschwindigkeit berechnen. Diese GPS Antenne sollte die Daten der Objektposition aus Satelliten auf dem Board gespeichert werden. Diese Daten wurden noch weiter durch eine SIM Module nach GMS Turm und dann per SMS Nachrichten an Handy gesendet. Möglicherweise können diese Daten auch an Webanwendung nach der Sendung an GMS Turm geschickt werden.
mbed-os-example-fat-filesystem-master/main.cpp@3:eb739df911ef, 2019-04-18 (annotated)
- Committer:
- QuangAnhLe
- Date:
- Thu Apr 18 15:17:23 2019 +0000
- Revision:
- 3:eb739df911ef
- Parent:
- 2:3d3d272d2df2
- Child:
- 4:793221f865f6
SMS- erledig
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
QuangAnhLe | 0:ee1ae011cba6 | 1 | #include "mbed.h" |
QuangAnhLe | 1:2f617b92078b | 2 | #include "GPS.h" |
QuangAnhLe | 1:2f617b92078b | 3 | #include <iostream> |
QuangAnhLe | 1:2f617b92078b | 4 | #include <sstream> |
QuangAnhLe | 1:2f617b92078b | 5 | #include <bitset> |
QuangAnhLe | 1:2f617b92078b | 6 | #include <string> |
QuangAnhLe | 0:ee1ae011cba6 | 7 | #include "FATFileSystem.h" |
QuangAnhLe | 0:ee1ae011cba6 | 8 | //#include "HeapBlockDevice.h" |
QuangAnhLe | 0:ee1ae011cba6 | 9 | #include "SDBlockDevice.h" |
QuangAnhLe | 0:ee1ae011cba6 | 10 | #include <stdio.h> |
QuangAnhLe | 0:ee1ae011cba6 | 11 | #include <errno.h> |
QuangAnhLe | 0:ee1ae011cba6 | 12 | |
QuangAnhLe | 0:ee1ae011cba6 | 13 | //HeapBlockDevice bd(128 * 512, 512); |
QuangAnhLe | 0:ee1ae011cba6 | 14 | //SDBlockDevice bd(PinName mosi, PinName miso, PinName sclk, PinName cs); |
QuangAnhLe | 0:ee1ae011cba6 | 15 | SDBlockDevice bd(D11, D12, D13, D10); |
QuangAnhLe | 1:2f617b92078b | 16 | Serial pc(PA_2,PA_3); |
QuangAnhLe | 2:3d3d272d2df2 | 17 | Serial SIM900(PA_9,PA_10); // (TX,RX) |
QuangAnhLe | 1:2f617b92078b | 18 | GPS gps (PA_11,PA_12); |
QuangAnhLe | 0:ee1ae011cba6 | 19 | |
QuangAnhLe | 3:eb739df911ef | 20 | const string GoogleChunk = "https://maps.google.com.au/maps?q="; // URL constant |
QuangAnhLe | 3:eb739df911ef | 21 | const string GoogleExtras = "&z=20"; // Zoom Level |
QuangAnhLe | 3:eb739df911ef | 22 | char GPRSbuffer[512]; |
QuangAnhLe | 3:eb739df911ef | 23 | char NUMBER[14]; |
QuangAnhLe | 3:eb739df911ef | 24 | string MESSAGE; |
QuangAnhLe | 3:eb739df911ef | 25 | int index; |
QuangAnhLe | 3:eb739df911ef | 26 | int i=0; |
QuangAnhLe | 3:eb739df911ef | 27 | |
QuangAnhLe | 0:ee1ae011cba6 | 28 | FATFileSystem fs("fs"); |
QuangAnhLe | 2:3d3d272d2df2 | 29 | string result; |
QuangAnhLe | 2:3d3d272d2df2 | 30 | char x; |
QuangAnhLe | 0:ee1ae011cba6 | 31 | |
QuangAnhLe | 0:ee1ae011cba6 | 32 | void return_error(int ret_val){ |
QuangAnhLe | 0:ee1ae011cba6 | 33 | if (ret_val) |
QuangAnhLe | 0:ee1ae011cba6 | 34 | printf("Failure. %d\r\n", ret_val); |
QuangAnhLe | 0:ee1ae011cba6 | 35 | else |
QuangAnhLe | 0:ee1ae011cba6 | 36 | printf("done.\r\n"); |
QuangAnhLe | 0:ee1ae011cba6 | 37 | } |
QuangAnhLe | 1:2f617b92078b | 38 | |
QuangAnhLe | 0:ee1ae011cba6 | 39 | void errno_error(void* ret_val){ |
QuangAnhLe | 0:ee1ae011cba6 | 40 | if (ret_val == NULL) |
QuangAnhLe | 0:ee1ae011cba6 | 41 | printf(" Failure. %d \r\n", errno); |
QuangAnhLe | 0:ee1ae011cba6 | 42 | else |
QuangAnhLe | 0:ee1ae011cba6 | 43 | printf(" done.\r\n"); |
QuangAnhLe | 0:ee1ae011cba6 | 44 | } |
QuangAnhLe | 2:3d3d272d2df2 | 45 | |
QuangAnhLe | 2:3d3d272d2df2 | 46 | void clearString() |
QuangAnhLe | 2:3d3d272d2df2 | 47 | { |
QuangAnhLe | 2:3d3d272d2df2 | 48 | result.clear(); |
QuangAnhLe | 2:3d3d272d2df2 | 49 | } |
QuangAnhLe | 2:3d3d272d2df2 | 50 | |
QuangAnhLe | 2:3d3d272d2df2 | 51 | void callback_rx() { |
QuangAnhLe | 2:3d3d272d2df2 | 52 | |
QuangAnhLe | 2:3d3d272d2df2 | 53 | while (SIM900.readable()) { |
QuangAnhLe | 2:3d3d272d2df2 | 54 | x = SIM900.getc(); |
QuangAnhLe | 2:3d3d272d2df2 | 55 | result += x; |
QuangAnhLe | 2:3d3d272d2df2 | 56 | pc.putc(x); // print the answer from SIM900 |
QuangAnhLe | 2:3d3d272d2df2 | 57 | |
QuangAnhLe | 2:3d3d272d2df2 | 58 | } |
QuangAnhLe | 2:3d3d272d2df2 | 59 | } |
QuangAnhLe | 2:3d3d272d2df2 | 60 | void sendSMS() |
QuangAnhLe | 2:3d3d272d2df2 | 61 | { |
QuangAnhLe | 2:3d3d272d2df2 | 62 | clearString(); |
QuangAnhLe | 2:3d3d272d2df2 | 63 | SIM900.printf("AT+CMGF=1\r"); //at command for send sms |
QuangAnhLe | 2:3d3d272d2df2 | 64 | wait_ms(1000); |
QuangAnhLe | 2:3d3d272d2df2 | 65 | clearString(); |
QuangAnhLe | 2:3d3d272d2df2 | 66 | wait_ms(1000); |
QuangAnhLe | 2:3d3d272d2df2 | 67 | SIM900.printf("AT+CMGS="); |
QuangAnhLe | 2:3d3d272d2df2 | 68 | SIM900.putc('"'); |
QuangAnhLe | 2:3d3d272d2df2 | 69 | SIM900.printf("+4917645651571"); |
QuangAnhLe | 2:3d3d272d2df2 | 70 | SIM900.putc('"'); |
QuangAnhLe | 2:3d3d272d2df2 | 71 | SIM900.printf("\r"); |
QuangAnhLe | 2:3d3d272d2df2 | 72 | wait_ms(1000); |
QuangAnhLe | 3:eb739df911ef | 73 | //SIM900.printf("Latitude: %0.6f, Longitude: %0.6f,Altitude: %0.3f",gps.latitude,gps.longitude,gps.altitude); |
QuangAnhLe | 3:eb739df911ef | 74 | SIM900.printf("Find me at....\n %s%f,%f%s", GoogleChunk, gps.latitude, gps.longitude, GoogleExtras); |
QuangAnhLe | 2:3d3d272d2df2 | 75 | wait_ms(1000); |
QuangAnhLe | 2:3d3d272d2df2 | 76 | SIM900.putc(0x1A); |
QuangAnhLe | 3:eb739df911ef | 77 | wait_ms(30000); |
QuangAnhLe | 3:eb739df911ef | 78 | //clearString(); |
QuangAnhLe | 3:eb739df911ef | 79 | // Set message mode to ASCII |
QuangAnhLe | 3:eb739df911ef | 80 | /*SIM900.printf("AT+CMGF=1\r\n"); |
QuangAnhLe | 3:eb739df911ef | 81 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 82 | //clearString(); |
QuangAnhLe | 3:eb739df911ef | 83 | // Set the phone number |
QuangAnhLe | 3:eb739df911ef | 84 | SIM900.printf("AT+CMGS=\"%s\"\r\n", +4917645651571); |
QuangAnhLe | 3:eb739df911ef | 85 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 86 | // Write out the GPS data in a message |
QuangAnhLe | 3:eb739df911ef | 87 | SIM900.printf("Latitude: %0.6f, Longitude: %0.6f,Altitude: %0.3f",gps.latitude,gps.longitude,gps.altitude); |
QuangAnhLe | 3:eb739df911ef | 88 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 89 | // Send it... |
QuangAnhLe | 3:eb739df911ef | 90 | SIM900.putc(0x1A); |
QuangAnhLe | 3:eb739df911ef | 91 | wait(4); |
QuangAnhLe | 3:eb739df911ef | 92 | SIM900.printf("AT+CMGF=1\r\n"); |
QuangAnhLe | 3:eb739df911ef | 93 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 94 | SIM900.printf("AT+CMGS=\"%s\"\r\n", +4917645651571); |
QuangAnhLe | 3:eb739df911ef | 95 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 96 | SIM900.printf("Find me at....\n %s%f,%f%s", GoogleChunk, gps.latitude, gps.longitude, GoogleExtras); |
QuangAnhLe | 3:eb739df911ef | 97 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 98 | SIM900.putc(0x1A); |
QuangAnhLe | 3:eb739df911ef | 99 | wait(1);*/ |
QuangAnhLe | 3:eb739df911ef | 100 | } |
QuangAnhLe | 3:eb739df911ef | 101 | |
QuangAnhLe | 3:eb739df911ef | 102 | void parseSMS() |
QuangAnhLe | 3:eb739df911ef | 103 | { |
QuangAnhLe | 3:eb739df911ef | 104 | while(SIM900.readable()) |
QuangAnhLe | 3:eb739df911ef | 105 | { |
QuangAnhLe | 3:eb739df911ef | 106 | // Assign it to 'c' |
QuangAnhLe | 3:eb739df911ef | 107 | char c = SIM900.getc(); |
QuangAnhLe | 3:eb739df911ef | 108 | // Replace all returns and or line endings with money |
QuangAnhLe | 3:eb739df911ef | 109 | if(c == '\r' || c == '\n') c= '$'; |
QuangAnhLe | 3:eb739df911ef | 110 | // Put it in the array |
QuangAnhLe | 3:eb739df911ef | 111 | GPRSbuffer[i] =c; |
QuangAnhLe | 3:eb739df911ef | 112 | // Repeat if possible |
QuangAnhLe | 3:eb739df911ef | 113 | i++; |
QuangAnhLe | 3:eb739df911ef | 114 | |
QuangAnhLe | 3:eb739df911ef | 115 | } |
QuangAnhLe | 3:eb739df911ef | 116 | // Uncomment the following to debug |
QuangAnhLe | 3:eb739df911ef | 117 | // pc.printf("\nbuffer = %s", GPRSbuffer); |
QuangAnhLe | 3:eb739df911ef | 118 | |
QuangAnhLe | 3:eb739df911ef | 119 | // If we get an SMS notification |
QuangAnhLe | 3:eb739df911ef | 120 | if (sscanf(GPRSbuffer,"$$+CMTI: \"SM\",%d", &index)>0) |
QuangAnhLe | 3:eb739df911ef | 121 | { |
QuangAnhLe | 3:eb739df911ef | 122 | pc.printf("\nSMS recieved @ index [%d]", index); |
QuangAnhLe | 3:eb739df911ef | 123 | memset(GPRSbuffer, '0', 511); |
QuangAnhLe | 3:eb739df911ef | 124 | i=0; |
QuangAnhLe | 3:eb739df911ef | 125 | pc.printf("\nOpening message..."); |
QuangAnhLe | 3:eb739df911ef | 126 | // ask GPRS to read the message |
QuangAnhLe | 3:eb739df911ef | 127 | SIM900.printf("AT+CMGR=%d\r\n", index); |
QuangAnhLe | 3:eb739df911ef | 128 | } |
QuangAnhLe | 3:eb739df911ef | 129 | if (strncmp(GPRSbuffer, "$$+CMGR",7) == 0 ) // compared return value = 0 then it indicates str1 is equal to str2 |
QuangAnhLe | 3:eb739df911ef | 130 | { |
QuangAnhLe | 3:eb739df911ef | 131 | // Get the number out |
QuangAnhLe | 3:eb739df911ef | 132 | char *n = strstr(GPRSbuffer,"+49"); // finds the first occurrence of the substring "+49" in the string GPRSbuffer +4917645651571 |
QuangAnhLe | 3:eb739df911ef | 133 | strncpy(NUMBER, n, 14); // this funtion returns the final copy of the copied string |
QuangAnhLe | 3:eb739df911ef | 134 | char * pch; |
QuangAnhLe | 3:eb739df911ef | 135 | pch = strtok (GPRSbuffer, "$$"); // return a pointer to the first token found in the string. A null pointer is returned if there are no tokens left to retrieve |
QuangAnhLe | 3:eb739df911ef | 136 | pch = strtok (NULL, "$$"); |
QuangAnhLe | 3:eb739df911ef | 137 | MESSAGE = pch; |
QuangAnhLe | 3:eb739df911ef | 138 | pc.printf("\nDone! "); |
QuangAnhLe | 3:eb739df911ef | 139 | // Send the location |
QuangAnhLe | 3:eb739df911ef | 140 | sendSMS(); |
QuangAnhLe | 3:eb739df911ef | 141 | // Reset the GPRS buffer |
QuangAnhLe | 3:eb739df911ef | 142 | memset(GPRSbuffer, '0', 511); |
QuangAnhLe | 3:eb739df911ef | 143 | // Reset the char counter |
QuangAnhLe | 3:eb739df911ef | 144 | i = 0; |
QuangAnhLe | 3:eb739df911ef | 145 | } |
QuangAnhLe | 3:eb739df911ef | 146 | if (strncmp(GPRSbuffer, "$$+CMGS",7) == 0) { |
QuangAnhLe | 3:eb739df911ef | 147 | // Reset the GPRS buffer |
QuangAnhLe | 3:eb739df911ef | 148 | memset(GPRSbuffer, '0', 511); |
QuangAnhLe | 3:eb739df911ef | 149 | // Reset the char counter |
QuangAnhLe | 3:eb739df911ef | 150 | i = 0; |
QuangAnhLe | 3:eb739df911ef | 151 | } |
QuangAnhLe | 3:eb739df911ef | 152 | if (strncmp(GPRSbuffer, "$$RING",6) == 0) { |
QuangAnhLe | 3:eb739df911ef | 153 | SIM900.printf("ATH0\r\n"); |
QuangAnhLe | 3:eb739df911ef | 154 | pc.printf("\nCall bounced!..."); |
QuangAnhLe | 3:eb739df911ef | 155 | // Do the send SMS routine... |
QuangAnhLe | 3:eb739df911ef | 156 | sendSMS(); |
QuangAnhLe | 3:eb739df911ef | 157 | // Reset the GPRS buffer |
QuangAnhLe | 3:eb739df911ef | 158 | memset(GPRSbuffer, '0', 511); |
QuangAnhLe | 3:eb739df911ef | 159 | // Reset the char counter |
QuangAnhLe | 3:eb739df911ef | 160 | i = 0; |
QuangAnhLe | 3:eb739df911ef | 161 | } |
QuangAnhLe | 3:eb739df911ef | 162 | pc.printf("\n\n\nWaiting for SMS or call...\n"); |
QuangAnhLe | 3:eb739df911ef | 163 | pc.printf("\nThe last number was : %s", NUMBER); |
QuangAnhLe | 3:eb739df911ef | 164 | pc.printf("\nThe last message was : %s", MESSAGE); |
QuangAnhLe | 3:eb739df911ef | 165 | // Reset the GPRS buffer |
QuangAnhLe | 3:eb739df911ef | 166 | memset(GPRSbuffer, '0', 511); |
QuangAnhLe | 3:eb739df911ef | 167 | // Reset the char counter |
QuangAnhLe | 3:eb739df911ef | 168 | i = 0; |
QuangAnhLe | 2:3d3d272d2df2 | 169 | } |
QuangAnhLe | 1:2f617b92078b | 170 | |
QuangAnhLe | 0:ee1ae011cba6 | 171 | int main() { |
QuangAnhLe | 2:3d3d272d2df2 | 172 | /**/ |
QuangAnhLe | 3:eb739df911ef | 173 | memset(GPRSbuffer, '0', 511); |
QuangAnhLe | 2:3d3d272d2df2 | 174 | pc.printf("\r\n GSM 900 Test\n"); |
QuangAnhLe | 3:eb739df911ef | 175 | //SIM900.attach(&callback_rx); |
QuangAnhLe | 2:3d3d272d2df2 | 176 | SIM900.baud(9600); |
QuangAnhLe | 2:3d3d272d2df2 | 177 | wait_ms(100); |
QuangAnhLe | 3:eb739df911ef | 178 | SIM900.printf("ATE0\r\n"); |
QuangAnhLe | 3:eb739df911ef | 179 | pc.printf("\nGPRS echo [OFF]\n"); |
QuangAnhLe | 3:eb739df911ef | 180 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 181 | // Delete all messages on the sim card |
QuangAnhLe | 3:eb739df911ef | 182 | SIM900.printf("AT+CMGDA=\"DEL ALL\"\r\n"); |
QuangAnhLe | 3:eb739df911ef | 183 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 184 | pc.printf("\nMessages Cleared...\n"); |
QuangAnhLe | 3:eb739df911ef | 185 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 186 | //sendSMS(); |
QuangAnhLe | 2:3d3d272d2df2 | 187 | wait_ms(100); |
QuangAnhLe | 2:3d3d272d2df2 | 188 | /**/ |
QuangAnhLe | 0:ee1ae011cba6 | 189 | int error = 0; |
QuangAnhLe | 0:ee1ae011cba6 | 190 | printf("Welcome to the filesystem example.\r\n" |
QuangAnhLe | 0:ee1ae011cba6 | 191 | "Formatting a FAT, RAM-backed filesystem. "); |
QuangAnhLe | 0:ee1ae011cba6 | 192 | error = FATFileSystem::format(&bd); |
QuangAnhLe | 0:ee1ae011cba6 | 193 | return_error(error); |
QuangAnhLe | 1:2f617b92078b | 194 | |
QuangAnhLe | 0:ee1ae011cba6 | 195 | printf("Mounting the filesystem on \"/fs\". "); |
QuangAnhLe | 0:ee1ae011cba6 | 196 | error = fs.mount(&bd); |
QuangAnhLe | 0:ee1ae011cba6 | 197 | return_error(error); |
QuangAnhLe | 1:2f617b92078b | 198 | |
QuangAnhLe | 0:ee1ae011cba6 | 199 | printf("Opening a new file, numbers.txt."); |
QuangAnhLe | 2:3d3d272d2df2 | 200 | FILE* fd = fopen("/fs/numbers.txt", "a+"); |
QuangAnhLe | 0:ee1ae011cba6 | 201 | errno_error(fd); |
QuangAnhLe | 1:2f617b92078b | 202 | |
QuangAnhLe | 2:3d3d272d2df2 | 203 | //for (int i = 0; i < 20; i++){ |
QuangAnhLe | 2:3d3d272d2df2 | 204 | // printf("Writing decimal numbers to a file (%d/20)\r", i); |
QuangAnhLe | 2:3d3d272d2df2 | 205 | //fprintf(fd, "%d\r\n", i); |
QuangAnhLe | 2:3d3d272d2df2 | 206 | //} |
QuangAnhLe | 2:3d3d272d2df2 | 207 | fprintf(fd,"Latitude, Longitude,Altitude,Speed in knots, Date, Time,Number of satellites being tracked, IDs of satellites ins use, Fix, Fix mode\r\n"); |
QuangAnhLe | 1:2f617b92078b | 208 | //printf("Writing decimal numbers to a file (20/20) done.\r\n"); |
QuangAnhLe | 1:2f617b92078b | 209 | |
QuangAnhLe | 0:ee1ae011cba6 | 210 | printf("Closing file."); |
QuangAnhLe | 0:ee1ae011cba6 | 211 | fclose(fd); |
QuangAnhLe | 0:ee1ae011cba6 | 212 | printf(" done.\r\n"); |
QuangAnhLe | 1:2f617b92078b | 213 | |
QuangAnhLe | 0:ee1ae011cba6 | 214 | printf("Re-opening file read-only."); |
QuangAnhLe | 0:ee1ae011cba6 | 215 | fd = fopen("/fs/numbers.txt", "r"); |
QuangAnhLe | 0:ee1ae011cba6 | 216 | errno_error(fd); |
QuangAnhLe | 1:2f617b92078b | 217 | |
QuangAnhLe | 0:ee1ae011cba6 | 218 | printf("Dumping file to screen.\r\n"); |
QuangAnhLe | 0:ee1ae011cba6 | 219 | char buff[16] = {0}; |
QuangAnhLe | 0:ee1ae011cba6 | 220 | while (!feof(fd)){ |
QuangAnhLe | 0:ee1ae011cba6 | 221 | int size = fread(&buff[0], 1, 15, fd); |
QuangAnhLe | 0:ee1ae011cba6 | 222 | fwrite(&buff[0], 1, size, stdout); |
QuangAnhLe | 0:ee1ae011cba6 | 223 | } |
QuangAnhLe | 0:ee1ae011cba6 | 224 | printf("EOF.\r\n"); |
QuangAnhLe | 1:2f617b92078b | 225 | |
QuangAnhLe | 0:ee1ae011cba6 | 226 | printf("Closing file."); |
QuangAnhLe | 0:ee1ae011cba6 | 227 | fclose(fd); |
QuangAnhLe | 0:ee1ae011cba6 | 228 | printf(" done.\r\n"); |
QuangAnhLe | 1:2f617b92078b | 229 | |
QuangAnhLe | 0:ee1ae011cba6 | 230 | printf("Opening root directory."); |
QuangAnhLe | 0:ee1ae011cba6 | 231 | DIR* dir = opendir("/fs/"); |
QuangAnhLe | 0:ee1ae011cba6 | 232 | errno_error(fd); |
QuangAnhLe | 1:2f617b92078b | 233 | |
QuangAnhLe | 0:ee1ae011cba6 | 234 | struct dirent* de; |
QuangAnhLe | 0:ee1ae011cba6 | 235 | printf("Printing all filenames:\r\n"); |
QuangAnhLe | 0:ee1ae011cba6 | 236 | while((de = readdir(dir)) != NULL){ |
QuangAnhLe | 0:ee1ae011cba6 | 237 | printf(" %s\r\n", &(de->d_name)[0]); |
QuangAnhLe | 0:ee1ae011cba6 | 238 | } |
QuangAnhLe | 1:2f617b92078b | 239 | |
QuangAnhLe | 0:ee1ae011cba6 | 240 | printf("Closing root directory. "); |
QuangAnhLe | 0:ee1ae011cba6 | 241 | error = closedir(dir); |
QuangAnhLe | 0:ee1ae011cba6 | 242 | return_error(error); |
QuangAnhLe | 0:ee1ae011cba6 | 243 | printf("Filesystem Demo complete.\r\n"); |
QuangAnhLe | 2:3d3d272d2df2 | 244 | wait(2); |
QuangAnhLe | 1:2f617b92078b | 245 | while (true) { |
QuangAnhLe | 1:2f617b92078b | 246 | pc.printf("\n"); |
QuangAnhLe | 1:2f617b92078b | 247 | wait(1); |
QuangAnhLe | 1:2f617b92078b | 248 | if(gps.sample()){ |
QuangAnhLe | 1:2f617b92078b | 249 | float latitude = gps.latitude; |
QuangAnhLe | 1:2f617b92078b | 250 | float longitude = gps.longitude; |
QuangAnhLe | 1:2f617b92078b | 251 | float altitude = gps.altitude; |
QuangAnhLe | 2:3d3d272d2df2 | 252 | //float direction =0.0; |
QuangAnhLe | 1:2f617b92078b | 253 | float utc = gps.utc+20000; |
QuangAnhLe | 1:2f617b92078b | 254 | //int sek=gps.sek; |
QuangAnhLe | 1:2f617b92078b | 255 | //int min=gps.min; |
QuangAnhLe | 1:2f617b92078b | 256 | //int hour=gps.hour; |
QuangAnhLe | 1:2f617b92078b | 257 | int sat_tracked=gps. sat_tracked; |
QuangAnhLe | 1:2f617b92078b | 258 | int fix=gps.fix; |
QuangAnhLe | 1:2f617b92078b | 259 | int fix_3d=gps.fix_3d; |
QuangAnhLe | 1:2f617b92078b | 260 | int id1=gps.id1; |
QuangAnhLe | 1:2f617b92078b | 261 | int id2=gps.id2; |
QuangAnhLe | 1:2f617b92078b | 262 | int id3=gps.id3; |
QuangAnhLe | 1:2f617b92078b | 263 | int id4=gps.id4; |
QuangAnhLe | 1:2f617b92078b | 264 | int id5=gps.id5; |
QuangAnhLe | 1:2f617b92078b | 265 | int id6=gps.id6; |
QuangAnhLe | 1:2f617b92078b | 266 | int id7=gps.id7; |
QuangAnhLe | 1:2f617b92078b | 267 | int id8=gps.id8; |
QuangAnhLe | 1:2f617b92078b | 268 | int id9=gps.id9; |
QuangAnhLe | 1:2f617b92078b | 269 | int id10=gps.id10; |
QuangAnhLe | 1:2f617b92078b | 270 | int id11=gps.id11; |
QuangAnhLe | 1:2f617b92078b | 271 | int id12=gps.id12; |
QuangAnhLe | 2:3d3d272d2df2 | 272 | //double hdop=gps.hdop; |
QuangAnhLe | 2:3d3d272d2df2 | 273 | //double pdop=gps.pdop; |
QuangAnhLe | 1:2f617b92078b | 274 | float speed=gps.speed; |
QuangAnhLe | 1:2f617b92078b | 275 | int date=gps.date; |
QuangAnhLe | 1:2f617b92078b | 276 | //char aut=gps.aut; |
QuangAnhLe | 1:2f617b92078b | 277 | //float vdop=gps.vdop; |
QuangAnhLe | 1:2f617b92078b | 278 | //int chek_data=gps.check_data; |
QuangAnhLe | 2:3d3d272d2df2 | 279 | //pc.printf("Latitude, Longitude,Altitude, Direction, Speed in knots, Date, Time, Satellites in use, Satellites in view, IDs of satellites ins use, Fix, Fix mode, PDOP, HDOP\r\n"); |
QuangAnhLe | 2:3d3d272d2df2 | 280 | //pc.printf("%0.6f,%0.6f,%0.3f,%0.2f,%0.2f,%d,%0.0f,%d,",latitude,longitude,altitude,direction,speed,date,utc, sat_tracked); |
QuangAnhLe | 2:3d3d272d2df2 | 281 | //pc.printf("%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d,",id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12); |
QuangAnhLe | 2:3d3d272d2df2 | 282 | //pc.printf("%d,%d,%.2f,%.2f\r\n",fix,fix_3d,pdop,hdop); |
QuangAnhLe | 1:2f617b92078b | 283 | //pc.printf("%d",date); |
QuangAnhLe | 3:eb739df911ef | 284 | |
QuangAnhLe | 3:eb739df911ef | 285 | |
QuangAnhLe | 3:eb739df911ef | 286 | |
QuangAnhLe | 3:eb739df911ef | 287 | /*pc.printf("Latitude: %0.6f\r\n",latitude); |
QuangAnhLe | 1:2f617b92078b | 288 | pc.printf("Longitude:%0.6f\r\n",longitude); |
QuangAnhLe | 1:2f617b92078b | 289 | pc.printf("Altitude: %0.3f\r\n",altitude); |
QuangAnhLe | 1:2f617b92078b | 290 | pc.printf("Speed in knots: %0.2f\r\n",speed); |
QuangAnhLe | 1:2f617b92078b | 291 | pc.printf("Date: %d\r\n",date); |
QuangAnhLe | 1:2f617b92078b | 292 | pc.printf("Time UTC: %0.0f\r\n",utc); |
QuangAnhLe | 1:2f617b92078b | 293 | pc.printf("Number of satellites being tracked: %d\r\n", sat_tracked); |
QuangAnhLe | 1:2f617b92078b | 294 | pc.printf("PRNs of satellites used for fix:\r\n"); |
QuangAnhLe | 1:2f617b92078b | 295 | pc.printf("ID1:%d,ID2:%d,ID3:%d,ID4:%d,ID5:%d,ID6:%d\r\n",id1,id2,id3,id4,id5,id6); |
QuangAnhLe | 1:2f617b92078b | 296 | pc.printf("ID7:%d,ID8:%d,ID9:%d,ID10:%d,ID11:%d,ID12:%d\r\n",id7,id8,id9,id10,id11,id12); |
QuangAnhLe | 1:2f617b92078b | 297 | pc.printf("Fix quality: %d - value include 0=invalid; 1=GPS fix\r\n",fix); |
QuangAnhLe | 1:2f617b92078b | 298 | pc.printf("3D fix: %d - value include: 1 = no fix, 2 = 2D fix, 3 = 3D fix\r\n\n", fix_3d); |
QuangAnhLe | 3:eb739df911ef | 299 | pc.printf("****************************************************************\r\n");*/ |
QuangAnhLe | 3:eb739df911ef | 300 | |
QuangAnhLe | 1:2f617b92078b | 301 | |
QuangAnhLe | 1:2f617b92078b | 302 | FILE* fd = fopen("/fs/numbers.txt", "a+"); |
QuangAnhLe | 2:3d3d272d2df2 | 303 | //errno_error(fd); |
QuangAnhLe | 2:3d3d272d2df2 | 304 | if(fd != NULL) |
QuangAnhLe | 2:3d3d272d2df2 | 305 | { |
QuangAnhLe | 2:3d3d272d2df2 | 306 | printf("write file.\r\n"); |
QuangAnhLe | 2:3d3d272d2df2 | 307 | fprintf(fd,"%0.6f,%0.6f,%0.3f,%0.2f,%d,%0.0f,%d,%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d,%d,%d\r\n",latitude, longitude, altitude, speed, date, utc, sat_tracked, id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12, fix,fix_3d); |
QuangAnhLe | 2:3d3d272d2df2 | 308 | //fclose(fd); |
QuangAnhLe | 2:3d3d272d2df2 | 309 | printf("Closing file.\r\n"); |
QuangAnhLe | 2:3d3d272d2df2 | 310 | fclose(fd); |
QuangAnhLe | 2:3d3d272d2df2 | 311 | printf(" done.\r\n"); |
QuangAnhLe | 2:3d3d272d2df2 | 312 | } |
QuangAnhLe | 1:2f617b92078b | 313 | |
QuangAnhLe | 2:3d3d272d2df2 | 314 | //printf("Re-opening file read-only."); |
QuangAnhLe | 2:3d3d272d2df2 | 315 | //fd = fopen("/fs/numbers.txt", "r"); |
QuangAnhLe | 2:3d3d272d2df2 | 316 | //errno_error(fd); |
QuangAnhLe | 2:3d3d272d2df2 | 317 | |
QuangAnhLe | 2:3d3d272d2df2 | 318 | wait(1); |
QuangAnhLe | 3:eb739df911ef | 319 | //parseSMS(); |
QuangAnhLe | 3:eb739df911ef | 320 | sendSMS(); |
QuangAnhLe | 3:eb739df911ef | 321 | wait(1); |
QuangAnhLe | 2:3d3d272d2df2 | 322 | //for (int i = 0; i < 20; i++){ |
QuangAnhLe | 2:3d3d272d2df2 | 323 | // printf("Writing decimal numbers to a file (%d/20)\r", i); |
QuangAnhLe | 2:3d3d272d2df2 | 324 | //fprintf(fd, "%d\r\n", i); |
QuangAnhLe | 2:3d3d272d2df2 | 325 | //} |
QuangAnhLe | 1:2f617b92078b | 326 | //fprintf(fd,"Latitude, Longitude,Altitude,Speed in knots, Date, Time,Number of satellites being tracked, IDs of satellites ins use, Fix, Fix mode,\r\n"); |
QuangAnhLe | 2:3d3d272d2df2 | 327 | //fprintf(fd,"%0.6f,%0.6f,%0.3f,%0.2f,%d,%0.0f,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",latitude, longitude, altitude, speed, date, utc, sat_tracked, id1,id2,id3,id4,id5,id6,id7,id8,id9,id10,id11,id12, fix,fix_3d); |
QuangAnhLe | 1:2f617b92078b | 328 | } |
QuangAnhLe | 2:3d3d272d2df2 | 329 | } |
QuangAnhLe | 1:2f617b92078b | 330 | } |