|
发表于 2023-6-3 15:28:29
|
显示全部楼层
本帖最后由 梁工 于 2023-6-3 15:36 编辑
其实接收处理GPS模块的报文很简单的。
报文波特率一般默认是9600,1秒1次发报文,1.04ms一个字节,进中断保存一个字节至接收缓冲数组,一般不超过2us(STC8系列,主频22.1184M),占CPU时间0.2%,基本可以忽略。
就算设置为115200,86.8us一个字节,占比也是2.3%,不存在占用大量系统资源的说法。
报文以回车换行(0x0d 0x0a)结束,将报文提交给主程序区处理。
主程序发现收到一个报文,先搜索报文名称,然后根据报文内容提出需要的数据。
比如北斗模块的GPRMC报文如下:
未定位: $GPRMC,013332.00,V,,,,,,,060321,,,N*7B
已定位: $GPRMC,013333.00,A,2232.62026,N,11358.30066,E,0.178,,060321,,,A*75
字段: 0 1 2 3 4 5 6 7 8 9 10 11 12
字段0: $GPRMC, 语句ID, 表明该语句为Recommended Minimum Specific GPS/TRANSIT Data (RMC) 推荐最小定位信息
字段1: UTC时间, hhmmss.sss格式
字段2: 状态, A=定位, V=未定位
字段3: 纬度ddmm.mmmm, 度分格式(前导位数不足则补0)
字段4: 纬度N(北纬)或S(南纬)
字段5: 经度dddmm.mmmm, 度分格式(前导位数不足则补0)
字段6: 经度E(东经)或W(西经)
字段7: 速度, 节, Knots
字段8: 方位角, 度
字段9: UTC日期, DDMMYY格式
字段10: 磁偏角, (000 - 180)度(前导位数不足则补0)
字段11: 磁偏角方向, E=东W=西
字段12: 校验值
|
|