Quang Anh Le / GPS-Tracking-Velo

Dependencies:   MODSERIAL SDBlockDevice GPS

Committer:
QuangAnhLe
Date:
Fri Apr 12 17:48:39 2019 +0000
Revision:
1:2f617b92078b
Parent:
0:ee1ae011cba6
Child:
2:3d3d272d2df2
save data

Who changed what in which revision?

UserRevisionLine numberNew 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 1:2f617b92078b 17 GPS gps (PA_11,PA_12);
QuangAnhLe 0:ee1ae011cba6 18
QuangAnhLe 0:ee1ae011cba6 19 FATFileSystem fs("fs");
QuangAnhLe 0:ee1ae011cba6 20
QuangAnhLe 0:ee1ae011cba6 21 void return_error(int ret_val){
QuangAnhLe 0:ee1ae011cba6 22 if (ret_val)
QuangAnhLe 0:ee1ae011cba6 23 printf("Failure. %d\r\n", ret_val);
QuangAnhLe 0:ee1ae011cba6 24 else
QuangAnhLe 0:ee1ae011cba6 25 printf("done.\r\n");
QuangAnhLe 0:ee1ae011cba6 26 }
QuangAnhLe 1:2f617b92078b 27
QuangAnhLe 0:ee1ae011cba6 28 void errno_error(void* ret_val){
QuangAnhLe 0:ee1ae011cba6 29 if (ret_val == NULL)
QuangAnhLe 0:ee1ae011cba6 30 printf(" Failure. %d \r\n", errno);
QuangAnhLe 0:ee1ae011cba6 31 else
QuangAnhLe 0:ee1ae011cba6 32 printf(" done.\r\n");
QuangAnhLe 0:ee1ae011cba6 33 }
QuangAnhLe 1:2f617b92078b 34
QuangAnhLe 0:ee1ae011cba6 35 int main() {
QuangAnhLe 0:ee1ae011cba6 36 int error = 0;
QuangAnhLe 0:ee1ae011cba6 37 printf("Welcome to the filesystem example.\r\n"
QuangAnhLe 0:ee1ae011cba6 38 "Formatting a FAT, RAM-backed filesystem. ");
QuangAnhLe 0:ee1ae011cba6 39 error = FATFileSystem::format(&bd);
QuangAnhLe 0:ee1ae011cba6 40 return_error(error);
QuangAnhLe 1:2f617b92078b 41
QuangAnhLe 0:ee1ae011cba6 42 printf("Mounting the filesystem on \"/fs\". ");
QuangAnhLe 0:ee1ae011cba6 43 error = fs.mount(&bd);
QuangAnhLe 0:ee1ae011cba6 44 return_error(error);
QuangAnhLe 1:2f617b92078b 45
QuangAnhLe 0:ee1ae011cba6 46 printf("Opening a new file, numbers.txt.");
QuangAnhLe 0:ee1ae011cba6 47 FILE* fd = fopen("/fs/numbers.txt", "w");
QuangAnhLe 0:ee1ae011cba6 48 errno_error(fd);
QuangAnhLe 1:2f617b92078b 49
QuangAnhLe 1:2f617b92078b 50 /*for (int i = 0; i < 20; i++){
QuangAnhLe 0:ee1ae011cba6 51 printf("Writing decimal numbers to a file (%d/20)\r", i);
QuangAnhLe 0:ee1ae011cba6 52 fprintf(fd, "%d\r\n", i);
QuangAnhLe 1:2f617b92078b 53 }*/
QuangAnhLe 1:2f617b92078b 54 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 55 //printf("Writing decimal numbers to a file (20/20) done.\r\n");
QuangAnhLe 1:2f617b92078b 56
QuangAnhLe 0:ee1ae011cba6 57 printf("Closing file.");
QuangAnhLe 0:ee1ae011cba6 58 fclose(fd);
QuangAnhLe 0:ee1ae011cba6 59 printf(" done.\r\n");
QuangAnhLe 1:2f617b92078b 60
QuangAnhLe 0:ee1ae011cba6 61 printf("Re-opening file read-only.");
QuangAnhLe 0:ee1ae011cba6 62 fd = fopen("/fs/numbers.txt", "r");
QuangAnhLe 0:ee1ae011cba6 63 errno_error(fd);
QuangAnhLe 1:2f617b92078b 64
QuangAnhLe 0:ee1ae011cba6 65 printf("Dumping file to screen.\r\n");
QuangAnhLe 0:ee1ae011cba6 66 char buff[16] = {0};
QuangAnhLe 0:ee1ae011cba6 67 while (!feof(fd)){
QuangAnhLe 0:ee1ae011cba6 68 int size = fread(&buff[0], 1, 15, fd);
QuangAnhLe 0:ee1ae011cba6 69 fwrite(&buff[0], 1, size, stdout);
QuangAnhLe 0:ee1ae011cba6 70 }
QuangAnhLe 0:ee1ae011cba6 71 printf("EOF.\r\n");
QuangAnhLe 1:2f617b92078b 72
QuangAnhLe 0:ee1ae011cba6 73 printf("Closing file.");
QuangAnhLe 0:ee1ae011cba6 74 fclose(fd);
QuangAnhLe 0:ee1ae011cba6 75 printf(" done.\r\n");
QuangAnhLe 1:2f617b92078b 76
QuangAnhLe 0:ee1ae011cba6 77 printf("Opening root directory.");
QuangAnhLe 0:ee1ae011cba6 78 DIR* dir = opendir("/fs/");
QuangAnhLe 0:ee1ae011cba6 79 errno_error(fd);
QuangAnhLe 1:2f617b92078b 80
QuangAnhLe 0:ee1ae011cba6 81 struct dirent* de;
QuangAnhLe 0:ee1ae011cba6 82 printf("Printing all filenames:\r\n");
QuangAnhLe 0:ee1ae011cba6 83 while((de = readdir(dir)) != NULL){
QuangAnhLe 0:ee1ae011cba6 84 printf(" %s\r\n", &(de->d_name)[0]);
QuangAnhLe 0:ee1ae011cba6 85 }
QuangAnhLe 1:2f617b92078b 86
QuangAnhLe 0:ee1ae011cba6 87 printf("Closing root directory. ");
QuangAnhLe 0:ee1ae011cba6 88 error = closedir(dir);
QuangAnhLe 0:ee1ae011cba6 89 return_error(error);
QuangAnhLe 0:ee1ae011cba6 90 printf("Filesystem Demo complete.\r\n");
QuangAnhLe 1:2f617b92078b 91
QuangAnhLe 1:2f617b92078b 92 while (true) {
QuangAnhLe 1:2f617b92078b 93 pc.printf("\n");
QuangAnhLe 1:2f617b92078b 94 wait(1);
QuangAnhLe 1:2f617b92078b 95 if(gps.sample()){
QuangAnhLe 1:2f617b92078b 96 float latitude = gps.latitude;
QuangAnhLe 1:2f617b92078b 97 float longitude = gps.longitude;
QuangAnhLe 1:2f617b92078b 98 float altitude = gps.altitude;
QuangAnhLe 1:2f617b92078b 99 float direction =0.0;
QuangAnhLe 1:2f617b92078b 100 float utc = gps.utc+20000;
QuangAnhLe 1:2f617b92078b 101 //int sek=gps.sek;
QuangAnhLe 1:2f617b92078b 102 //int min=gps.min;
QuangAnhLe 1:2f617b92078b 103 //int hour=gps.hour;
QuangAnhLe 1:2f617b92078b 104 int sat_tracked=gps. sat_tracked;
QuangAnhLe 1:2f617b92078b 105 int fix=gps.fix;
QuangAnhLe 1:2f617b92078b 106 int fix_3d=gps.fix_3d;
QuangAnhLe 1:2f617b92078b 107 int id1=gps.id1;
QuangAnhLe 1:2f617b92078b 108 int id2=gps.id2;
QuangAnhLe 1:2f617b92078b 109 int id3=gps.id3;
QuangAnhLe 1:2f617b92078b 110 int id4=gps.id4;
QuangAnhLe 1:2f617b92078b 111 int id5=gps.id5;
QuangAnhLe 1:2f617b92078b 112 int id6=gps.id6;
QuangAnhLe 1:2f617b92078b 113 int id7=gps.id7;
QuangAnhLe 1:2f617b92078b 114 int id8=gps.id8;
QuangAnhLe 1:2f617b92078b 115 int id9=gps.id9;
QuangAnhLe 1:2f617b92078b 116 int id10=gps.id10;
QuangAnhLe 1:2f617b92078b 117 int id11=gps.id11;
QuangAnhLe 1:2f617b92078b 118 int id12=gps.id12;
QuangAnhLe 1:2f617b92078b 119 double hdop=gps.hdop;
QuangAnhLe 1:2f617b92078b 120 double pdop=gps.pdop;
QuangAnhLe 1:2f617b92078b 121 float speed=gps.speed;
QuangAnhLe 1:2f617b92078b 122 int date=gps.date;
QuangAnhLe 1:2f617b92078b 123 //char aut=gps.aut;
QuangAnhLe 1:2f617b92078b 124 //float vdop=gps.vdop;
QuangAnhLe 1:2f617b92078b 125 //int chek_data=gps.check_data;
QuangAnhLe 1:2f617b92078b 126 /*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 1:2f617b92078b 127 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 1:2f617b92078b 128 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 1:2f617b92078b 129 pc.printf("%d,%d,%.2f,%.2f\r\n",fix,fix_3d,pdop,hdop);*/
QuangAnhLe 1:2f617b92078b 130 //pc.printf("%d",date);
QuangAnhLe 1:2f617b92078b 131 pc.printf("Latitude: %0.6f\r\n",latitude);
QuangAnhLe 1:2f617b92078b 132 pc.printf("Longitude:%0.6f\r\n",longitude);
QuangAnhLe 1:2f617b92078b 133 pc.printf("Altitude: %0.3f\r\n",altitude);
QuangAnhLe 1:2f617b92078b 134 pc.printf("Speed in knots: %0.2f\r\n",speed);
QuangAnhLe 1:2f617b92078b 135 pc.printf("Date: %d\r\n",date);
QuangAnhLe 1:2f617b92078b 136 pc.printf("Time UTC: %0.0f\r\n",utc);
QuangAnhLe 1:2f617b92078b 137 pc.printf("Number of satellites being tracked: %d\r\n", sat_tracked);
QuangAnhLe 1:2f617b92078b 138 pc.printf("PRNs of satellites used for fix:\r\n");
QuangAnhLe 1:2f617b92078b 139 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 140 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 141 pc.printf("Fix quality: %d - value include 0=invalid; 1=GPS fix\r\n",fix);
QuangAnhLe 1:2f617b92078b 142 pc.printf("3D fix: %d - value include: 1 = no fix, 2 = 2D fix, 3 = 3D fix\r\n\n", fix_3d);
QuangAnhLe 1:2f617b92078b 143 pc.printf("****************************************************************\r\n");
QuangAnhLe 1:2f617b92078b 144
QuangAnhLe 1:2f617b92078b 145 FILE* fd = fopen("/fs/numbers.txt", "a+");
QuangAnhLe 1:2f617b92078b 146 errno_error(fd);
QuangAnhLe 1:2f617b92078b 147
QuangAnhLe 1:2f617b92078b 148 /*for (int i = 0; i < 20; i++){
QuangAnhLe 1:2f617b92078b 149 printf("Writing decimal numbers to a file (%d/20)\r", i);
QuangAnhLe 1:2f617b92078b 150 fprintf(fd, "%d\r\n", i);
QuangAnhLe 1:2f617b92078b 151 }*/
QuangAnhLe 1:2f617b92078b 152 //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 153 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 154 }
QuangAnhLe 0:ee1ae011cba6 155 }
QuangAnhLe 1:2f617b92078b 156 }