main.lua 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. --[[
  2. 必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
  3. PROJECT:项目名,ascii string类型
  4. 可以随便定义,只要不使用,就行
  5. VERSION:项目版本号,ascii string类型
  6. 如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
  7. X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
  8. 因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
  9. 如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
  10. 本demo演示的功能为:
  11. 使用Air8000核心板演示GPS定位功能以及agps辅助功能
  12. ]]
  13. PROJECT = "air8000_gnss"
  14. VERSION = "1.0.0"
  15. log.info("main", PROJECT, VERSION)
  16. -- sys库是标配
  17. _G.sys = require("sys")
  18. --[[特别注意, 使用http库需要下列语句]]
  19. _G.sysplus = require("sysplus")
  20. -- mobile.flymode(0,true)
  21. if wdt then
  22. --添加硬狗防止程序卡死,在支持的设备上启用这个功能
  23. wdt.init(9000)--初始化watchdog设置为9s
  24. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  25. end
  26. log.info("main", "air8000_gns11s")
  27. mcu.hardfault(0) --死机后停机,一般用于调试状态
  28. pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- 所有GPIO高电平输出3.3V
  29. local gnss = require("agps_icoe")
  30. function test_gnss()
  31. log.debug("提醒", "室内无GNSS信号,定位不会成功, 要到空旷的室外,起码要看得到天空")
  32. pm.power(pm.GPS, true)
  33. gnss.setup({
  34. uart_id=2,
  35. uart_forward = uart.VUART_0, -- 转发到虚拟串口,方便对接GnssToolKit3
  36. debug=true,
  37. sys=1
  38. })
  39. gnss.start() --初始化gnss
  40. gnss.agps() --使用agps辅助定位
  41. --循环打印解析后的数据,可以根据需要打开对应注释
  42. while 1 do
  43. sys.wait(5000)
  44. log.info("RMC1", json.encode(libgnss.getRmc(2))) --解析后的rmc数据
  45. -- log.info("GGA", libgnss.getGga(3)) --解析后的gga数据
  46. -- log.info("GLL", json.encode(libgnss.getGll(2) or {}, "7f"))
  47. -- log.info("GSA", json.encode(libgnss.getGsa(1) or {}, "7f"))
  48. -- log.info("GSV", json.encode(libgnss.getGsv(2) or {}, "7f"))
  49. -- log.info("VTG", json.encode(libgnss.getVtg(2) or {}, "7f"))
  50. -- log.info("ZDA", json.encode(libgnss.getZda(2) or {}, "7f"))
  51. -- log.info("date", os.date())
  52. -- log.info("sys", rtos.meminfo("sys"))
  53. -- log.info("lua", rtos.meminfo("lua"))
  54. end
  55. end
  56. sys.taskInit(test_gnss)
  57. -- 订阅GNSS状态编码
  58. sys.subscribe("GNSS_STATE", function(event, ticks)
  59. -- event取值有
  60. -- FIXED 定位成功
  61. -- LOSE 定位丢失
  62. -- ticks是事件发生的时间,一般可以忽略
  63. log.info("gnss", "state", event, ticks)
  64. if event == "FIXED" then
  65. local locStr = libgnss.locStr()
  66. log.info("gnss", "locStr", locStr)
  67. -- if locStr then
  68. -- -- 存入文件,方便下次AGNSS快速定位
  69. -- io.writeFile("/gnssloc", locStr)
  70. -- end
  71. end
  72. end)
  73. -- 用户代码已结束---------------------------------------------
  74. -- 结尾总是这一句
  75. sys.run()
  76. -- sys.run()之后后面不要加任何语句!!!!!