sys

sys.regapp()

目前支持 2 种注册方式:

1) 将一个消息和对应的应用处理程序注册到 apps 表中

2) 以表的形式注册到 apps 表中。表中的每个元素 key 是消息,value 是对应的消息处理程序

  • 语法

    sys.regapp(...)

  • 参数

参数 释义
... 不定参数
1) 以函数方式注册的 app,例如:regapp(fncname,"MSG1","MSG2","MSG3")
2) 以 table 方式注册的 app,例如regapp({MSG1=fnc1,MSG2=fnc2,MSG3=fnc3})
  • 返回值


sys.deregapp()

将 id 这个子程序或表从 apps 表中删除

  • 语法

    sys.deregapp(id)

  • 参数

    参数 释义
    id app 的 id,id 共有两种方式,一种是函数名,另一种是 table 名
  • 返回值


sys.reguart()

注册物理串口的数据接收处理函数

  • 语法

    sys.reguart(id,fnc)

  • 参数

    参数 释义
    id 整数型。物理串口号
    fnc function 型。处理串口数据的程序
  • 返回值


sys.dispatch()

消息分发

  • 语法

    sys.dispatch(...)

  • 参数

    参数 释义
    ... 不定参数,但其中第一个参数是消息ID
  • 返回值


sys.getworkmode()

获取工作模式

  • 语法

    sys.getworkmode()

  • 参数

  • 返回值

    当前工作模式,0- SIMPLE_MODE;1-FULL_MODE

    • SIMPLE_MODE:简单模式,默认不会开启“每一分钟产生一个内部消息”、“定时查

    询 csq”、“定时查询 ceng”的功能

    • FULL_MODE:完整模式,默认会开启“每一分钟产生一个内部消息”、 “定时查询 csq”、

    “定时查询 ceng”的功能


sys.setworkmode()

设置工作模式

  • 语法

    sys.setworkmode(v)

  • 参数

    参数 释义
    v 工作模式:
    0 - SIMPLE_MODE(简单模式,默认不会开启“每一分钟产生一个内部消息”、“定时查询 csq”、“定时查询 ceng”的功能);
    1 - FULL_MODE(完整模式,默认会开启“每一分钟产生一个内部消息”、 “定时查询 csq”、“定时查询 ceng”的功能)
  • 返回值

    成功返回 true,否则返回 nil


sys.opntrace()

开启或者关闭 print 的打印输出功能

  • 语法

    sys.opntrace(v,uartid,baudrate)

  • 参数

    参数 释义
    v false 或 nil 为关闭,其余为开启
    uartid 输出luatrace的端口,可选值:
    nil表示host口,1表示uart1,2表示uart2
    baudrate 波特率,number类型,uartid不为nil时,此参数才有意义,表示波特率,默认115200。仅支持1200,2400,4800,9600,14400,19200,28800,38400,57600,76800,115200,230400,460800,576000,921600,1152000,4000000
  • 返回值


sys.run()

主架构程序。一般情况下,这个程序是必须要有,而且必须要写在 main.lua 里。

  • 语法

    sys.run()

  • 参数

  • 返回值

sys.timer_start()

开启一个定时器

  • 语法

sys.timer_start(fnc,ms,…)

  • 参数
参数 释义
fnc 定时器的回调函数
ms 定时器时长,单位为毫秒
... 自定义可变参数,调用回调函数时,会把自定义的可变参数回传给用户
  • 返回值

定时器的ID,如果失败返回nil


sys.timer_loop_start()

开启循环定时器

  • 语法

sys.timer_loop_start(fnc,ms,…)

  • 参数
参数 释义
fnc 定时器的回调函数
ms number 型。该参数设置定时器的时间,以 ms(毫秒)为单位
... 不定参数,fnc 的参数
  • 返回值

定时器的ID,如果失败返回nil

sys.timer_stop()

结束一个定时器

  • 语法

sys.timer_stop(val,...)

  • 参数
参数 释义
val 1:开启定时器时返回的定时器id,此形式时不需要再传入可变参数...就能唯一标记一个定时器
2:开启定时器时的回调函数,此形式时必须再传入可变参数...才能唯一标记一个定时器
... 自定义可变参数,与timer_start和timer_loop_start中的可变参数意义相同
  • 返回值

  • 例子

--开启定时器,并用 uniquetid 的方式停止定时器
local sms = require"sms"
require"sys"
local function sendsms(num,data)
    sms.send(num,data)
end
--3 秒后发送短信,收件人号码是 10086,内容是”12345”
local tid = sys.timer_start(sendsms,3000,”10086”,”123456”)
--如果定时器到时前不想发送了,可以停止定时器
sys.timer_stop(tid,”10086”,”123456”)
--开启定时器,并用 function 的方式停止定时器
--还是上面的例子
sys.timer_start(sendsms,3000, ”10086”,”123456”)
sys.timer_stop(sendsms, ”10086”,”123456”)

sys.timer_stop_all()

关闭某个回调函数标记的所有定时器,无论开启定时器时有没有传入自定义可变参数

  • 语法

    sys.timer_stop_all(fnc)

  • 参数

    参数 释义
    fnc 开启定时器时的回调函数, 无论开启定时器时有没有传入自定义可变参数
  • 返回值


