|
@@ -57,8 +57,80 @@ C99标准
|
|
|
|
|
|
|
|
## 二十二、软件开发
|
|
## 二十二、软件开发
|
|
|
|
|
|
|
|
|
|
+### 软件说明
|
|
|
|
|
+
|
|
|
|
|
+- 头文件调用
|
|
|
|
|
+```c
|
|
|
|
|
+#include "nmeaparser.h"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+- 解析库初始化
|
|
|
|
|
+```c
|
|
|
|
|
+ struct nmea_parser parser[1];
|
|
|
|
|
+ nmea_parser_init(parser);
|
|
|
|
|
+ parser->report_nav_status = display_navdata;
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+- 解析完成回调
|
|
|
|
|
+```
|
|
|
|
|
+/*
|
|
|
|
|
+ * Print navigation data and wait for user's keystroke
|
|
|
|
|
+ * @navdata: the navigation data
|
|
|
|
|
+ */
|
|
|
|
|
+void display_navdata(struct nav_data *navdata) {
|
|
|
|
|
+ printf("NAVDATA:\n");
|
|
|
|
|
+ printf("NAVDATA.FIX_VALID = %d\n", navdata->is_fixed);
|
|
|
|
|
+ printf("NAVDATA.DATE = %d-%02d-%02d\n", navdata->date.year, navdata->date.month, navdata->date.day);
|
|
|
|
|
+ printf("NAVDATA.TIME= %02d:%02d:%02d.%03d\n", navdata->time.hour, navdata->time.minute, navdata->time.second, navdata->time.ms);
|
|
|
|
|
+ printf("NAVDATA.LAT = %.6f\n", navdata->lat);
|
|
|
|
|
+ printf("NAVDATA.LON = %.6f\n", navdata->lon);
|
|
|
|
|
+ printf("NAVDATA.ALT = %.2f\n", navdata->alt);
|
|
|
|
|
+ printf("NAVDATA.HEADING = %.2f\n", navdata->heading);
|
|
|
|
|
+ printf("NAVDATA.SPEED = %.2f\n", navdata->speed);
|
|
|
|
|
+ printf("NAVDATA.HDOP = %.1f\n", navdata->hdop);
|
|
|
|
|
+ printf("NAVDATA.VDOP = %.1f\n", navdata->vdop);
|
|
|
|
|
+ printf("NAVDATA.PDOP = %.1f\n", navdata->pdop);
|
|
|
|
|
+ printf("NAVDATA.NUM_SV_FIX = %d\n", navdata->sv_inuse);
|
|
|
|
|
+ printf("NAVDATA.NUM_SV_VIEW = %d\n", navdata->sv_inview);
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+- 解析串口数据
|
|
|
|
|
+解析完后需把串口接收缓存清空,以免影响下次数据的解析
|
|
|
|
|
+```
|
|
|
|
|
+ for (int i = 0; i < uart3Packet.len; i++) // parse nmea data
|
|
|
|
|
+ nmea_parser_putchar(parser, uart3Packet.packet[i]);
|
|
|
|
|
+ uart3Packet.isValid = false;
|
|
|
|
|
+ uart3Packet.len = 0;
|
|
|
|
|
+ memset(uart3Packet.packet, 0, sizeof(uart3Packet.packet));
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+- 解析结果说明
|
|
|
|
|
+```
|
|
|
|
|
+struct nav_data {
|
|
|
|
|
+ struct gnss_date date; // 日期
|
|
|
|
|
+ struct gnss_time time; // 时间
|
|
|
|
|
+ bool is_fixed; // 定位状态
|
|
|
|
|
+ double lat; // 纬度
|
|
|
|
|
+ double lon; // 经度
|
|
|
|
|
+ float alt; // 海拔
|
|
|
|
|
+ float speed; // 速度
|
|
|
|
|
+ float heading; // 航向角度
|
|
|
|
|
+ float hdop; // 水平精度
|
|
|
|
|
+ float vdop; // 垂直精度因子。反映高程(海拔)的精度。
|
|
|
|
|
+ float pdop; // 位置精度因子。反映三维位置的综合精度。
|
|
|
|
|
+ int sv_inuse; // 参与定位的卫星数量。即在计算当前位置时,实际使用了多少颗卫星的数据。
|
|
|
|
|
+ int sv_inview; // 当前可视的卫星数量。即接收机天空中视野范围内一共搜到了多少颗卫星。
|
|
|
|
|
+ int sv_count; // 卫星总数(具体含义取决于上下文,有时等同于 sv_inview,或者是用于遍历卫星数组的计数器)。
|
|
|
|
|
+ struct sate sates[MAX_SVID]; // 用来存储每一颗具体卫星的详细数据(如卫星ID、信噪比、仰角、方位角等)。
|
|
|
|
|
+};
|
|
|
|
|
+```
|
|
|
|
|
+### 注意事项
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
### 版本更新
|
|
### 版本更新
|
|
|
-#### V04
|
|
|
|
|
|
|
+#### V03
|
|
|
|
|
|
|
|
## 二十三、免责说明
|
|
## 二十三、免责说明
|
|
|
1、本工程驱动软件只提供做演示项目使用,未经过大批量项目验证,客户需谨慎使用,如果使用在正式项目中引发的所有问题,本司概不负责。使用过程若发现任何问题,可及时与本司相关人员联系。
|
|
1、本工程驱动软件只提供做演示项目使用,未经过大批量项目验证,客户需谨慎使用,如果使用在正式项目中引发的所有问题,本司概不负责。使用过程若发现任何问题,可及时与本司相关人员联系。
|