testGps.lua 3.8 KB

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