sys.timer_is_active()

判断某个定时器是否处于开启状态

  • 语法

    sys.timer_is_active (val,...)

  • 参数

    val 有两种形式:
    1.开启定时器时返回的定时器id,此形式时不需要再传入可变参数...就能唯一标记一个定时器
    2.开启定时器时的回调函数,此形式时必须再传入可变参数...才能唯一标记一个定时器
    ... 自定义可变参数,与timer_start和timer_loop_start中的可变参数意义相同
  • 返回值

    开启返回 true,否则 false


sys.init()

系统初始化。ATC 口(即虚拟 AT 命令口)初始化

  • 语法

    sys.init(mode, lprfnc)

  • 参数

    mode 整数型。充电开机是否启动 GSM 协议栈,1 不启动,否则启动 。mode=1
    lprfnc 用户应用脚本中定义的“低电关机处理函数”,如果有函数名,则低电时,本文件中的run接口不会执行任何动作,否则,会延时1分钟自动关机

    例子

--设备充电不开机,按键的时候才开机
--main.lua
sys.init(1)
if rtos.poweron_reason() ~= rtos.POWERON_CHARGER then
    sys.poweron()
end
sys.run()

sys.getcorever()

获取底层软件版本号

  • 语法

    sys.getcorever()

  • 参数

  • 返回值

    版本号字符串


sys.restart()

软件重启

  • 语法

    sys.restart(r)

  • 参数

    参数 释义
    r 重启原因,用户自定义,一般是string类型,重启后的trace中会打印出此重启原因
  • 返回值


audio

音频播放

audio.play()

播放音频

  • 语法

    audio.play(priority,typ,path,vol,cb,dup,duprd)

  • 参数

priority number 类型,必选参数,音频优先级,数值越大,优先级越高
typ string 类型,必选参数,音频类型,目前仅支持"FILE"、"TTS"、"RECORD"
path 必选参数,音频文件路径,跟 typ 有关:
typ 为"FILE"时:string 类型,表示音频文件路径。用工具下载音频文件到模块里的缺省目录是/ldata
typ 为"TTS"时:string 类型,表示要播放数据的 UCS2 十六进制字符串
typ为"TTSCC"时:string类型,表示要播放给通话对端数据的UCS2十六进制字符串
typ 为"RECORD"时:number 类型,表示录音 ID
vol number 类型,可选参数,播放音量,取值范围 audiocore.VOL0 到audiocore.VOL7
cb function 类型,可选参数,音频播放结束或者出错时的回调函数,回调时包含一个参数:0 表示播放成功结束;1 表示播放出错;2 表示播放优先级不够,没有播放
dup bool 类型,可选参数,是否循环播放,true 循环,false 或者 nil 不循环
duprd number 类型,可选参数,播放间隔(单位毫秒),dup 为 true 时,此值才有意义
  • 返回值

  • 例子

--播放tts测试接口
local ttstr = "你好,这里是上海合宙通信科技有限公司,现在时刻18点30分"
--单次播放,默认音量等级
--audio.play(TTS,"TTS",common.binstohexs(common.gb2312toucs2(ttstr)))
--单次播放,音量等级7
--audio.play(TTS,"TTS",common.binstohexs(common.gb2312toucs2(ttstr)),audiocore.VOL7)
--单次播放,音量等级7,播放结束或者出错调用testcb回调函数
--audio.play(TTS,"TTS",common.binstohexs(common.gb2312toucs2(ttstr)),audiocore.VOL7,testcb)
--循环播放,音量等级7,没有循环间隔(一次播放结束后,立即播放下一次)
--audio.play(TTS,"TTS",common.binstohexs(common.gb2312toucs2(ttstr)),audiocore.VOL7,nil,true)
--循环播放,音量等级7,循环间隔为2000毫秒
audio.play(TTS,"TTS",common.binstohexs(common.gb2312toucs2(ttstr)),audiocore.VOL7,nil,true,2000)

--播放音频文件测试接口
--单次播放来电铃声,默认音量等级
--audio.play(CALL,"FILE","/ldata/call.mp3")
--单次播放来电铃声,音量等级7
--audio.play(CALL,"FILE","/ldata/call.mp3",audiocore.VOL7)
--单次播放来电铃声,音量等级7,播放结束或者出错调用testcb回调函数
--audio.play(CALL,"FILE","/ldata/call.mp3",audiocore.VOL7,testcb)
--循环播放来电铃声,音量等级7,没有循环间隔(一次播放结束后,立即播放下一次)
audio.play(CALL,"FILE","/ldata/call.mp3",audiocore.VOL7,nil,true)
--循环播放来电铃声,音量等级7,循环间隔为2000毫秒
--audio.play(CALL,"FILE","/ldata/call.mp3",audiocore.VOL7,nil,true,2000)

audio.stop()

停止播放当前正在播放的声音文件

  • 语法

    audio.stop()

  • 参数

  • 返回值

    如果可以成功同步停止,返回true,否则返回nil


audio.setspeakervol()

设置音频通道的输出音量

  • 语法

    audio.setspeakervol(vol)

  • 参数

vol 音量等级,取值范围为 audio.VOL0 到 audio.VOL7,audio.VOL0 为静音
  • 返回值


