- typedef data struct{
-
double latitude; //经度 -
double longitude; //纬度 -
int latitude_Degree; //度 -
int latitude_Cent; //分 -
int latitude_Second; //秒 -
int longitude_Degree; //度 -
int longitude_Cent; //分 -
int longitude_Second; //秒 -
float speed; //速度 -
float direction; //航向 -
float height; //海拔高度 -
int satellite; -
U8 NS; -
U8 EW; -
DATE_TIME D; - }GPS_INFO;
- typedef struct{
-
int year; -
int month; -
int day; -
int hour; -
int minute; -
int second; - }DATE_TIME;
- int
GPS_RMC_Parse(char *line, GPS_INFO *GPS) - {
-
U8 ch, status, tmp; -
float lati_cent_tmp, lati_second_tmp; -
float long_cent_tmp, long_second_tmp; -
float speed_tmp; -
char *buf = line; -
ch = buf[5]; -
status = buf[GetComma(2, buf)]; -
if (ch == 'C') //如果第五个字符是C,($GPRMC) -
{ -
if (status == 'A') //如果数据有效,则分析 -
{ -
GPS->NS = buf[GetComma(4, buf)]; -
GPS->EW = buf[GetComma(6, buf)]; -
GPS->latitude = Get_Double_Number(&buf[GetComma(3, buf)]); -
GPS->longitude = Get_Double_Number(&buf[GetComma(5, buf)]); -
GPS->latitude_Degree = (int)GPS->latitude / 100; //分离纬度 -
lati_cent_tmp = (GPS->latitude - GPS->latitude_Degree * 100); -
GPS->latitude_Cent = (int)lati_cent_tmp; -
lati_second_tmp = (lati_cent_tmp - GPS->latitude_Cent) * 60; -
GPS->latitude_Second = (int)lati_second_tmp; -
GPS->longitude_Degree = (int)GPS->longitude / 100; //分离经度 -
long_cent_tmp = (GPS->longitude - GPS->longitude_Degree * 100); -
GPS->longitude_Cent = (int)long_cent_tmp; -
long_second_tmp = (long_cent_tmp - GPS->longitude_Cent) * 60; -
GPS->longitude_Second = (int)long_second_tmp; -
speed_tmp = Get_Float_Number(&buf[GetComma(7, buf)]); //速度(单位:海里/时) -
GPS->speed = speed_tmp * 1.85; //1海里=1.85公里 -
GPS->direction = Get_Float_Number(&buf[GetComma(8, buf)]); //角度 -
GPS->D.hour = (buf[7] - '0') * 10 + (buf[8] - '0'); //时间 -
GPS->D.minute = (buf[9] - '0') * 10 + (buf[10] - '0'); -
GPS->D.second = (buf[11] - '0') * 10 + (buf[12] - '0'); -
tmp = GetComma(9, buf); -
GPS->D.day = (buf[tmp + 0] - '0') * 10 + (buf[tmp + 1] - '0'); //日期 -
GPS->D.month = (buf[tmp + 2] - '0') * 10 + (buf[tmp + 3] - '0'); -
GPS->D.year = (buf[tmp + 4] - '0') * 10 + (buf[tmp + 5] - '0') + 2000; -
UTC2BTC(&GPS->D); -
-
return 1; -
} -
} -
-
return 0; - }
- int
GPS_GGA_Parse(char *line, GPS_INFO *GPS) - {
-
U8 ch, status; -
char *buf = line; -
ch = buf[4]; -
status = buf[GetComma(2, buf)]; -
if (ch == 'G') //$GPGGA -
{ -
if (status != ',') -
{ -
GPS->height = Get_Float_Number(&buf[GetComma(9, buf)]); -
GPS->satellite = Get_Int_Number(&buf[GetComma(7, buf)]); -
return 1; -
} -
} -
-
return 0; - }
上一篇:单片式以太网控制芯片W7100A / W7100 Debugger指南(二)
下一篇:单片机串行接口的控制与应用
推荐阅读最新更新时间:2024-03-16 14:33
设计资源 培训 开发板 精华推荐
- 面向集成电路、人工智能等领域,四川提职业技能提升计划
- 巴西iPhone12系列售价最贵;联通最快明年2G全面退网
- 信通院:10月国内5G手机出货1676万部,连续5个月占比超过60%
- 大族激光:核心部件自产率超90%,光刻机项目小批量销售
- 专注于人工智能与工业机器视觉技术研发,阿丘科技完成B轮
- 基于汽油直接喷射系统共轨压力信号的诊断方案
- 解读比亚迪e平台3.0,电池车身一体化,续航突破1000km
- 特斯拉激光挡风玻璃雨刮器专利获授权 用激光“洗车”?
- 详解 Mobileye 第一款量产 Robotaxi:基于蔚来 ES8 打造,搭载中国产激光雷达
- 2021年智能座舱设计趋势研究:向第三生活空间迈进