X-MagicBox-820的luatOS之路连载系列3
开篇点题:这是补充上一篇的LCD显示内容,也就是获取GPS的实际数据。

大家都知道GPS就是全球定位系统。对于普通人群,最多的应用就是导航了。来看一组很贴近生活的定位功能描述:

从这里可以看到居然有和GPS并列的名词,那到底谁才是真正的定位系统呢?
其实这里的GPS特指的是美国全球定位系统,建立起初是为了给美军队提供导航以及情报等服务,后来也有了民用服务。GLONASS最早开发于苏联时期,从服务本国到扩展全球,也是一套牛逼的系统。而后面的Galileo则是第一个世界民用导航定位系统,是欧盟为打破GPS的独霸战略所开发的,有欧洲版GPS之称。QZSS就不常见了,这是日本开发的,只用三颗卫星实现全球定位,也称准天顶卫星系统。北斗不用解释,中国人都知道。这里是以某品牌手机的技术参数极简的介绍了这几种日常会用的卫星定位系统。
回到正题,这块820的模组是内置定位功能的,这个功能的实现是靠一颗中科微的AT6558R卫星定位芯片。支持GPS/北斗/GLONASS,据说支持AGPS秒定位。AGPS不过多阐述,就是依靠基站辅助卫星系统的一种定位方式。我们重点来进行定位实验。
根据资料结合文档,编写如下的程序段:
local function printGps() if gps.isOpen() then log.info("gps.info", gps.isOpen(),gps.isFix(), gps.getLocation(), gps.getAltitude(), gps.getSpeed(), gps.getCourse(), gps.getViewedSateCnt(), gps.getUsedSateCnt()) end end
然后建立一个定时获取GPS数据的任务:
sys.taskInit(function() sys.wait(5000) gps.open(gps.DEFAULT,{tag="gps",cb=openmsg}) while true do printGps() sys.wait(1000) end end)
这样运行后就是每秒钟获取一次GPS数据解析后的内容。补充一下,合宙帮我们封装了NMEA数据的解析,但也可以选择输出原始数据自己解析。NMEA-0183的协议标准如下:

如果选择了输出NEMA数据串,还可以设定输出频率:

Lua语言比起C语言处理这些字符串数据会方便很多。拿起魔盒820运行刚才的代码发现,没有数据,还是如上一篇的显示界面内容。看了一眼电路板上的陶瓷天线,老王我抱起充电宝拿到阳台,手伸到窗户外开始了搜星大法,于是,一颗,3颗,8颗,噌噌噌没多久就定位成功,搜到几十颗卫星。

后面抽空再核对这些数据的准确性,且看下回分解。

浙公网安备 33010602011771号