audio.getspeakervol()

读取音频通道的输出音量

  • 语法

    audio.getspeakervol()

  • 参数

  • 返回值

    音量等级,整数型,同 setspeakervol 中 vol 定义


audio.beginrecord()

开始录音

  • 语法

    audio.beginrecord(id,duration)

  • 参数

    参数 释义
    id 录音id,会根据这个id存储录音文件,取值范围0-4
    duration 录音时长,单位毫秒
  • 返回值

    true


audio.endrecord()

结束录音

  • 语法

    audio.endrecord(id,duration)

  • 参数

    参数 释义
    id 录音id,会根据这个id存储录音文件,取值范围0-4
    duration 录音时长,单位毫秒
  • 返回值

    true

audio.delrecord()

删除录音文件

  • 语法

    audio.delrecord(id,duration)

  • 参数

    参数 释义
    id 录音id,会根据这个id存储录音文件,取值范围0-4
    duration 录音时长,单位毫秒
  • 返回值

    true

cc

通话管理


cc.dial()

拨打语音电话

  • 语法

cc.dial(number,delay)

  • 参数
参数 释义
number 拨打的电话号码,字符串型
delay 延时 delay 毫秒后,才发送 at 命令呼叫,默认不延时,即此参数暂时未启用
  • 返回值

    返回 boolean 型,true(已经拨出电话)或 false(未能拨出电话)

  • 例子

cc.dial("10086")

cc.hangup()

主动挂断所有当前语音电话

  • 语法

    cc.hangup()

  • 参数

  • 返回值


cc.accept()

接听当前打入的语音电话

  • 语法

    cc.accept()

  • 参数

  • 返回值


cc.regcb()

注册一个或者多个消息的用户回调函数

  • 语法

    cc.regcb(evt1,cb1,...)

  • 参数

参数 释义
evt1 消息类型,目前仅支持:
"READY","INCOMING","CONNECTED","DISCONNECTED"
cb1 消息对应的用户回调函数
... evt 和 cb 成对出现
  • 返回值

  • 例子

--注册消息的用户回调函数
cc.regcb("READY",ready,"INCOMING",incoming,"CONNECTED",connected,"DISCONNECTED",disconnected,"DTMF",dtmfdetected,"ALERTING",alerting)

cc.deregcb()

注册一个或者多个消息的用户回调函数

  • 语法

    cc.regcb(evt1,...)

  • 参数

    参数 释义
    evt1 消息类型,目前仅支持:
    "READY","INCOMING","CONNECTED","DISCONNECTED"
    ... evt 和 cb 成对出现
  • 返回值


common

通用库函数


common.ucs2toascii()

ascii字符串的unicode编码的16进制字符串 转化为 ascii字符串,例如"0031003200330034" -> "1234"

  • 语法

    common.ucs2toascii(inum)

  • 参数

    参数 释义
    inum 待转换字符串
  • 返回值

    转换后的字符串


common.nstrToUcs2Hex()

ascii字符串 转化为 ascii字符串的unicode编码的16进制字符串,仅支持数字和+,例如"+1234" -> "002B0031003200330034"

  • 语法

    common.nstrToUcs2Hex(inum)

  • 参数

    参数 释义
    inum
  • 返回值

    转换后的字符串


common.numtobcdnum()

号码ASCII字符串 转化为 BCD编码格式字符串,仅支持数字和+,例如"+8618126324567" -> 91688121364265f7 (表示第1个字节是0x91,第2个字节为0x68,......)

  • 语法

    common.numtobcdnum(num)

  • 参数

    参数 释义
    num 待转换字符串
  • 返回值

    字符串型,转换后的 BDC 码


common.bcdnumtonum()

BCD编码格式字符串 转化为 号码ASCII字符串,仅支持数字和+,例如91688121364265f7 (表示第1个字节是0x91,第2个字节为0x68,......) -> "+8618126324567"

  • 语法

    common.bcdnumtonum(num)

  • 参数

    参数 释义
    num 待转换字符串
  • 返回值

    字符串型,转换后的 BDC 码


common.binstohexs()

二进制数据 转化为 16进制字符串格式,例如91688121364265f7 (表示第1个字节是0x91,第2个字节为0x68,......) -> "91688121364265f7"

  • 语法

    common.binstohexs(bins,s)

  • 参数

    参数 释义
    bins 二进制数据
    s 转换后,每两个字节之间的分隔符,默认没有分隔符
  • 返回值

    转换后的字符串

  • 例子

print(common.binstohexs(pack.pack("H",100)))--当"100"以字符串形式包装时,会打印出“0064”
print(common.binstohexs(pack.pack("h",100)))--当"100"以整数形式包装时,会打印出“0064”

common.hexstobins()

16进制字符串 转化为 二进制数据格式,例如"91688121364265f7" -> 91688121364265f7 (表示第1个字节是0x91,第2个字节为0x68,......)

  • 语法

    common.hexstobins(hexs)

  • 参数

    参数 释义
    hexs 16进制字符串
  • 返回值

    转换后的数据


common.ucs2togb2312()

unicode小端编码 转化为 gb2312编码

  • 语法

    common.ucs2togb2312(ucs2s)

  • 参数

    参数 释义
    ucs2s unicode小端编码数据
  • 返回值

    gb2312编码数据

  • 例子

