目的地へたどり着くアルゴリズム
Dependencies: MPU9250_SPI TA7291P mbed
HeptaGPS.cpp
- Committer:
- tomoya123
- Date:
- 2017-03-17
- Revision:
- 0:5fef60d1a47e
File content as of revision 0:5fef60d1a47e:
#include "HeptaGPS.h" #include "mbed.h" HeptaGPS::HeptaGPS(PinName tx, PinName rx) : gps(tx,rx) { } void HeptaGPS::flushSerialBuffer(void) { while (gps.readable()) { gps.getc(); } return; } void HeptaGPS::sensing_u16(char* lad,char* log, int *dsize) { char gph1[8]={0x00},gph2[8]={0x00},gph3[8]={0x00},gph4[8]={0x00},gpt1[8]={0x00},gpt2[8]={0x00},gpt3[8]={0x00},gpt4[8]={0x00}; int i=0,j=0; while (gps.readable()){ gps.getc(); } loop: while(gps.getc()!='$'){} for(j=0;j<5;j++){ gps_data[1][j]=gps.getc(); } if((gps_data[1][2]==0x52)&(gps_data[1][3]==0x4d)&(gps_data[1][4]==0x43)){ for(j=0;j<1;j++){ if(j==0){ i=0; while((gps_data[j+1][i+5] = gps.getc()) != '\r'){ //pc.putc(gps_data[j+1][i+5]); i++; } gps_data[j+1][i+5]='\0'; i=0; //pc.printf("\n\r"); } else{ while(gps.getc()!='$'){} i=0; while((gps_data[j+1][i] = gps.getc()) != '\r'){ //pc.putc(gps_data[j+1][i]); i++; } gps_data[j+1][i]='\0'; i=0; //pc.printf("\n\r"); } } } else { goto loop; } if( sscanf(gps_data[1],"GPRMC,%f,%c,%f,%c,%f,%c,%f",&time,&statas,&hokui,&ns,&tokei,&ew,&vel) >= 1){ //hokui d_hokui=int(hokui/100); m_hokui=(hokui-d_hokui*100); //m_hokui=(hokui-d_hokui*100)/60; g_hokui=d_hokui+(hokui-d_hokui*100)/60; sprintf( gph1, "%02X", (char(d_hokui)) & 0xFF); sprintf( gph2, "%02X", (char(m_hokui)) & 0xFF); sprintf( gph3, "%02X", (char((m_hokui-char(m_hokui))*100)) & 0xFF); sprintf( gph4, "%02X", (char(((m_hokui-char(m_hokui))*100-char((m_hokui-char(m_hokui))*100))*100)) & 0xFF); //tokei d_tokei=int(tokei/100); m_tokei=(tokei-d_tokei*100); //m_tokei=(tokei-d_tokei*100)/60; g_tokei=d_tokei+(tokei-d_tokei*100)/60; sprintf( gpt1, "%02X", (char(d_tokei)) & 0xFF); sprintf( gpt2, "%02X", (char(m_tokei)) & 0xFF); sprintf( gpt3, "%02X", (char((m_tokei-char(m_tokei))*100)) & 0xFF); sprintf( gpt4, "%02X", (char(((m_tokei-char(m_tokei))*100-char((m_tokei-char(m_tokei))*100))*100)) & 0xFF); lad[0] = gph1[0]; lad[1] = gph1[1]; lad[2] = gph2[0]; lad[3] = gph2[1]; lad[4] = gph3[0]; lad[5] = gph3[1]; lad[6] = gph4[0]; lad[7] = gph4[1]; log[0] = gpt1[0]; log[1] = gpt1[1]; log[2] = gpt2[0]; log[3] = gpt2[1]; log[4] = gpt3[0]; log[5] = gpt3[1]; log[6] = gpt4[0]; log[7] = gpt4[1]; } *dsize = 8; } void HeptaGPS::sensing(float* lat, float* log ) { int i=0,j=0; while (gps.readable()) { gps.getc(); } loop: while(gps.getc()!='$'){} for(j=0;j<5;j++) { gps_data[1][j]=gps.getc(); } if((gps_data[1][2]==0x52)&(gps_data[1][3]==0x4d)&(gps_data[1][4]==0x43)) { for(j=0;j<1;j++){ if(j==0){ i=0; while((gps_data[j+1][i+5] = gps.getc()) != '\r'){ //pc.putc(gps_data[j+1][i+5]); i++; } gps_data[j+1][i+5]='\0'; i=0; //pc.printf("\n\r"); } else{ while(gps.getc()!='$'){} i=0; while((gps_data[j+1][i] = gps.getc()) != '\r'){ //pc.putc(gps_data[j+1][i]); i++; } gps_data[j+1][i]='\0'; i=0; //pc.printf("\n\r"); } } } else{ goto loop; } if( sscanf(gps_data[1],"GPRMC,%f,%c,%f,%c,%f,%c,%f",&time,&statas,&hokui,&ns,&tokei,&ew,&vel) >= 1){ //hokui d_hokui=int(hokui/100); m_hokui=(hokui-d_hokui*100); //m_hokui=(hokui-d_hokui*100)/60; *lat=d_hokui+(hokui-d_hokui*100)/60; //tokei d_tokei=int(tokei/100); m_tokei=(tokei-d_tokei*100); //m_tokei=(tokei-d_tokei*100)/60; *log = d_tokei+(tokei-d_tokei*100)/60; //pc.printf("Lat:%4.6f,Log:%4.6f\n\r",g_hokui,g_tokei); } }