Module gps
模块功能:GPS模块管理
Info:
- Copyright: openLuat
- Release: 2017.10.23
- License: MIT
- Author: openLuat
Functions
open (mode, para) | 打开一个“GPS应用” “GPS应用”:指的是使用GPS功能的一个应用 例如,假设有如下3种需求,要打开GPS,则一共有3个“GPS应用”: “GPS应用1”:每隔1分钟打开一次GPS “GPS应用2”:设备发生震动时打开GPS “GPS应用3”:收到一条特殊短信时打开GPS 只有所有“GPS应用”都关闭了,才会去真正关闭GPS 每个“GPS应用”打开或者关闭GPS时,最多有4个参数,其中 GPS应用模式和GPS应用标记 共同决定了一个唯一的“GPS应用”: 1、GPS应用模式(必选) 2、GPS应用标记(必选) 3、GPS开启最大时长[可选] 4、回调函数[可选] 例如gps.open(gps.TIMERORSUC,{tag="TEST",val=120,cb=testGpsCb}) gps.TIMERORSUC为GPS应用模式,"TEST"为GPS应用标记,120秒为GPS开启最大时长,testGpsCb为回调函数 |
close (mode, para) | 关闭一个“GPS应用” 只是从逻辑上关闭一个GPS应用,并不一定真正关闭GPS,是有所有的GPS应用都处于关闭状态,才回去真正关闭GPS |
closeAll () | 关闭所有“GPS应用” |
isActive (mode, para) | 判断一个“GPS应用”是否处于激活状态 |
setPowerCbFnc (cbFnc) | 设置GPS模块供电控制的回调函数 如果使用的是Air800,或者供电控制使用的是LDO_VCAM,则打开GPS应用前不需要调用此接口进行设置 否则在调用gps.open前,使用此接口,传入自定义的供电控制函数cbFnc,GPS开启时,gps.lua自动执行cbFnc(true),GPS关闭时,gps.lua自动执行cbFnc(false) |
setUart (id, baudrate, databits, parity, stopbits) | 设置GPS模块和GSM模块之间数据通信的串口参数 如果使用的是Air800,或者使用的UART2(波特率115200,数据位8,无检验位,停止位1),则打开GPS应用前不需要调用此接口进行设置 否则在调用gps.open前,使用此接口,传入UART参数 |
setAerialMode (gps, beidou, glonass, galieo) | 设置GPS模块搜星模式. |
setNmeaMode (mode, cbFnc) | 设置NMEA数据处理模式. |
setRunMode (mode, runTm, sleepTm) | 设置GPS模块的运行模式. |
setNemaReportFreq ([rmc=1][, gga=1][, gsa=1][, gsv=1][, vtg=1][, gll=0]) | 设置NEMA语句的输出频率. |
setLocationFilter ([seconds=0]) | 设置GPS定位成功后经纬度的过滤时间. |
isOpen () | 获取GPS模块是否处于开启状态 |
isFix () | 获取GPS模块是否定位成功 |
getLocation ([typ=nil]) | 获取度格式的经纬度信息 |
getAltitude () | 获取海拔 |
getSpeed () | 获取速度 |
getOrgSpeed () | 获取原始速度,字符串带浮点 |
getCourse () | 获取方向角 |
getViewedSateCnt () | 获取可见卫星的个数 |
getUsedSateCnt () | 获取定位使用的卫星个数 |
getGgaloc () | 获取GGA语句中度分格式的经纬度信息 |
getUtcTime () | 获取RMC语句中的UTC时间 只有同时满足如下两个条件,返回值才有效 1、开启了GPS,并且定位成功 2、调用setParseItem接口,第一个参数设置为true |
getSep () | 获取定位使用的大地高 |
getSateSn () | 获取GSA语句中的可见卫星号 只有同时满足如下两个条件,返回值才有效 1、开启了GPS,并且定位成功 2、调用setParseItem接口,第三个参数设置为true |
getGsv () | 获取GSV语句中的可见卫星的信噪比 只有同时满足如下两个条件,返回值才有效 1、开启了GPS,并且定位成功 2、调用setParseItem接口,第二个参数设置为true |
setParseItem ([utcTime=nil][, gsv=nil][, gsaId=nil]) | 设置是否需要解析的字段 |
Fields
DEFAULT | GPS应用模式1. |
TIMERORSUC | GPS应用模式2. |
TIMER | GPS应用模式3. |
Functions
- open (mode, para)
-
打开一个“GPS应用” “GPS应用”:指的是使用GPS功能的一个应用 例如,假设有如下3种需求,要打开GPS,则一共有3个“GPS应用”: “GPS应用1”:每隔1分钟打开一次GPS “GPS应用2”:设备发生震动时打开GPS “GPS应用3”:收到一条特殊短信时打开GPS 只有所有“GPS应用”都关闭了,才会去真正关闭GPS 每个“GPS应用”打开或者关闭GPS时,最多有4个参数,其中 GPS应用模式和GPS应用标记 共同决定了一个唯一的“GPS应用”: 1、GPS应用模式(必选) 2、GPS应用标记(必选) 3、GPS开启最大时长[可选] 4、回调函数[可选] 例如gps.open(gps.TIMERORSUC,{tag="TEST",val=120,cb=testGpsCb}) gps.TIMERORSUC为GPS应用模式,"TEST"为GPS应用标记,120秒为GPS开启最大时长,testGpsCb为回调函数
Parameters:
- mode
number
GPS应用模式,支持gps.DEFAULT,gps.TIMERORSUC,gps.TIMER三种
- para
table类型,GPS应用参数 para.tag:string类型,GPS应用标记 para.val:number类型,GPS应用开启最大时长,mode参数为gps.TIMERORSUC或者gps.TIMER时,此值才有意义 para.cb:GPS应用结束时的回调函数,回调函数的调用形式为para.cb(para.tag)
Returns:
-
nil
See also:
Usage:
gps.open(gps.DEFAULT,{tag="TEST1",cb=test1Cb})
gps.open(gps.TIMERORSUC,{tag="TEST2",val=60,cb=test2Cb})
gps.open(gps.TIMER,{tag="TEST3",val=120,cb=test3Cb})
- mode
number
- close (mode, para)
-
关闭一个“GPS应用” 只是从逻辑上关闭一个GPS应用,并不一定真正关闭GPS,是有所有的GPS应用都处于关闭状态,才回去真正关闭GPS
Parameters:
- mode
number
GPS应用模式,支持gps.DEFAULT,gps.TIMERORSUC,gps.TIMER三种
- para
table类型,GPS应用参数 para.tag:string类型,GPS应用标记 para.val:number类型,GPS应用开启最大时长,mode参数为gps.TIMERORSUC或者gps.TIMER时,此值才有意义;使用close接口时,不需要传入此参数 para.cb:GPS应用结束时的回调函数,回调函数的调用形式为para.cb(para.tag);使用close接口时,不需要传入此参数
Returns:
-
nil
See also:
Usage:
GPS应用模式和GPS应用标记唯一确定一个“GPS应用”,调用本接口关闭时,mode和para.tag要和gps.open打开一个“GPS应用”时传入的mode和para.tag保持一致
gps.close(gps.DEFAULT,{tag="TEST1"})
gps.close(gps.TIMERORSUC,{tag="TEST2"})
gps.close(gps.TIMER,{tag="TEST3"})
- mode
number
- closeAll ()
-
关闭所有“GPS应用”
Returns:
-
nil
See also:
Usage:
gps.closeAll()
-
- isActive (mode, para)
-
判断一个“GPS应用”是否处于激活状态
Parameters:
- mode
number
GPS应用模式,支持gps.DEFAULT,gps.TIMERORSUC,gps.TIMER三种
- para
table类型,GPS应用参数 para.tag:string类型,GPS应用标记 para.val:number类型,GPS应用开启最大时长,mode参数为gps.TIMERORSUC或者gps.TIMER时,此值才有意义;使用isActive接口时,不需要传入此参数 para.cb:GPS应用结束时的回调函数,回调函数的调用形式为para.cb(para.tag);使用isActive接口时,不需要传入此参数
Returns:
-
bool result,处于激活状态返回true,否则返回nil
See also:
Usage:
GPS应用模式和GPS应用标记唯一确定一个“GPS应用”,调用本接口查询状态时,mode和para.tag要和gps.open打开一个“GPS应用”时传入的mode和para.tag保持一致
gps.isActive(gps.DEFAULT,{tag="TEST1"})
gps.isActive(gps.TIMERORSUC,{tag="TEST2"})
gps.isActive(gps.TIMER,{tag="TEST3"})
- mode
number
- setPowerCbFnc (cbFnc)
-
设置GPS模块供电控制的回调函数 如果使用的是Air800,或者供电控制使用的是LDO_VCAM,则打开GPS应用前不需要调用此接口进行设置 否则在调用gps.open前,使用此接口,传入自定义的供电控制函数cbFnc,GPS开启时,gps.lua自动执行cbFnc(true),GPS关闭时,gps.lua自动执行cbFnc(false)
Parameters:
- cbFnc
function类型,用户自定义的GPS供电控制函数
Returns:
-
nil
Usage:
gps.setPowerCbFnc(cbFnc)
- cbFnc
- setUart (id, baudrate, databits, parity, stopbits)
-
设置GPS模块和GSM模块之间数据通信的串口参数 如果使用的是Air800,或者使用的UART2(波特率115200,数据位8,无检验位,停止位1),则打开GPS应用前不需要调用此接口进行设置 否则在调用gps.open前,使用此接口,传入UART参数
Parameters:
- id
number
UART ID,支持1和2,1表示UART1,2表示UART2
- baudrate
number
波特率,支持1200,2400,4800,9600,10400,14400,19200,28800,38400,57600,76800,115200,230400,460800,576000,921600,1152000,4000000
- databits
number
数据位,支持7,8
- parity
number
校验位,支持uart.PAR_NONE,uart.PAR_EVEN,uart.PAR_ODD
- stopbits
number
停止位,支持uart.STOP_1,uart.STOP_2
Returns:
-
nil
Usage:
gps.setUart(2,115200,8,uart.PAR_NONE,uart.STOP_1)
- id
number
- setAerialMode (gps, beidou, glonass, galieo)
-
设置GPS模块搜星模式. 如果使用的是Air800或者Air530,不调用此接口配置,则默认同时开启GPS和北斗定位
Parameters:
- gps
number
GPS定位系统,1是打开,0是关闭
- beidou
number
中国北斗定位系统,1是打开,0是关闭
- glonass
number
俄罗斯Glonass定位系统,1是打开,0是关闭
- galieo
number
欧盟伽利略定位系统,1是打开,0是关闭
Returns:
-
nil
Usage:
gps.setAeriaMode(1,1,0,0)
- gps
number
- setNmeaMode (mode, cbFnc)
-
设置NMEA数据处理模式. 如果不调用此接口配置,则默认仅gps.lua内部处理NMEA数据
Parameters:
- mode
number
NMEA数据处理模式,0表示仅gps.lua内部处理,1表示仅用户自己处理,2表示gps.lua和用户同时处理
- cbFnc
function类型,用户处理一条NMEA数据的回调函数,mode为1和2时,此值才有意义
Returns:
-
nil
Usage:
gps.setNmeaMode(0)
gps.setNmeaMode(1,cbFnc)
gps.setNmeaMode(2,cbFnc)
- mode
number
- setRunMode (mode, runTm, sleepTm)
-
设置GPS模块的运行模式. 如果不调用此接口配置,则默认为正常运行模式
Parameters:
- mode
number
运行模式 0:正常运行模式 1:周期超低功耗跟踪模式 2:周期低功耗模式 4:直接进入超低功耗跟踪模式 8:自动低功耗模式,可以通过串口唤醒 9:自动超低功耗跟踪模式,需要force on来唤醒
- runTm
number
单位毫秒,mode为0时表示NEMA数据的上报间隔,mode为1或者2时表示运行时长,其余mode时此值无意义
- sleepTm
number
单位毫秒,mode为1或者2时表示运行时长,其余mode时此值无意义
Returns:
-
nil
Usage:
gps.setRunMode(0,1000)
gps.setRunMode(1,5000,2000)
- mode
number
- setNemaReportFreq ([rmc=1][, gga=1][, gsa=1][, gsv=1][, vtg=1][, gll=0])
-
设置NEMA语句的输出频率.
Parameters:
- rmc
number
[此参数可选,默认值为: 1]
单位秒,RMC语句输出频率,取值范围0到10之间的整数,0表示不输出
- gga
number
[此参数可选,默认值为: 1]
单位秒,GGA语句输出频率,取值范围0到10之间的整数,0表示不输出
- gsa
number
[此参数可选,默认值为: 1]
单位秒,GSA语句输出频率,取值范围0到10之间的整数,0表示不输出
- gsv
number
[此参数可选,默认值为: 1]
单位秒,GSV语句输出频率,取值范围0到10之间的整数,0表示不输出
- vtg
number
[此参数可选,默认值为: 1]
单位秒,VTG语句输出频率,取值范围0到10之间的整数,0表示不输出
- gll
number
[此参数可选,默认值为: 0]
单位秒,GLL语句输出频率,取值范围0到10之间的整数,0表示不输出
Returns:
-
nil
Usage:
gps.setNemaReportFreq(5,0,0,0,0,0)
- rmc
number
[此参数可选,默认值为: 1]
- setLocationFilter ([seconds=0])
-
设置GPS定位成功后经纬度的过滤时间.
Parameters:
- seconds
number
[此参数可选,默认值为: 0]
单位秒,GPS定位成功后,丢弃前seconds秒的位置信息
Returns:
-
nil
Usage:
gps.setLocationFilter(2)
- seconds
number
[此参数可选,默认值为: 0]
- isOpen ()
-
获取GPS模块是否处于开启状态
Returns:
-
bool result,true表示开启状态,false或者nil表示关闭状态
Usage:
gps.isOpen()
-
- isFix ()
-
获取GPS模块是否定位成功
Returns:
-
bool result,true表示定位成功,false或者nil表示定位失败
Usage:
gps.isFix()
-
- getLocation ([typ=nil])
-
获取度格式的经纬度信息
Parameters:
- typ
string
[此参数可选,默认值为: nil]
返回的经纬度格式,typ为"DEGREE_MINUTE"时表示返回度分格式,其余表示返回度格式
Returns:
-
table location 例如typ为"DEGREE_MINUTE"时返回{lngType="E",lng="12128.44954",latType="N",lat="3114.50931"} 例如typ不是"DEGREE_MINUTE"时返回{lngType="E",lng="121.123456",latType="N",lat="31.123456"} lngType:string类型,表示经度类型,取值"E","W" lng:string类型,表示度格式的经度值,无效时为"" latType:string类型,表示纬度类型,取值"N","S" lat:string类型,表示度格式的纬度值,无效时为""
Usage:
gps.getLocation()
- typ
string
[此参数可选,默认值为: nil]
- getAltitude ()
-
获取海拔
Returns:
-
number altitude,海拔,单位米
Usage:
gps.getAltitude()
-
- getSpeed ()
-
获取速度
Returns:
-
number kmSpeed,第一个返回值为公里每小时的速度
-
number nmSpeed,第二个返回值为海里每小时的速度
Usage:
gps.getSpeed()
-
- getOrgSpeed ()
-
获取原始速度,字符串带浮点
Returns:
-
number speed 海里每小时的速度
Usage:
gps.getOrgSpeed()
-
- getCourse ()
-
获取方向角
Returns:
-
number course,方向角
Usage:
gps.getCourse()
-
- getViewedSateCnt ()
-
获取可见卫星的个数
Returns:
-
number count,可见卫星的个数
Usage:
gps.getViewedSateCnt()
-
- getUsedSateCnt ()
-
获取定位使用的卫星个数
Returns:
-
number count,定位使用的卫星个数
Usage:
gps.getUsedSateCnt()
-
- getGgaloc ()
-
获取GGA语句中度分格式的经纬度信息
Returns:
-
string lng,度分格式的经度值(dddmm.mmmm),西经会添加一个-前缀,无效时为"";例如"12112.3456"表示东经121度12.3456分,"-12112.3456"表示西经121度12.3456分
-
string lat,度分格式的纬度值(ddmm.mmmm),南纬会添加一个-前缀,无效时为"";例如"3112.3456"表示北纬31度12.3456分,"-3112.3456"表示南纬31度12.3456分
Usage:
gps.getGgaloc()
-
- getUtcTime ()
-
获取RMC语句中的UTC时间 只有同时满足如下两个条件,返回值才有效 1、开启了GPS,并且定位成功 2、调用setParseItem接口,第一个参数设置为true
Returns:
-
table utcTime,UTC时间,nil表示无效,例如{year=2018,month=4,day=24,hour=11,min=52,sec=10}
Usage:
gps.getUtcTime()
-
- getSep ()
-
获取定位使用的大地高
Returns:
-
number sep,大地高
Usage:
gps.getSep()
-
- getSateSn ()
-
获取GSA语句中的可见卫星号 只有同时满足如下两个条件,返回值才有效 1、开启了GPS,并且定位成功 2、调用setParseItem接口,第三个参数设置为true
Returns:
-
string viewedSateId,可用卫星号,""表示无效
Usage:
gps.getSateSn()
-
- getGsv ()
-
获取GSV语句中的可见卫星的信噪比 只有同时满足如下两个条件,返回值才有效 1、开启了GPS,并且定位成功 2、调用setParseItem接口,第二个参数设置为true
Returns:
-
string gsv,信噪比
Usage:
gps.getGsv()
-
- setParseItem ([utcTime=nil][, gsv=nil][, gsaId=nil])
-
设置是否需要解析的字段
Parameters:
- utcTime
bool
[此参数可选,默认值为: nil]
是否解析RMC语句中的UTC时间,true表示解析,false或者nil不解析
- gsv
bool
[此参数可选,默认值为: nil]
是否解析GSV语句,true表示解析,false或者nil不解析
- gsaId
bool
[此参数可选,默认值为: nil]
是否解析GSA语句中的卫星ID,true表示解析,false或者nil不解析
Usage:
gps.setParseItem(true,true,true)
- utcTime
bool
[此参数可选,默认值为: nil]
Fields
- DEFAULT
-
GPS应用模式1.
打开GPS后,GPS定位成功时,如果有回调函数,会调用回调函数
使用此应用模式调用gps.open打开的“GPS应用”,必须主动调用gps.close或者gps.closeAll才能关闭此“GPS应用”,主动关闭时,即使有回调函数,也不会调用回调函数
- TIMERORSUC
-
GPS应用模式2.
打开GPS后,如果在GPS开启最大时长到达时,没有定位成功,如果有回调函数,会调用回调函数,然后自动关闭此“GPS应用”
打开GPS后,如果在GPS开启最大时长内,定位成功,如果有回调函数,会调用回调函数,然后自动关闭此“GPS应用”
打开GPS后,在自动关闭此“GPS应用”前,可以调用gps.close或者gps.closeAll主动关闭此“GPS应用”,主动关闭时,即使有回调函数,也不会调用回调函数
- TIMER
-
GPS应用模式3.
打开GPS后,在GPS开启最大时长时间到达时,无论是否定位成功,如果有回调函数,会调用回调函数,然后自动关闭此“GPS应用”
打开GPS后,在自动关闭此“GPS应用”前,可以调用gps.close或者gps.closeAll主动关闭此“GPS应用”,主动关闭时,即使有回调函数,也不会调用回调函数