print("ucs2togb2312")   
local gd2312num=common.ucs2togb2312(ucs2s)--调用的是common.ucs2togb2312,返回的是编码所对应的字符串
print("gb2312  code:"..gd2312num)   

common.gb2312toucs2()

gb2312编码 转化为 unicode小端编码

  • 语法

    common.gb2312toucs2(gb2312s)

  • 参数

    参数 释义
    gb2312s GB2312 编码的字符串,字符串型
  • 返回值

    unicode小端编码数据

  • 例子

print("gb2312toucs2")
local ucs2num=common.gb2312toucs2(gd2312num)
print("unicode little-endian code:"..common.binstohexs(ucs2num))--要将二进制转换为十六进制,否则无法输出

common.ucs2betogb2312()

unicode大端编码 转化为 gb2312编码

  • 语法

    common.ucs2betogb2312(ucs2s)

  • 参数

    参数 释义
    ucs2s unicode大端编码数据
  • 返回值

    gb2312编码数据

  • 例子

print("ucs2betogb2312")
local gd2312num=common.ucs2betogb2312(ucs2s) --转化后的数据直接变成字符可以直接输出 
print("gd2312 code :"..gd2312num)   

common.gb2312toucs2be()

gb2312编码 转化为 unicode大端编码

  • 语法

    common.gb2312toucs2be(gb2312s)

  • 参数

    参数 释义
    gb2312s gb2312编码数据
  • 返回值

    unicode大端编码数据

  • 例子

print("gb2312toucs2be")
local ucs2benum=common.gb2312toucs2be(gb2312s)
print("unicode big-endian code :"..common.binstohexs(ucs2benum))

gps

GPS管理


gps.init()

配置GPS

  • 语法

    gps.init(ionum,dir,edge,period,id,baud,databits,parity,stopbits,apgspwronupd)

  • 参数

    参数 释义
    ionum GPS供电的GPIO
    dir 此参数没用(为了兼容之前的代码,不能去掉),随便传,
    edge true表示GPIO输出高电平供电,false或者nil表示GPIO输出低电平供电
    period 串口读取NEMA数据间隔,单位毫秒,建议1000毫秒读取一次
    id gps uart 口的端口号,number 型。1 表示串口1,2 表示串口2
    baud gps uart 口的波特率,number,例如9600
    databits gps uart 口的数据位,number 型,例如8
    parity gps uart 口的校验位,number 型,有三种取值:
    uart.PAR_EVEN, uart.PAR_ODD 或 uart.PAR_NONE
    stopbits gps uart 口的停止位,整数型,有三种取值:
    uart.STOP_1 (for 1 stop bit), uart.STOP_1_5 (for 1.5 stop bits) 或 uart.STOP_2 (for 2 stop bits)
    apgspwronup 是否允许开机就执行 AGPS 功能
  • 返回值


gps.open()

打开一个 gps”应用”

  • 语法

    gps.open(mode,para)

  • 参数

    参数 释义
    mode GPS工作模式
    para para.cause:“GPS应用”标记
    para.val:GPS开启最大时长
    para.cb:回调函数
  • 返回值

  • 例子

--因为gps.open(gps.DEFAULT,{cause="TEST1",cb=test1cb}),这个开启,没有调用gps.close关闭
gps.open(gps.DEFAULT,{cause="TEST1",cb=test1cb})

--10秒内,如果gps定位成功,会立即调用test2cb,然后自动关闭这个“GPS应用”
--10秒时间到,没有定位成功,会立即调用test2cb,然后自动关闭这个“GPS应用”
gps.open(gps.TIMERORSUC,{cause="TEST2",val=10,cb=test2cb})

--300秒时间到,会立即调用test3cb,然后自动关闭这个“GPS应用”
gps.open(gps.TIMER,{cause="TEST3",val=300,cb=test3cb})

gps.close()

关闭一个“GPS 应用”

  • 语法

    gps.close(mode,para)

  • 参数

    参数 释义
    mode GPS工作模式
    para para.cause:“GPS应用”标记
    para.val:GPS开启最大时长
    para.cb:回调函数
  • 返回值


gps.isactive()

判断一个“GPS 应用”是否处于激活状态

  • 语法

    gps.isactive(mode,para)

  • 参数

    参数 释义
    mode GPS工作模式
    para para.cause:“GPS应用”标记
    para.val:GPS开启最大时长
    para.cb:回调函数
  • 返回值


gps.getgpslocation()

获取终端经纬度位置信息

  • 语法

    gps.getgpslocation(format)

  • 参数

    format 经纬度的类型,整数型。目前支持 2 个取值:
    GPS_DEGREES:度。例如:纬度为 XX.YYYYY,则为 XX.YYYYY 度
    GPS_DEGREES_MINUTES: 度分。例如纬度为 XX.YYYYY,则 XX 为度,YY.YYY 为分。
    默认为度
  • 返回值

    位置信息。字符串。格式如:E/W,long,N/S,lati E/W:东经或西经 long:经度 N/S:北纬或南纬 lati:纬度

  • 例子

    返回值举例:“E,121.5259850,N,31.2356616” 如果没有经纬度格式为"E,,N,"


gps.getgpsspd()

