if(i==2 || i==5) { GPS_DATA.GPS_date[i++]='-'; } GPS_DATA.GPS_date[8]='\0'; break; } } } void read_data(int fd) { char buffer[BUFF_SIZE],dest[1024]; char array[10]="$GPRMC"; int res,i=0,j=0,k; int data=1,len=0; memset(dest,0,sizeof(dest)); do { memset(buffer,0,sizeof(buffer)); //$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50 if(res=read(fd,buffer,1)>0) { //此处源源不断传入参数,一次读到数据可能为($GPRMC,024),res为读到长度,现在把每一位传入函数处理; strcat(dest,buffer); if(buffer[0]=='\n') { i=0; if(strncmp(dest,array,6)==0) { printf("%s",dest); len=strlen(dest); for(k=0;k { GPS_resolve_GPRMC(dest[k]); } SectionID=0; print_info(); } bzero(dest,sizeof(dest)); } } }while(1); close(fd); } int main(int argc,char*argv[]) { int fd=0; int HOST_COM_PORT=1; fd=open_port(HOST_COM_PORT); if(fd<0) { perror("open fail!"); } printf("open sucess!\n"); if((set_com_config(fd,9600,8,'N',1))<0) { perror("set_com_config fail!\n"); } printf("The received worlds are:\n"); read_data(fd); return 0; }
|