Anuprit Singh Dangi
/
Nucleo_printf
Display a message on PC using UART.
main.cpp@2:c9378e6122a7, 2016-10-08 (annotated)
- 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?
User | Revision | Line number | New 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 |