You are on page 1of 3

/*** Brigosha Library***/ #include "EAB_GPS.h" #include "EAB_ISR.h" #include "EAB_UART.h" #include "EAB_HardwareConfig.

h" int i, j, score=0, count=0; U8 U8 U8 U8 U8 U8 U8 GPS_data[GPS_Buffer]; index[14]; start_string[7] = "$GPGGA"; check_string[7]; array_pos; Start_flag=0; search_counter=0;

//U8 GPS_state; /*** structure calling ***/ typedef struct { //$GPGGA data variable unsigned char time[15], latitude_coordinate[15],latitude_dir, longitude_coor dinate[15],longitude_dir; unsigned char no_satellites, HDOP[15], altitude[5], WGS[15]; //$RMC data variables unsigned char status_indicator, speed[15], heading[15]; } GPS; GPS d1; U8 v_tempPos_U8 = 0; /*** Data Extraction***/ void data_extraction(void) { /*** SEARCH THE GPGGA STRING ***/ if((Start_flag==1) && (array_pos>6)) { for(i=0;i<6;i++) { check_string[i] = GPS_data[i]; if(check_string[i] == start_string[i]) { score++; count=0; Start_flag=0; search_counter=6; } } //TX2REG = score; while(!TX2STAbits.TRMT); // TX2REG = GPS_data[i]; } /*** SEARCH THE DELIMITERS ***/ if(score==6) { v_tempPos_U8 = array_pos;

//

for(i=search_counter;i<v_tempPos_U8;i++) { if(GPS_data[i]==',') { index[count]=i; count++; } if (GPS_data[i]=='*') { index[12]=i; index[13]=0; TX2REG=count;while(!TX2STAbits.TRMT); M_Toggle(LATCbits.LATC0); score=0; } } search_counter = v_tempPos_U8; } for(i=0;i<13;i++) { switch(i) { // 0 to 11 store ',' case 0 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 1 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 2 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 3 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 4 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 5 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 6 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 7 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 8 : while(!TX2STAbits.TRMT); TX2REG='/'; break;

case 9 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 10 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 11 : while(!TX2STAbits.TRMT); TX2REG='/'; break; case 12 : while(!TX2STAbits.TRMT); TX2REG='/'; // store '*' break; } for (j=index[i];j<(index[i+1]-1);j++) { while(!TX2STAbits.TRMT); TX2REG=GPS_data[j+1]; } TX2REG='//'; }

// // // // // // // // // // // // // // // // // }

for (i=index[1];i<(index[2]-1);i++) { d1.latitude_coordinate[i]=GPS_data[i+1]; while(!TX2STAbits.TRMT); TX2REG=d1.latitude_coordinate[i]; } while(!TX2STAbits.TRMT); TX2REG='//'; for (i=index[3];i<(index[4]-1);i++) { d1.longitude_coordinate[i]=GPS_data[i+1]; TX2REG=d1.longitude_coordinate[i]; while(!TX2STAbits.TRMT); } TX2REG='/';

You might also like