main.lua 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "air8000_gnss"
  3. VERSION = "1.0.0"
  4. log.info("main", PROJECT, VERSION)
  5. -- 引入必要的库文件(lua编写), 内部库不需要require
  6. sys = require("sys")
  7. -- mobile.flymode(0,true)
  8. if wdt then
  9. --添加硬狗防止程序卡死,在支持的设备上启用这个功能
  10. wdt.init(9000)--初始化watchdog设置为9s
  11. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  12. end
  13. log.info("main", "air8000_gnss")
  14. mcu.hardfault(0) --死机后停机,一般用于调试状态
  15. pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- 所有GPIO高电平输出3.0V
  16. local gps_uart_id = 2 -- 根据实际设备选取不同的uartid
  17. uart.setup(gps_uart_id, 115200)
  18. -- libgnss.bind(gps_uart_id)-- 绑定uart, 马上开始解析GNSS数据
  19. --打开或者关闭GNSS的函数,传1打开,传0关闭
  20. sys.taskInit(function()
  21. log.info("GPS", "start")
  22. pm.power(pm.GPS, true)
  23. -- 绑定uart,底层自动处理GNSS数据
  24. -- 第二个参数是转发到虚拟UART, 方便上位机分析
  25. libgnss.bind(gps_uart_id, uart.VUART_0)
  26. sys.wait(200) -- GPNSS芯片启动需要时间
  27. -- 调试日志,可选
  28. libgnss.debug(true)
  29. end)
  30. sys.taskInit(function()
  31. while 1 do
  32. sys.wait(5000)
  33. log.info("RMC", json.encode(libgnss.getRmc(2) or {}, "7f")) --解析后的rmc数据
  34. log.info("GGA", libgnss.getGga(3)) --解析后的gga数据
  35. -- log.info("GLL", json.encode(libgnss.getGll(2) or {}, "7f"))
  36. -- log.info("GSA", json.encode(libgnss.getGsa(1) or {}, "7f"))
  37. -- log.info("GSV", json.encode(libgnss.getGsv(2) or {}, "7f"))
  38. -- log.info("VTG", json.encode(libgnss.getVtg(2) or {}, "7f"))
  39. -- log.info("ZDA", json.encode(libgnss.getZda(2) or {}, "7f"))
  40. -- log.info("date", os.date())
  41. -- log.info("sys", rtos.meminfo("sys"))
  42. -- log.info("lua", rtos.meminfo("lua"))
  43. end
  44. end)
  45. -- 订阅GNSS状态编码
  46. sys.subscribe("GNSS_STATE", function(event, ticks)
  47. -- event取值有
  48. -- FIXED 定位成功
  49. -- LOSE 定位丢失
  50. -- ticks是事件发生的时间,一般可以忽略
  51. log.info("gnss", "state", event, ticks)
  52. if event == "FIXED" then
  53. local locStr = libgnss.locStr()
  54. log.info("gnss", "locStr", locStr)
  55. -- if locStr then
  56. -- -- 存入文件,方便下次AGNSS快速定位
  57. -- io.writeFile("/gnssloc", locStr)
  58. -- end
  59. end
  60. end)
  61. -- 用户代码已结束---------------------------------------------
  62. -- 结尾总是这一句
  63. sys.run()
  64. -- sys.run()之后后面不要加任何语句!!!!!