testGps.lua 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. --- 模块功能:GPS功能测试.
  2. -- @author openLuat
  3. -- @module gps.testGps
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2022.02.15
  7. module(...,package.seeall)
  8. local gps = require"gps9701"
  9. require"agps9701"
  10. require "pm"
  11. pm.wake("TSET")
  12. local function printGps()
  13. if gps.isOpen() then
  14. local tLocation = gps.getLocation()
  15. local speed = gps.getSpeed()
  16. log.info("testGps.printGps",
  17. gps.isOpen(),gps.isFix(),
  18. tLocation.lngType,tLocation.lng,tLocation.latType,tLocation.lat,
  19. gps.getAltitude(),
  20. speed,
  21. gps.getCourse(),
  22. gps.getViewedSateCnt(),
  23. gps.getUsedSateCnt())
  24. end
  25. end
  26. local function test1Cb(tag)
  27. log.info("testGps.test1Cb",tag)
  28. printGps()
  29. end
  30. local function test2Cb(tag)
  31. log.info("testGps.test2Cb",tag)
  32. printGps()
  33. end
  34. local function test3Cb(tag)
  35. log.info("testGps.test3Cb",tag)
  36. printGps()
  37. end
  38. --测试代码开关,取值1,2
  39. local testIdx = 1
  40. local function test(idx)
  41. sys.wait(1000)
  42. --第1种测试代码
  43. if idx==1 then
  44. --执行完下面三行代码后,GPS就会一直开启,永远不会关闭
  45. --因为gps.open(gps.DEFAULT,{tag="TEST1",cb=test1Cb}),这个开启,没有调用gps.close关闭
  46. gps.open(gps.DEFAULT,{tag="TEST1",cb=test1Cb})
  47. --10秒内,如果gps定位成功,会立即调用test2Cb,然后自动关闭这个“GPS应用”
  48. --10秒时间到,没有定位成功,会立即调用test2Cb,然后自动关闭这个“GPS应用”
  49. gps.open(gps.TIMERORSUC,{tag="TEST2",val=10,cb=test2Cb})
  50. --300秒时间到,会立即调用test3Cb,然后自动关闭这个“GPS应用”
  51. gps.open(gps.TIMER,{tag="TEST3",val=300,cb=test3Cb})
  52. --第2种测试代码
  53. elseif idx==2 then
  54. --执行完下面三行代码打开GPS后,5分钟之后GPS会关闭
  55. gps.open(gps.DEFAULT,{tag="TEST1",cb=test1Cb})
  56. sys.timerStart(gps.close,300000,gps.DEFAULT,{tag="TEST1"})
  57. gps.open(gps.TIMERORSUC,{tag="TEST2",val=10,cb=test2Cb})
  58. gps.open(gps.TIMER,{tag="TEST3",val=60,cb=test3Cb})
  59. end
  60. end
  61. --[[
  62. 函数名:nemacb
  63. 功能 :NEMA数据的处理回调函数
  64. 参数 :
  65. data:一条NEMA数据
  66. 返回值:无
  67. ]]
  68. local function nmeaCb(nmeaItem)
  69. log.info("testGps.nmeaCb",nmeaItem)
  70. end
  71. --如果是外部控制对GPS模块的供电,调用下面的接口,根据实际情况控制GPS模块的供电开关,配置uart通信参数
  72. --如下两部分是以Air720通过uart1外接Air530为例的配置代码
  73. --gps.setPowerCbFnc,设置供电开关回调,实际测试时,使用的是直流电源直接给Air530供电,所有回调中没有实现任何有效代码
  74. -- gps.setPowerCbFnc(
  75. -- function(status)
  76. -- if status then
  77. -- --打开供电
  78. -- else
  79. -- --关闭供电
  80. -- end
  81. -- end
  82. -- )
  83. --gps.setPowerCbFnc,设置串口通信参数,Air530的波特率为9600
  84. gps.setUart(1,115200,8,uart.PAR_NONE,uart.STOP_1)
  85. --设置GPS+BD定位(此接口目前仅针对Air530或者Air800有效)
  86. --如果不调用此接口,默认也为GPS+BD定位
  87. --gps.setAerialMode(1,1,0,0)
  88. -- sys.taskInit(function()
  89. -- sys.wait(2000)
  90. -- log.info("------")
  91. -- gps.setAerialMode(1,1,0,0)
  92. -- end)
  93. --设置仅gps.lua内部处理NEMA数据
  94. --如果不调用此接口,默认也为仅gps.lua内部处理NEMA数据
  95. --如果gps.lua内部不处理,把NMEA数据通过回调函数cb提供给外部程序处理,参数设置为1,nmeaCb
  96. --如果gps.lua和外部程序都处理,参数设置为2,nmeaCb
  97. gps.setNmeaMode(2,nmeaCb)
  98. sys.taskInit(test,testIdx)
  99. -- test(testIdx)
  100. sys.timerLoopStart(printGps,2000)