| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- local gpsMng = {}
- local gps_uart_id = 2
- libgnss.clear() -- 清空数据,兼初始化
- uart.setup(gps_uart_id, 115200)
- function exec_agnss()
- if http then
- -- AGNSS 已调通
- while 1 do
- local code, headers, body = http.request("GET", "http://download.openluat.com/9501-xingli/HXXT_GPS_BDS_AGNSS_DATA.dat").wait()
- -- local code, headers, body = http.request("GET", "http://nutzam.com/6228.bin").wait()
- log.info("gnss", "AGNSS", code, body and #body or 0)
- if code == 200 and body and #body > 1024 then
- -- uart.write(gps_uart_id, "$reset,0,h01\r\n")
- -- sys.wait(200)
- -- uart.write(gps_uart_id, body)
- for offset=1,#body,512 do
- log.info("gnss", "AGNSS", "write >>>", #body:sub(offset, offset + 511))
- uart.write(gps_uart_id, body:sub(offset, offset + 511))
- sys.wait(100) -- 等100ms反而更成功
- end
- io.writeFile("/6228.bin", body)
- break
- end
- sys.wait(60*1000)
- end
- end
- sys.wait(20)
- -- 读取之前的位置信息
- local gnssloc = io.readFile("/gnssloc")
- if gnssloc then
- str = "$AIDPOS," .. gnssloc
- log.info("POS", str)
- uart.write(gps_uart_id, str .. "\r\n")
- str = nil
- gnssloc = nil
- else
- -- TODO 发起基站定位
- uart.write(gps_uart_id, "$AIDPOS,3432.70,N,10885.25,E,1.0\r\n")
- end
- end
- sys.taskInit(function()
- -- Air780EG工程样品的GPS的默认波特率是9600, 量产版是115200,以下是临时代码
- log.info("GPS", "start")
- pm.power(pm.GPS, true)
- -- 绑定uart,底层自动处理GNSS数据
- -- 第二个参数是转发到虚拟UART, 方便上位机分析
- libgnss.bind(gps_uart_id, uart.VUART_0)
- -- libgnss.on("raw", function(data)
- -- -- 默认不上报, 需要的话自行打开
- -- data = data:split("\r\n")
- -- if data == nil then
- -- return
- -- end
- -- end)
- sys.wait(200) -- GPNSS芯片启动需要时间
- -- 调试日志,可选
- -- libgnss.debug(true)
- -- 显示串口配置
- -- uart.write(gps_uart_id, "$CFGPRT,1\r\n")
- -- sys.wait(20)
- -- 增加显示的语句
- -- uart.write(gps_uart_id, "$CFGMSG,0,1,1\r\n") -- GLL
- -- sys.wait(20)
- -- uart.write(gps_uart_id, "$CFGMSG,0,5,1\r\n") -- VTG
- -- sys.wait(20)
- -- uart.write(gps_uart_id, "$CFGMSG,0,6,1\r\n") -- ZDA
- -- sys.wait(20)
- exec_agnss()
- end)
- sys.taskInit(function ()
- while true do
- log.info("nmea", "isFix", libgnss.isFix())
- sys.wait(10000)
- end
- end)
- --获取时间
- function gpsMng.getTime()
- local tTime = libgnss.getZda()
- return (string.format("%02d%02d%02d%02d%02d%02d",tTime.year-2000,tTime.month,tTime.day,tTime.hour+8,tTime.min,tTime.sec)):fromHex()
- end
- return gpsMng
|