GPS C语言

typedef unsigned int UINT;
typedef int BYTE;
typedef struct __gprmc__
{
UINT time;/* gps定位时间 */
char pos_state;/*gps状态位*/
float latitude;/*纬度 */
float longitude;/* 经度 */
float speed; /* 速度 */
float direction;/*航向 */
UINT date; /*日期 */
float declination; /* 磁偏角 */
char dd;
char mode;/* GPS模式位 */
}GPRMC;

int gps_analyse (char *buff,GPRMC *gps_data)
{
char *ptr=NULL;
if(gps_data==NULL)
{return -1;
}
if(strlen(buff)<10)
{return -1;
}
/* 如果buff字符串中包含字符"$GPRMC"则将$GPRMC的地址赋值给ptr */
if(NULL==(ptr=strstr(buff,"$GPRMC")))
{return -1;
}
/* sscanf函数为从字符串输入,意思是将ptr内存单元的值作为输入分别输入到后面的结构体成员 */
sscanf(ptr,"$GPRMC,%d.000,%c,%f,N,%f,E,%f,%f,%d,,,%c*",&(gps_data->time),&(gps_data->pos_state
),&(gps_data->latitude),&(gps_data->longitude),&(gps_data->speed),&(gps_data->direction),&
(gps_data->date),&(gps_data->mode));
return 0;
}
int print_gps (GPRMC *gps_data)
{
printf(" \n");
printf(" \n");
printf
("===========================================================\n");
printf("== 全球GPS定位导航模块 ==\n");
printf("== Author:zoulei ==\n");
printf("== Email:zoulei121@gmail.com ==\n");
printf("== Platform:fl2440 ==\n");
printf("===========================================================\n");
printf(" \n");
printf("===========================================================\n");
printf("== GPS state bit : %c [A:有效状态 V:无效状态] \n",gps_data->pos_state);
printf("== GPS mode bit : %c [A:自主定位 D:差分定位] \n", gps_data->mode);
printf("== Date : 20%02d-%02d-%02d \n",gps_data->date%100,(gps_data-
>date%10000)/100,gps_data->date/10000);
printf("== Time : %02d:%02d:%02d \n",(gps_data->time/10000+8)%24,(gps_data-
>time%10000)/100,gps_data->time%100);
printf("== 纬度 : 北纬:%d度%d分%d秒 \n", ((int)gps_data->latitude) / 100, (int)(gps_data->latitude -
((int)gps_data->latitude / 100 * 100)), (int)(((gps_data->latitude - ((int)gps_data->latitude / 100 * 100))
- ((int)gps_data->latitude - ((int)gps_data->latitude / 100 * 100))) * 60.0));
printf("== 经度 : 东经:%d度%d分%d秒 \n", ((int)gps_data->longitude) / 100, (int)(gps_data->longitude -
((int)gps_data->longitude / 100 * 100)), (int)(((gps_data->longitude - ((int)gps_data->longitude / 100
* 100)) - ((int)gps_data->longitude - ((int)gps_data->longitude / 100 * 100))) * 60.0));
printf("== 速度 : %.3f m/s \n",gps_data->speed);
printf("== \n");
printf("============================================================\n");
return 0;
}

GPS数据处理的C语言程序? - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值