获取由 gps 侦测到的终端速度

  • 语法

    gps.getgpsspd()

  • 参数

  • 返回值

    终端速度,number 型


gps.getgpscog()

获取方向角

  • 语法

    gps.getgpscog()

  • 参数

  • 返回值

    方向角


gps.getaltitude()

获取高度

  • 语法

    gps.getaltitude()

  • 参数

  • 返回值

    高度


gps.isopen()

判断 gps 是否已经打开

  • 语法

    gps.isopen()

  • 参数

  • 返回值

    Boolean 型 true:表示 gps 已经打开 false: 表示 gps 未打开


gps.isfix()

判断终端 gps 是否已经成功定位

  • 语法

    gps.isfix()

  • 参数

  • 返回值

    Boolean 型 true:表示 gps 已经成功定位 false: 表示 gps 未定位


image

image.load()

加载图片

  • 语法

    image.load(path)

  • 参数

    参数 释义
    path string类型,图片路径
  • 返回值

    image_obj :为userdata类型

  • 例子

local image_object = image.load("/ldata/test1.jpg")

image_object:info()

获取图片长宽高

  • 语法

    image_object:info()

  • 参数

  • 返回值

    图片的宽,高,格式(RGB565或RGB888等)

  • 例子

local wd,ht,fm = image_object:info()

image_object:buffer()

解码图片

  • 语法

    image_object:buffer()

  • 参数

  • 返回值

    图片解码后的数据

  • 例子

local buf = image_object:buffer()

image_object:destory()

释放图片解码

  • 语法

    image_object:destory()

  • 参数

  • 返回值

    释放图片解码后的数据


link

link.shut()

关闭 IP 网络

  • 语法

    link.shut()

  • 参数

  • 返回值


misc

misc.setclock()

设置系统时间

  • 语法

    misc.setclock(t,rspfunc)

  • 参数

    参数 释义
    t 是一个表,键值有 year,month,day,hour,min,sec,取值均为字符型,其中 year 是 4 位字符的字符串,其余是 1~2 位字符的字符串
    格式举例:
    {year=2017,month=2,day=14,hour=14,min=2,sec=58}
    rspfunc 设置系统时间后的用户自定义回调函数
  • 返回值


misc.getclockstr()

获取系统时间字符串

  • 语法

    misc.getclockstr()

  • 参数

  • 返回值

    系统时间字符串,格式为YYMMDDhhmmss,例如170214141602,17年2月14日14时16分02秒


misc.getweek()

获取星期

  • 语法

    misc.getweek()

  • 参数

  • 返回值

    星期,number类型,1-7分别对应周一到周日


misc.getclock()

获取系统时间表

  • 语法

    misc.getclock()

  • 参数

  • 返回值

    table类型的时间,例如{year=2017,month=2,day=14,hour=14,min=19,sec=23}


misc.setimei()

设置模块 IMEI 如果传入了 cb,则设置 IMEI 后不会自动重启,用户必须自己保证设置成功后,调用 sys.restart 或者 dbg.restart 接口进行软重启; 如果没有传入 cb,则设置成功后软件会自动重启

  • 语法

    misc.setimei(s,cb)

  • 参数

    参数 释义
    s 新 IMEI
    cb 设置 IMEI 后调用的回调函数,调用时会将设置 IMEI 的结果传出去,true 表示设置成功,false 或者 nil 表示失败。
    例如:设置 IMEI 成功后,调用 cb 的形式就是 cb(true); 设置 IMEI 失败后,调用 cb 的形式就是 cb(false)
  • 返回值


misc.getimei()

获取模块 IMEI 号码

  • 语法

    msic.getimei()

  • 参数

  • 返回值

    模块 IMEI 号,字符串型。如果未获取到返回" "

    注意:开机lua脚本运行之后,会发送at命令去查询imei,所以需要一定时间才能获取到imei。开机后立即调用此接口,基本上返回""


misc.setsn()

设置SN

如果传入了cb,则设置SN后不会自动重启,用户必须自己保证设置成功后,调用sys.restart或者dbg.restart接口进行软重启;

如果没有传入cb,则设置成功后软件会自动重启

  • 语法

    misc.setsn(s,cb)

  • 参数

    参数 释义
    s 新SN
    cb 设置后的回调函数,调用时会将设置结果传出去,true表示设置成功,false或者nil表示失败;
  • 返回值


misc.getsn()

获取序列号

  • 语法

    misc.getsn()

  • 参数

  • 返回值

    序列号,如果未获取到返回""


misc.setflymode()

控制飞行模式

  • 语法

    misc.setflymode(val)

  • 参数

    参数 释义
    val true为进入飞行模式,false为退出飞行模式
  • 返回值


misc.getvbatvolt()

获取 VBAT 的电池电压

  • 语法

    misc.getvbatvolt()

  • 参数

  • 返回值

    VBAT 的电池电压。number 类型,单位毫伏


misc.openpwm()

