还在为GNSS定位的复杂代码头疼?exgnss扩展库为你扫清障碍!它提供简洁的接口和高效的工具链,从信号捕获到坐标解析一气呵成,开发效率直线飙升。
一、exgnss库的三种应用模式
exgnss库提供三种比较经典的应用模式,可根据实际项目需求灵活运用。
应用模式1:exgnss.DEFAULT
打开gnss后,gnss定位成功时,如果有回调函数,会调用回调函数;
使用此应用模式调用exgnss.open打开的“gnss应用”,必须主动调用exgnss.close;
或者exgnss.close_all才能关闭此“gnss应用”,主动关闭时,即使有回调函数,也不会调用回调函数。
通俗点说就是一直打开,除非自己手动关闭掉。
应用模式2:exgnss.TIMERORSUC
打开gnss后,如果在gnss开启最大时长到达时,没有定位成功,如果有回调函数,会调用回调函数,然后自动关闭此“gnss应用”;
打开gnss后,如果在gnss开启最大时长内,定位成功,如果有回调函数,会调用回调函数,然后自动关闭此“gnss应用”;
打开gnss后,在自动关闭此“gnss应用”前,可以调用exgnss.close或者exgnss.close_all主动关闭此“gnss应用”。主动关闭时,即使有回调函数,也不会调用回调函数。
通俗点说就是设置规定时间打开,如果规定时间内定位成功就会自动关闭此应用;如果没有定位成功,时间到了也会自动关闭此应用。
应用模式3:exgnss.TIMER
打开gnss后,在gnss开启最大时长时间到达时,无论是否定位成功,如果有回调函数,会调用回调函数,然后自动关闭此“gnss应用”;
打开gnss后,在自动关闭此“gnss应用”前,可以调用exgnss.close或者exgnss.close_all主动关闭此“gnss应用”。主动关闭时,即使有回调函数,也不会调用回调函数;
通俗点说就是设置规定时间打开,无论是否定位成功,到了时间都会自动关闭此应用;
和模式2的区别在于定位成功之后不会自动关闭,到时间之后才会自动关闭。

二、exgnss库应用示例
本文以Air8000整机开发板为例,分享exgnss库的三种应用模式应用要点。
最新源码下载及实操教程详见:https://docs.openluat.com/air8000/luatos/app/gnss/exgnss/
1. main.lua
主要用于加载exgnss扩展库,加载gnss代码。

2. gnss.lua
主要操作如下:
开启协程,运行gnss_fnc函数,通过exgnss.setup(gnssotps)配置gnss的参数,通过exgnss.open开启三种不同的应用。
等待40秒使用exgnss.close关闭TIMER模式,使用exgnss.close需要两个参数,第一个是exgnss应用模式,第二个是tag标签。
然后利用exgnss.is_active查询三种应用模式是否处于激活模式,查询应用是否处于激活状态同样需要两个参数,第一个是exgnss 应用模式,第二个是tag标签。
等待10秒使用exgnss.close_all关闭全部应用模式,再次查询三种模式是否处于激活模式。
然后使用xgnss.last_loc,获取最后一次的定位经纬度数据打印。
定位成功之后:
使用subscribe订阅"GNSS_STATE"消息,根据获取到的值判断是否定位成功,定位成功用exgnss.rmc获取rmc数据。


3. 示例效果展示
Air8000开发板通过LuaTools烧录内核固件和demo脚本代码,烧录成功后开机运行,查看示例运行结果。


4. 使用纠偏网站进行定位纠偏
所有的GNSS功能的坐标系均使用国际标准WGS-84坐标系,所以开发者在国内常见地图定位时,会发现与实际情况有几十米的误差。
这并非模组问题,而是国内地图采用了非标坐标系所致。
国内常见地图如高德地图使用GCJ-02坐标系,百度地图使用BD-09坐标系,故此开发者需要对模组输出的经纬度进行加偏处理,才能在国内的地图上实现精确定位。
定位纠偏网站:
http://old.openluat.com/GPS-Offset.html

今天的内容就分享到这里了!
审核编辑 黄宇
- 随机文章
- 热门文章
- 热评文章
- 人间烟火气,蜀中蓉小香——成都老味蓉小香冒烤鸭
- 全国首条全息感知智慧高速公路苏州投用
- 文明浇筑 这就是成都的幸福生活
- 上合示范区走进长三角经贸交流“1+N”系列活动在上海开幕
- 铁建装备(01786):与昆明市西山区人民政府马街街道办事处拟订立具体征收补偿协议 征收补偿款总和为5.63亿元
- 太阳能(000591):中节能太阳能股份有限公司监事会议事规则
- 强生(JNJ.US)10亿美元引进口服多肽积极试验结果公布
- 我实现单个自由基量子自旋转换调控