定位开发新捷径:exgnss扩展库让GNSS应用“零负担”落地

无论你是资深开发者还是新手小白,exgnss扩展库都能助你一臂之力!它通过模块化设计和标准化接口,大幅降低GNSS开发门槛,让精准定位触手可及。

一、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的区别在于定位成功之后不会自动关闭,到时间之后才会自动关闭。

image

二、exgnss库应用示例

本文以Air8000整机开发板为例,分享exgnss库的三种应用模式应用要点。

最新源码下载及实操教程详见:https://docs.openluat.com/air8000/luatos/app/gnss/exgnss/

1. main.lua

主要用于加载exgnss扩展库,加载gnss代码。

image
image

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数据。

image

image

image

3. 示例效果展示

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

image

image

4. 使用纠偏网站进行定位纠偏

所有的GNSS功能的坐标系均使用国际标准WGS-84坐标系,所以开发者在国内常见地图定位时,会发现与实际情况有几十米的误差。

这并非模组问题,而是国内地图采用了非标坐标系所致。

国内常见地图如高德地图使用GCJ-02坐标系,百度地图使用BD-09坐标系,故此开发者需要对模组输出的经纬度进行加偏处理,才能在国内的地图上实现精确定位。

定位纠偏网站:

http://old.openluat.com/GPS-Offset.html

image

今天的内容就分享到这里了!

posted @ 2025-09-10 17:21  合宙LuatOS  阅读(14)  评论(0)    收藏  举报