打开并且配置PWM(支持2路PWM,仅支持输出)

  • 语法

    misc.openpwm(id,period,level)

  • 参数

    参数 释义
    id number类型,PWM输出通道,仅支持0和1,0用的是uart2 tx,1用的是uart2 rx
    period number类型
    当id为0时,period表示频率,单位为Hz,取值范围为80-1625,仅支持整数
    当id为1时,取值范围为0-7,仅支持整数,表示时钟周期,单位为毫秒,0-7分别对应125、250、500、1000、1500、2000、2500、3000毫秒
    level number类型
    当id为0时,level表示占空比,单位为level%,取值范围为1-100,仅支持整数
    当id为1时,取值范围为1-15,仅支持整数,表示一个时钟周期内的高电平时间,单位为毫秒
    1-15分别对应15.6、31.2、46.9、62.5、78.1、93.7、110、125、141、156、172、187、203、219、234毫秒
  • 返回值

  • 说明

    当id为0时:

    period 取值在 80-1625 Hz范围内时,level 占空比取值范围为:1-100;

    period 取值在 1626-65535 Hz范围时,设x=162500/period, y=x * level / 100, x 和 y越是接近正的整数,则输出波形越准确


misc.closepwm()

关闭PWM

  • 语法

    misc.closepwm(id)

  • 参数

    参数 释义
    id number类型,PWM输出通道,仅支持0和1,0用的是uart2 tx,1用的是uart2 rx

mqtt

mqtt.create()

创建一个 mqtt client

  • 语法

    mqtt.create(prot,host,port)

  • 参数

    参数 释义
    port string类型,传输层协议,仅支持"TCP"和"UDP"[必选]
    host string 类型,服务器地址,支持域名和 IP 地址[必选]
    port number 类型,服务器端口[必选]
    ver string类型,MQTT协议版本号,仅支持"3.1"和"3.1.1",默认"3.1"
  • 返回值

    mqttclient

  • 例子

    --创建一个mqtt client,默认使用的MQTT协议版本是3.1,如果要使用3.1.1,打开下面的注释--[[,"3.1.1"]]即可
    mqttclient = mqtt.create(PROT,ADDR,PORT--[[,"3.1.1"]])

mqttclient:publish()

发布一条消息

  • 语法

    mqttclient:publish(topic,payload,qos,ackcb,usertag)

  • 参数

    参数 释义
    topic string类型,消息主题,gb2312编码[必选]
    payload 二进制数据,消息负载,用户自定义编码,本文件不会对数据做任何编码转换处理[必选]
    flags number类型,qos和retain标志,仅支持0、1、4、5[可选,默认0]
    0表示:qos=0,retain=0
    1表示:qos=1,retain=0
    4表示:qos=0,retain=1
    5表示:qos=1,retain=1
    ackcb function 类型,qos 为 1 时表示收到 PUBACK 的回调函数,qos 为 0 时消息发送结果的回调函数[可选]
    usertag string 类型,用户回调函数 ackcb 用到的第一个参数[可选]
  • 返回值

  • 例子

mqttclient:publish("/qos0topic","qos0data",0,pubqos0testsndcb,"publish0test_"..qos0cnt)

mqttclient:subscribe()

订阅主题

  • 语法

    mqttclient:subscribe(topics,ackcb,usertag)

  • 参数

    参数 释义
    topics table类型,一个或者多个主题,主题名gb2312编码,质量等级仅支持0和1,{{topic="/topic1",qos=质量等级}, {topic="/topic2",qos=质量等级}, ...}[必选]
    ackcb function类型,表示收到SUBACK的回调函数[可选]
    usertag string类型,用户回调函数ackcb用到的第一个参数[可选]
  • 返回值

  • 例子

--订阅主题
mqttclient:subscribe({{topic="/event0",qos=0}, {topic="/中文event1",qos=1}}, subackcb, "subscribetest")
mqttclient:subscribe("testTopic")

mqttclient:regevtcb()

注册事件的回调函数

  • 语法

    mqttclient:regevtcb(evtcbs)

  • 参数

    参数 释义
    evtcbs 一对或者多对 evt 和 cb,格式为{evt=cb,...}},evt 取值如下:
    "MESSAGE" : 表 示 从 服 务 器 收 到 消 息 , 调 用 cb 时 , 格 式 为cb(topic,payload,qos)
  • 返回值

  • 例子

--注册事件的回调函数,MESSAGE事件表示收到了PUBLISH消息
mqttclient:regevtcb({MESSAGE=rcvmessagecb})

mqttclient:getstatus

获取MQTT CLIENT的状态

  • 语法

    mqttclient:getstatus

  • 参数

  • 返回值

    MQTT CLIENT的状态,string类型,共4种状态:

    DISCONNECTED:未连接状态

    CONNECTING:连接中状态

    CONNECTED:连接状态

    DISCONNECTING:断开连接中状态


mqttclient:configwill()

配置遗嘱参数

  • 语法

    mqttclient:configwill(flg,qos,retain,topic,payload)

  • 参数

    参数 释义
    flg number类型,遗嘱标志,仅支持0和1
    qos number类型,服务器端发布遗嘱消息的服务质量等级,仅支持0,1,2
    retain number类型,遗嘱保留标志,仅支持0和1
    topic string类型,服务器端发布遗嘱消息的主题,gb2312编码
    payload string类型,服务器端发布遗嘱消息的载荷,gb2312编码
  • 返回值

  • 例子

mqttclient:configwill(1,0,0,"/willtopic","will payload")

mqttclient:setcleansession()

配置clean session标志

  • 语法

    mqttclient:setcleansession(flg)

  • 参数

    参数 释义
    flg number类型,clean session标志,仅支持0和1,默认为1
  • 返回值


net


net.getstate()

获取当前 GSM 网络注册状态

  • 语法

    net.getstate()

  • 参数

  • 返回值

    网络注册状态,字符串型: INIT(刚开机的状态) UNREGISTER(没有注册网络) REGISTERED(已经注册了网络)


net.getmnc()

获取当前小区的 mnc(移动网络代码)

  • 语法

    net.getmnc()

  • 参数

  • 返回值

    当前小区的 mnc,如果还没有注册 GSM 网络,则返回 sim 卡的 mnc


net.getlac()

获取当前位置区ID

  • 语法

    net.getlac()

  • 参数

  • 返回值

    当前位置区ID(16进制字符串,例如"18be"),如果还没有注册GSM网络,则返回""


net.getci()

获取当前小区ID

  • 语法

    net.getci()

  • 参数

  • 返回值

    当前小区ID(16进制字符串,例如"93e1"),如果还没有注册GSM网络,则返回""


net.getrssi()

获取信号强度

  • 语法

    net.getrssi()

  • 参数

  • 返回值

    当前信号强度(取值范围0-31)


net.getta()

获取 TA 值

  • 语法

    net.getta()

  • 参数

  • 返回值

    TA 值


net.startcsqtimer()

启动“信号强度查询”定时器 这个启动是有选择性的,不是飞行模式 并且打开了查询开关 或者 工作模式为完整模式

  • 参数

  • 返回值


net.setcsqqueryperiod()

设置“信号强度”查询间隔

  • 语法

    net.setcsqqueryperiod(period)

  • 参数

    参数 释义
    period 查询间隔,单位毫秒
  • 返回值


pb


pb.find()

查找电话本的一笔记录

  • 语法

    pb.find(name)

  • 参数

    参数 释义
    name 姓名,字符串型
  • 返回值

    boolean 型 true:表示查找这个动作已经发起 false: 表示查找这个动作未成功发起


pb.read()

读取电话本的一笔记录

  • 语法

    pb.read(index,cb)

  • 参数

    参数 释义
    index number类型,电话本在存储区的位置
    cb 读取后的回调函数
  • 返回值


pb.writeitem()

写一条电话本记录

  • 语法

    pb.writeitem(index,name,num,cb)

  • 参数

    参数 释义
    index number类型,电话本在存储区的位置
    name 姓名
    num 号码
    cb 写入后的回调函数
  • 返回值


pb.deleteitem()

删除一条电话本记录

  • 语法

    pb.deleteitem(i,cb)

  • 参数

    参数 释义
    i number类型,电话本在存储区的位置
    cb 删除后的回调函数
  • 返回值


pm

pm.wake()

lua应用唤醒系统

  • 语法

    pm.wake(tag)

  • 参数

    参数 释义
    tag 唤醒标记,用户自定义
  • 返回值


pm.sleep()

lua应用休眠系统

  • 参数

    pm.sleep(tag)

  • 参数

    参数 释义
    tag 休眠标记,用户自定义,跟wake中的标记保持一致
  • 返回值


pm.isleep()

读取lua应用的休眠状态

  • 语法

    pm.isleep()

  • 参数

  • 返回值

    true休眠,其余没休眠


ril

虚拟串口AT命令交互管理


ril.request()

发送AT命令到底层软件

  • 语法

    ril.request(cmd,arg,onrsp,delay)

  • 参数

参数 释义
cmd AT命令内容
arg AT命令参数,例如AT+CMGS=12命令执行后,接下来会发送此参数;AT+CIPSEND=14命令执行后,接下来会发送此参数
onrsp AT命令应答的处理函数,只是当前发送的AT命令应答有效,处理之后就失效了
delay 延时delay毫秒后,才发送此AT命令
  • 返回值

  • 例子

local ril = require"ril"
local req = ril.request
function send(id,data)
    req(string.format("AT+CIPSEND=%d,%d",id,string.len(data)),data)
return true
end

ril.regurc()

注册某个 urc 的处理函数

  • 语法

    ril.regurc(prefix,handler)

  • 参数

    参数 释义
    prefix urc前缀,最前面的连续字符串,包含+、大写字符、数字的组合
    handler urc的处理函数
  • 返回值


ril.deregurc()

解注册某个urc的处理函数

  • 语法

    ril.deregurc(prefix)

  • 参数

    参数 释义
    prefix rc前缀,最前面的连续字符串,包含+、大写字符、数字的组合
  • 返回值


ril.regrsp()

注册某个AT命令应答的处理函数

  • 语法

    ril.regrsp(head,fnc,typ,formt)

  • 参数

    参数 释义
    head 此应答对应的AT命令头,去掉了最前面的AT两个字符
    fnc AT命令应答的处理函数
    typ AT命令的应答类型,取值范围NORESULT,NUMBERIC,SLINE,MLINE,STRING,SPECIAL
    formt typ为STRING时,进一步定义STRING中的详细格式
  • 返回值

    成功返回true,失败false


sms

短信功能


sms.getsmsstate()

