Display a message on PC using UART.

Dependencies:   mbed

Committer:
Anuprit123
Date:
Sat Oct 08 15:48:41 2016 +0000
Revision:
2:c9378e6122a7
Parent:
1:e9d1c42a73ae
gps using stm32f030;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:028fac66239d 1 #include "mbed.h"
Anuprit123 2:c9378e6122a7 2 #include <string.h>
bcostm 1:e9d1c42a73ae 3
bcostm 1:e9d1c42a73ae 4 //------------------------------------
bcostm 1:e9d1c42a73ae 5 // Hyperterminal configuration
bcostm 1:e9d1c42a73ae 6 // 9600 bauds, 8-bit data, no parity
bcostm 1:e9d1c42a73ae 7 //------------------------------------
bcostm 1:e9d1c42a73ae 8
bcostm 0:028fac66239d 9 Serial pc(SERIAL_TX, SERIAL_RX);
Anuprit123 2:c9378e6122a7 10 Serial gps(PA_2, PA_3);
Anuprit123 2:c9378e6122a7 11 /*
Anuprit123 2:c9378e6122a7 12 * Author: Edoardo De Marchi
Anuprit123 2:c9378e6122a7 13 * Date: 22-08-14
Anuprit123 2:c9378e6122a7 14 * Notes: Firmware for GPS U-Blox NEO-6M
Anuprit123 2:c9378e6122a7 15 */
Anuprit123 2:c9378e6122a7 16
Anuprit123 2:c9378e6122a7 17
Anuprit123 2:c9378e6122a7 18 char cDataBuffer[500];
Anuprit123 2:c9378e6122a7 19 int i = 0;
Anuprit123 2:c9378e6122a7 20
Anuprit123 2:c9378e6122a7 21
Anuprit123 2:c9378e6122a7 22 void Init();
Anuprit123 2:c9378e6122a7 23 void parse(char *cmd, int n);
Anuprit123 2:c9378e6122a7 24
Anuprit123 2:c9378e6122a7 25 void Init()
Anuprit123 2:c9378e6122a7 26 {
Anuprit123 2:c9378e6122a7 27 gps.baud(9600);
Anuprit123 2:c9378e6122a7 28 pc.baud(9600);
Anuprit123 2:c9378e6122a7 29
Anuprit123 2:c9378e6122a7 30 pc.printf("Init OK\n");
bcostm 0:028fac66239d 31 }
Anuprit123 2:c9378e6122a7 32
Anuprit123 2:c9378e6122a7 33
Anuprit123 2:c9378e6122a7 34
Anuprit123 2:c9378e6122a7 35 int main()
Anuprit123 2:c9378e6122a7 36 {
Anuprit123 2:c9378e6122a7 37 Init();
Anuprit123 2:c9378e6122a7 38 char c;
Anuprit123 2:c9378e6122a7 39
Anuprit123 2:c9378e6122a7 40 while(true)
Anuprit123 2:c9378e6122a7 41 {
Anuprit123 2:c9378e6122a7 42 if(gps.readable())
Anuprit123 2:c9378e6122a7 43 {
Anuprit123 2:c9378e6122a7 44 if(gps.getc() == '$'); // wait a $
Anuprit123 2:c9378e6122a7 45 {
Anuprit123 2:c9378e6122a7 46 for(int i=0; i<sizeof(cDataBuffer); i++)
Anuprit123 2:c9378e6122a7 47 {
Anuprit123 2:c9378e6122a7 48 c = gps.getc();
Anuprit123 2:c9378e6122a7 49 if( c == '\r' )
Anuprit123 2:c9378e6122a7 50 {
Anuprit123 2:c9378e6122a7 51 //pc.printf("%s\n", cDataBuffer);
Anuprit123 2:c9378e6122a7 52 parse(cDataBuffer, i);
Anuprit123 2:c9378e6122a7 53 i = sizeof(cDataBuffer);
Anuprit123 2:c9378e6122a7 54 }
Anuprit123 2:c9378e6122a7 55 else
Anuprit123 2:c9378e6122a7 56 {
Anuprit123 2:c9378e6122a7 57 cDataBuffer[i] = c;
Anuprit123 2:c9378e6122a7 58 }
Anuprit123 2:c9378e6122a7 59 }
Anuprit123 2:c9378e6122a7 60 }
Anuprit123 2:c9378e6122a7 61 }
Anuprit123 2:c9378e6122a7 62 }
Anuprit123 2:c9378e6122a7 63 }
Anuprit123 2:c9378e6122a7 64
Anuprit123 2:c9378e6122a7 65
Anuprit123 2:c9378e6122a7 66 void parse(char *cmd, int n)
Anuprit123 2:c9378e6122a7 67 {
Anuprit123 2:c9378e6122a7 68
Anuprit123 2:c9378e6122a7 69 char ns, ew, tf, status;
Anuprit123 2:c9378e6122a7 70 int fq, nst, fix, date; // fix quality, Number of satellites being tracked, 3D fix
Anuprit123 2:c9378e6122a7 71 float latitude, longitude, timefix, speed, altitude;
Anuprit123 2:c9378e6122a7 72
Anuprit123 2:c9378e6122a7 73
Anuprit123 2:c9378e6122a7 74 // Global Positioning System Fix Data
Anuprit123 2:c9378e6122a7 75 if(strncmp(cmd,"$GPGGA", 6) == 0)
Anuprit123 2:c9378e6122a7 76 {
Anuprit123 2:c9378e6122a7 77 sscanf(cmd, "$GPGGA,%f,%f,%c,%f,%c,%d,%d,%*f,%f", &timefix, &latitude, &ns, &longitude, &ew, &fq, &nst, &altitude);
Anuprit123 2:c9378e6122a7 78 pc.printf("GPGGA Fix taken at: %f, Latitude: %f %c, Longitude: %f %c, Fix quality: %d, Number of sat: %d, Altitude: %f M\n", timefix, latitude, ns, longitude, ew, fq, nst, altitude);
Anuprit123 2:c9378e6122a7 79 }
Anuprit123 2:c9378e6122a7 80
Anuprit123 2:c9378e6122a7 81 // Satellite status
Anuprit123 2:c9378e6122a7 82 if(strncmp(cmd,"$GPGSA", 6) == 0)
Anuprit123 2:c9378e6122a7 83 {
Anuprit123 2:c9378e6122a7 84 sscanf(cmd, "$GPGSA,%c,%d,%d", &tf, &fix, &nst);
Anuprit123 2:c9378e6122a7 85 pc.printf("GPGSA Type fix: %c, 3D fix: %d, number of sat: %d\r\n", tf, fix, nst);
Anuprit123 2:c9378e6122a7 86 }
Anuprit123 2:c9378e6122a7 87
Anuprit123 2:c9378e6122a7 88 // Geographic position, Latitude and Longitude
Anuprit123 2:c9378e6122a7 89 if(strncmp(cmd,"$GPGLL", 6) == 0)
Anuprit123 2:c9378e6122a7 90 {
Anuprit123 2:c9378e6122a7 91 sscanf(cmd, "$GPGLL,%f,%c,%f,%c,%f", &latitude, &ns, &longitude, &ew, &timefix);
Anuprit123 2:c9378e6122a7 92 pc.printf("GPGLL Latitude: %f %c, Longitude: %f %c, Fix taken at: %f\n", latitude, ns, longitude, ew, timefix);
Anuprit123 2:c9378e6122a7 93 }
Anuprit123 2:c9378e6122a7 94
Anuprit123 2:c9378e6122a7 95 // Geographic position, Latitude and Longitude
Anuprit123 2:c9378e6122a7 96 if(strncmp(cmd,"$GPRMC", 6) == 0)
Anuprit123 2:c9378e6122a7 97 {
Anuprit123 2:c9378e6122a7 98 sscanf(cmd, "$GPRMC,%f,%c,%f,%c,%f,%c,%f,,%d", &timefix, &status, &latitude, &ns, &longitude, &ew, &speed, &date);
Anuprit123 2:c9378e6122a7 99 pc.printf("GPRMC Fix taken at: %f, Status: %c, Latitude: %f %c, Longitude: %f %c, Speed: %f, Date: %d\n", timefix, status, latitude, ns, longitude, ew, speed, date);
Anuprit123 2:c9378e6122a7 100 }
Anuprit123 2:c9378e6122a7 101 }
Anuprit123 2:c9378e6122a7 102
Anuprit123 2:c9378e6122a7 103
Anuprit123 2:c9378e6122a7 104
Anuprit123 2:c9378e6122a7 105