📄 gpsdecode.c
字号:
#include <stdio.h>
#define INFO_GPGGA 1
struct inf_gpgga
{
char hour;//时(UTC)
char min;//分
float sec;//秒
//
unsigned char Lat_dd;
float lat_mm_mmmmm;
char ns;
//
unsigned char LONG_ddd;
float LONG_mm_mmmmm;
char ew;
//
int height;
char unit[6];
};
struct gpsinfo
{
int type;
struct inf_gpgga gpgga;
};
int main()
{
int a,b;
float c = 0.0;
a = b = 0;
scanf("%2d%2d%f", &a, &b, &c);
printf("\n%d, %d, %f\n", a, b, c);
}
char GetGPSChar()
{
return 0;
}
/*获取GPS消息的一个字段*/
int GetMsgField(char *buf, size_t size)
{
int i;
for(i=0; i<size; i++, buf++)
{
*buf = GetGPSChar();
if(*buf == ',' || *buf == '\r' || *buf == '\n')
{
*buf = '\0';
break;
}
}
return i;
}
int decode_GPGGA(struct inf_gpgga * ptr)
{
char str[32];
int len;
len = GetMsgField(str, sizeof(str));
/*ptr->hour = (str[0]-'0')*10 + (str[1]-'0');
ptr->min = (str[2]-'0')*10 + (str[3]-'0');
ptr->sec = (str[4]-'0')*10 + (str[5]-'0') +*/
sscanf(str, "%2d%2d%", &ptr->hour, &ptr->min, &ptr->sec);
return 0;
}
int gpsdecode(struct gpsinfo * ptr)
{
char buf[32];
int len;
while(GetGPSChar() != '$');
len = GetMsgField(buf, sizeof(buf));
if(!strncmp(buf, "GPGGA", len))
{
ptr->type = INFO_GPGGA;
return decode_GPGGA(&ptr->gpgga);
}
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -