c语言解码GPS--实现篇(三)

2014-11-23 23:36:30 · 作者: · 浏览: 24

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;
}