获取短消息是否准备好的状态

  • 语法

    sms.getsmsstate()

  • 参数

  • 返回值

    true准备好,其他值:未准备好


sms.send()

发送短信

  • 语法

    sms.send(num,data,cb,idx)

  • 参数

    参数 释义
    num 短信接收方号码,ASCII码字符串格式
    data 短信内容,GB2312编码的字符串
    cb 短信发送结果异步返回时使用的回调函数,可选
    idx 插入短信发送缓冲表的位置,可选,默认是插入末尾
  • 返回值

    返回true,表示调用接口成功(并不是短信发送成功,短信发送结果,通过sendcnf返回,如果有cb,会通知cb函数);返回false,表示调用接口失败

  • 例子

sms.send("10086","111111",sendtest1)

sms.regnewsmscb()

注册新短信的用户处理函数

  • 语法

    sms.regnewsmscb(cb)

  • 参数

    参数 释义
    cb 用户处理函数名
  • 返回值

  • 例子

local function procnewsms(num,data,datetime)
    print("procnewsms",num,data,datetime)
end

sms.regnewsmscb(procnewsms)

socket


socket.connect()

创建socket(如果socket不存在),并且连接服务器

  • 语法

    socket.connect(idx,prot,addr,port,rsp,rcv,cause)

  • 参数

    参数 释义
    idx number类型,socket id,如果使用了mqtt模块,取值范围是1、2、3;如果没使用mqtt模块,取值范围是1、2、3、4、5。[必选]
    prot string类型,传输层协议,目前仅支持"TCP"和"UDP"
    addr string类型,服务器地址,支持IP地址和域名
    port number类型,服务器端口
    rsp function 类型,socket 的数据接收处理函数
    rcv function类型,socket的数据接收处理函数
    cause 暂时无用,后续扩展使用
  • 返回值

    true表示成功调用了连接接口(连接结果会有异步消息通知到socket状态处理函数中)

    false表示没有成功调用连接接口


socket.disconnect()

断开一个socket连接

  • 语法

    socket.disconnect(idx,cause)

  • 参数

    参数 释义
    idx number类型,socket id,如果使用了mqtt模块,取值范围是1、2、3;如果没使用mqtt模块,取值范围是1、2、3、4、5。[必选]
    cause 目前无用,后续扩展使用[可选]
  • 返回值

    true表示成功调用了断开接口(断开结果会有异步消息通知到socket的状态处理函数中)

    false表示没有成功调用断开接口


socket.send()

发送数据

  • 语法

    socket.send(idx,data,para,pos,ins)

  • 参数

    参数 释义
    idx number类型,socket id,如果使用了mqtt模块,取值范围是1、2、3;如果没使用mqtt模块,取值范围是1、2、3、4、5。[必选]
    data 要发送的数据
    para 发送的参数
    pos 暂时无用,后续扩展使用
    ins 暂时无用,后续扩展使用
  • 返回值

    true 表示成功调用了发送接口(发送结果会有异步消息通知到 socket状态处理函数中), false 表示没有成功调用发送接口


qrencode

二维码库


qrencode.create()

创建二维码对象

  • 语法

    qrencode.create(para)

  • 参数

    参数 释义
    para 字符串,二维码图片路径
  • 返回值

    userdata类型,图片对象

  • 举例

    local qr_object = qrencode.create("/ldata/test1.jpg")


qr_obj:info()

查看图片长宽

  • 语法

    qr_object:info()

  • 参数

  • 返回值

    分别是图片的宽、高

  • 例子

    local wd,ht = qr_object:info()


qr_obj:buffer()

提取二维码数据

  • 语法

    qr_obj:buffer()

  • 参数

  • 返回值

    二维码数据

  • 举例

    local buf = qr_object:buffer()

qr_obj:destory()

释放create接口生成的二维码数据

  • 语法

    qr_obj:destory()

  • 参数

  • 返回值


image


image.load()

加载图片

  • 语法

    image.load(path)

  • 参数

    参数 释义
    path string类型,图片路径
  • 返回值

    image_obj :为userdata类型

  • 例子

local image_object = image.load("/ldata/test1.jpg")

+++

image_object:info()

获取图片的宽、高(RGB565或RGB888等)

  • 语法

    image_object:info()

  • 参数

  • 返回值

    宽、高、格式

  • 例子

local wd,ht,fm = image_object:info()

image_object:buffer()

解码图片

  • 语法

    image_object:buffer()

  • 参数

  • 返回值

    图片解码后的数据

  • 例子

local buf = image_object:buffer()

image_object:destory()

释放图片解码后的数据

  • 语法

    image_object:destory()

  • 参数

  • 返回值


update

固件远程升级

update.request()

实时启动一次升级

  • 语法

    update.request()

  • 参数

  • 返回值


update.setup()

配置服务器的传输协议、地址和端口

  • 语法

    update.setup(prot,server,port)

  • 参数

    参数 释义
    prot 传输层协议,仅支持TCP和UDP
    server 服务器地址
    port 服务器端口
  • 返回值


update.setperiod()

配置定时升级的周期

  • 语法

    update.setperiod(prd)

  • 参数

    参数 释义
    prd number类型,定时升级的周期,单位秒;0表示关闭定时升级功能,其余值要大于等于60秒
  • 返回值