adc


adc.open()

打开对应ID的ADC通道

  • 语法

    result = adc.open( id )

  • 参数

    参数 释义
    id adc通道id
  • 返回值

    1:成功打开adc通道

    0:其他

  • 例子

--adc id
local ADC_ID = 0
--打开adc
adc.open(ADC_ID)

adc.read()

读取原始测量数据和电压值,电压值单位为mv

  • 语法

    adcValue,voltValue = adc.read( id )

  • 参数

    参数 释义
    id adc通道id
  • 返回值

    adcValue 原始数据ad值,无效值为0xFFFF
    voltValue 电压值,单位为mv,无效值为0xFFFF
  • 例子

--adcval为number类型,表示adc的原始值,无效值为0xFFFF
--voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF;adc.read接口返回的voltval放大了3倍,所以需要除以3还原成原始电压
local adcval,voltval = adc.read(ADC_ID)

apn

apn 读取库


apn.get_default_apn()

通过mcc和mnc获取到默认apn

  • 语法

apn,user,password = apn.get_default_apn( mcc,mnc )

  • 参数
参数 释义
mcc 手机国家编码
mnc 手机网络编码
  • 返回值
apn apn名字
user 用户名
password 密码

audiocore

音频操作接口


audiocore.play()

播放音乐

  • 语法

ret = audiocore.play( filename )

  • 参数
参数 释义
filename 音频文件名
  • 返回值

true:播放成功

false:播放失败


audiocore.stop()

停掉正在播放的音频

  • 语法

audiocore.stop()

  • 参数

  • 返回值


audiocore.setchannel()

设置音频播放通道

  • 语法

    result = audiocore.setchannel( channel )

  • 参数

    channel 音频播放通道(可选参数见下列表)
    audiocore.HANDSET 、 audiocore.EARPIECE 、 audiocore.LOUDSPEAKER 、audiocore.BLUETOOTH 、 audiocore.FM 、 audiocore.FM_LP 、 audiocore.TV 、audiocore.AUX_HANSET 、 audiocore.AUX_LOUDSPEAKER 、audiocore.AUX_EARPIECE 、 audiocore.DUMMY_HANDSET 、audiocore.DUMMY_AUX_HANDSET 、 audiocore.DUMMY_LOUDSPEAKER 、audiocore.DUMMY_AUX_LOUDSPEAKER

audiocore.setvol()

设置音频播放音量大小

  • 语法

    result = audiocore.setvol( vol )

  • 参数

vol 音频播放器音量(可选参数见下列表)
audiocore. VOL0、 audiocore. VOL1、 audiocore. VOL2、 audiocore. VOL3、 audiocore. VOL4、audiocore. VOL5、 audiocore. VOL6、 audiocore. VOL7
  • 返回值

    1:成功

    0:其他

audiocore.setmicvol()

设置麦克风音量

  • 语法

    result = audiocore.setmicvol( vol )

  • 参数

    参数 释义
    vol 麦克风音量(可选参数见下列表)
    audiocore.MIC_VOL0、audiocore. MIC_VOL1、audiocore. MIC_VOL2、audiocore.MIC_VOL3、audiocore. MIC_VOL4、audiocore. MIC_VOL5、audiocore. MIC_VOL6、audiocore. MIC_VOL7 、 audiocore.MIC_VOL8 、 audiocore.MIC_VOL9 、audiocore.MIC_VOL10 、 audiocore.MIC_VOL11 、 audiocore.MIC_VOL12 、audiocore.MIC_VOL13、audiocore.MIC_VOL14、audiocore.MIC_VOL15
  • 返回值

    1:成功

    0:其他


audiocore.setloopback()

设置通道指定的环回测试

  • 语法

    result = audiocore.setloopback( status,channel )

  • 参数

    参数 释义
    status 1开启回环测试,0关闭回环测试
    channel 音频通道(可选参数见下列表)
    audiocore. LOOPBACK_HANDSET 、 audiocore. LOOPBACK_EARPIECE 、 audiocore.LOOPBACK_LOUDSPEAKER 、 audiocore. LOOPBACK_AUX_HANDSET 、 audiocore.LOOPBACK_AUX_LOUDSPEAKER
  • 返回值

    1:成功

    0:其他


bit

位操作库


bit.bit()

左移运算,等价于C语言中的1 << position

  • 语法

number = bit.bit( position )

  • 参数
参数 释义
position 需要移位的位置
  • 返回值

移位运算后的值

  • 例子
print(bit.bit(2))--参数是位数,作用是1向左移动两位,打印出4

bit.isset()

测试位数是否被置1

  • 语法

flag = bit.isset( value, position )

  • 参数
参数 释义
value 被测试的值
position 被测试的位置
  • 返回值

true:该位被置1

false:其他

  • 例子
print(bit.isset(5,0))--第一个参数是是测试数字,第二个是测试位置。从右向左数0到7。是1返回true,否则返回false,该返回true
print(bit.isset(5,1))--打印false
print(bit.isset(5,2))--打印true
print(bit.isset(5,3))--返回返回false

bit.isclear()

测试位数是否被置0

  • 语法

flag = bit.isclear( value, position )

  • 参数
参数 释义
value 被测试的值
position 被测试的位置
  • 返回值

true:该位被置0

false:其他

  • 例子
print(bit.isclear(5,0))--与上面的相反
print(bit.isclear(5,1))
print(bit.isclear(5,2))
print(bit.isclear(5,3))

bit.set()

置1

  • 语法

number = bit.set( value, pos1, pos2, ..., posn )

  • 参数
参数 释义
value 基数(需要改变的值)
pos1 第一位置
pos2 第二位置
posn 第n位置
  • 返回值

置1之后的值

  • 例子
print(bit.set(0,0,1,2,3))--在相应的位数置1,打印15

bit.clear()

置0

  • 语法

number = bit.clear( value, pos1, pos2, ..., posn )

  • 参数
参数 释义
value 基数(需要改变的值)
pos1 第一位置
pos2 第二位置
posn 第n位置
  • 返回值

    置0之后的值

  • 例子

print(bit.clear(5,0,2)) --在相应的位置置0,打印0

bit.bnot()

取反,等价于C语言中的~

  • 语法

number = bit.bnot( value )

  • 参数
参数 释义
value 需要取反的值
  • 返回值

取反之后的值

  • 例子
print(bit.bnot(5))--按位取反,输出-6

bit.band()

与运算,等价于C语言中的val1 & val2 & ... & valn

  • 语法

number = bit.band( val1, val2, ... valn )

  • 参数
参数 释义
val1 第一个参数
val2 第二个参数
valn 第n个参数
  • 返回值

与运算之后的结果

  • 例子
print(bit.band(1,1))--与,--输出1

bit.bor()

或运算,等价于C里面的val1 | val2 | ... | valn

  • 语法

number = bit.bor( val1, val2, ... valn )

  • 参数

    参数 释义
    val1 第一个参数
    val2 第二个参数
    valn 第n个参数
  • 返回值

    或运算之后的结果

  • 例子

print(bit.bor(1,2))--或,--输出3

bit.bxor()

异或运算,等价于C语言中的val1 ^ val2 ^ ... ^ valn

  • 语法

number = bit.bxor( val1, val2, ... valn )

  • 参数
参数 释义
val1 第一个参数
val2 第二个参数
valn 第n个参数
  • 返回值

异或运算之后的结果

  • 例子
print(bit.bxor(1,2))--异或,相同为0,不同为1

bit.lshift()

逻辑左移,等价于C语言中的value << shift

  • 语法

number = bit.lshift( value, shift )

  • 参数
参数 释义
value 移位的值
shift 移位的位置
  • 返回值

逻辑左移之后的结果

  • 例子
print(bit.lshift(1,2))--逻辑左移,“100”,输出为4

bit.rshift()

逻辑右移,等价于C语言中的value >> shift

  • 语法

number = bit.rshift( value, shift )

  • 参数
参数 释义
value 移位的值
shift 移位的位置
  • 返回值

逻辑右移之后的结果

  • 例子
print(bit.rshift(4,2))--逻辑右移,“001”,输出为1 

bit.arshift()

算数右移

  • 语法

number = bit.arshift( value, shift )

  • 参数
参数 释义
value 移位的值
shift 移位的位置
  • 返回值

算术右移之后的结果

  • 例子
print(bit.arshift(2,2))--算数右移,左边添加的数与符号有关,输出为0

i2c

i2c 操作接口

i2c.setup()

打开i2c接口

  • 语法

    speed = i2c.setup( id, speed [,slaveaddr] )

  • 参数

    参数 释义
    id i2c 接口 id,目前支持 i2c id=2 即模块的 I2C3
    speed i2c.FAST (400KHz), i2c.SLOW (100KHz)
    slaveaddr 可选,i2c 外设地址 0x00-0x7f
  • 返回值

    可以根据返回的频率值判断是否成功打开 i2c

  • 例子

--使用i2c.send和i2c.recv的setup
if i2c.setup(i2cid,i2c.SLOW) ~= i2c.SLOW then
  print("init fail")
  return
end

--使用i2c.write和i2c.read的setup
if i2c.setup(i2cid,i2c.SLOW,i2cslaveaddr) ~= i2c.SLOW then
  print("init1 fail")
  return
end

i2c.send()

向从设备写数据

  • 语法

wrote = i2c.send( id,slave, data )

  • 参数
参数 释义
id i2c接口id,目前支持 i2c id=2 即模块的i2c3
slave i2c 外设地址 0x00-0x7f
data number / string / table,自动根据参数类型写数据,num 只写 1 个字节,string/table
  • 返回值

传输成功的字节数

  • 例子
local cmd,i = {0x1B,0x00,0x6A,0x01,0x1E,0x20,0x21,0x04,0x1B,0x00,0x1B,0xDA,0x1B,0xDA}
for i=1,#cmd,2 do
  --向从设备i2cslaveaddr发送寄存器地址cmd[i]
  i2c.send(i2cid,i2cslaveaddr,cmd[i])
  --向从设备i2cslaveaddr发送要写入从设备寄存器内的数据cmd[i+1]
  i2c.send(i2cid,i2cslaveaddr,cmd[i+1])
end

i2c.recv()

向从设备读取数据

  • 语法

    i2c.recv( id, slave,size )

  • 参数

    参数 释义
    id i2c接口id,目前支持 i2c id=2 即模块的i2c3
    slave i2c 外设地址 0x00-0x7f
    size 读取数据字节数
  • 返回值

    返回读取的数据,二进制数据会包含非可见字符,请使用 string.byte 打印数据流

  • 例子

--向从设备i2cslaveaddr发送寄存器地址cmd[i]
i2c.send(i2cid,i2cslaveaddr,cmd[i])
--读取从设备i2cslaveaddr寄存器内的1个字节的数据,并且打印出来
print("init",string.format("%02X",cmd[i]),common.binstohexs(i2c.recv(i2cid,i2cslaveaddr,1)))

i2c.write()

往指定的寄存器地址 reg 传输数据

  • 语法

    wrote = i2c.write( id, reg, data )

  • 参数

    参数 释义
    id i2c接口id,目前支持 i2c id=2 即模块的i2c3
    reg 写入 i2c 从设备的寄存器起始地址
    data number / string / table,自动根据参数类型写数据,num 只写 1 个字节,string/table
  • 返回值

    传输成功的字节数

  • 例子

local cmd,i = {0x1B,0x00,0x6A,0x01,0x1E,0x20,0x21,0x04,0x1B,0x00,0x1B,0xDA,0x1B,0xDA}
for i=1,#cmd,2 do
  --向从设备的寄存器地址cmd[i]中写1字节的数据cmd[i+1]
  i2c.write(i2cid,cmd[i],cmd[i+1])
end

i2c.read()

读取指定寄存器地址 reg 的数据内容

  • 语法

    data = i2c.read( id, reg, num )

  • 参数

    参数 释义
    id i2c接口id,目前支持 i2c id=2 即模块的i2c3
    reg 读取 i2c 从设备的寄存器起始地址
    num 读取数据字节数
  • 返回值

    返回读取的数据,二进制数据会包含非可见字符,请使用 string.byte 打印数据流

  • 例子

--从从设备的寄存器地址cmd[i]中读1字节的数据,并且打印出来
print("init1",string.format("%02X",cmd[i]),common.binstohexs(i2c.read(i2cid,cmd[i],1)))

i2c.close()

关闭 I2C 接口

  • 语法

    speed = i2c.close( id )

  • 参数

    参数 释义
    id i2c接口id,目前支持 i2c id=2 即模块的i2c3
  • 返回值


spi

spi 操作接口


spi.setup

  • 语法

    spi.setup(id,chpa,cpol,dataBits,clock,duplexMode)

  • 参数

    参数 释义
    id SPI的ID,spi.SPI_1表示SPI1,Air201、Air202、Air800只有SPI1,固定传spi.SPI_1即可
    chpa spi_clk idle的状态,仅支持0和1,0表示低电平,1表示高电平
    cpol 第几个clk的跳变沿传输数据,仅支持0和1,0表示第1个,1表示第2个
    dataBits 数据位,仅支持8
    clock spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
    duplex 是否全双工,仅支持0和1,0表示半双工(仅支持输出),1表示全双工。此参数可选,默认半双工
  • 返回值

    number类型,1表示成功,0表示失败


spi.send()

写数据

  • 语法

    spi.send(id,data)

  • 参数

    参数 释义
    id SPI的ID,spi.SPI_1表示SPI1,Air201、Air202、Air800只有SPI1,固定传spi.SPI_1即可
    data string类型,要发送的数据
  • 返回值

    number类型,写成功的数据长度


spi.recv()

读数据

  • 语法

    spi.recv(id,length)

  • 参数

    参数 释义
    id SPI的ID,spi.SPI_1表示SPI1,Air201、Air202、Air800只有SPI1,固定传spi.SPI_1即可
    length 要读取的数据的长度
  • 返回值

    string类型,读取的数据内容

pack

pack 库支持将一系列数据按照格式字符转化为 lua 字符串或者将 lua 字符串按照格式字符转化成 一系列值

格式字符串格式如下:

[endianness]< format specifier >[count]

endianness:字节序

  • '<' 小字节序,最低有效字节优先,更低的字节有效位占据着更低地址的内存空间。
  • '>' 大字节序,最高有效字节优先,更高的字节有效位占据着更低地址的内存空间。
  • '=' 自然字节序,默认。

format specifier:参照下面格式化符号

count:取字节个数

格式化符号 变量类型
'z' 以'\0'结尾的字符串
'p' 在string数据前面加一个字节的string长度数据
'P' 在string数据前面加2个字节的string长度数据
'a' 在string数据前面加4个字节的string长度数据
'A' 字符串(string)
'f' 浮点数(float)
'd' 双精度浮点数(double)
'n' Lua数字(Lua number)
'c' 字符(char)
'b' 字节(byte = unsigned char)
'h' 短整型(short,两字节)
'H' 无符号短整型(unsigned short,两字节)
'i' 整型(int,四字节)
'I' 无符号整型(unsigned int,四字节)
'l' 长整型(long,八字节)
'L' 无符号长整型(unsigned long,八字节)

pack.pack()

打包字符串的值,在pack的时候有符号 无符号的输出结果都是一样的 unpack时有符号跟无符号才有区别

  • 语法

packed = pack.pack( format, val1, val2, ..., valn )

  • 参数
参数 释义
format 格式化符号
val1 第一个需打包的值
val2 第二个需打包的值
valn 第n个需打包的值
  • 返回值

一个包含所有格式化变量的字符串

  • 例子
print("pcak.pack test:")
print(pack.pack("A",10))--当"10"以字符串形式包装时,会打印出“10”
print(common.binstohexs(pack.pack("b",0x10)))--将0x01以十六进制打包为字符串,然后用十六进制输出0x10
print(pack.pack("A","LUAT"))

pack.unpack()

解包字符串

  • 语法

nextpos, val1, val2, ..., valn = pack.unpack( string, format,[ init ] )

  • 参数
参数 释义
string 需解包的字符串
format 格式化符号
init(可选) 默认值为1,标记解包开始的位置
  • 返回值
nextpos 字符串标记的位置
val1 第一个解包的值
val2 第二个解包的值
valn 第n个解包的值
  • 例子
print("pack.unpack test:")
nextpox1,val1,val2,val3,val4=pack.unpack("luat100","c4")--"nextpos"下个待解析的位置 ,取4个字符(char)
print(nextpox1,val1,val2,val3,val4)        --分别对应的是"5",l","u","a","t"的ascii码数据
print(string.char(val1,val2,val3,val4))    --将ascii码数据转化为字符输出
nextpox2,string1=pack.unpack("luat100","A4")--输出“luat”
print(nextpox2,string1)--输出5 luat
nextpox3,number1,number2=pack.unpack(common.hexstobins("006400000064"),">H>i")--[[输出无符号短型和整形,因为无符号短型是2个字节,整形是4个字节,输出为100,100--]]
print(nextpox3,number1,number2)--输出7 100 100
nextpox3,number1=pack.unpack(common.hexstobins("0064"),">h")--输出为100,因为短型是2个字节
print(nextpox3,number1)--输出3 100

pio

管脚操作

pio.pin.setdir()

设置管脚的描述

  • 语法

pio.pin.setdir( direction,pin1,pin2,...,pinn)

  • 参数
参数 释义
direction 管脚描述,可选pio.INPUT , pio.OUTPUT, pio.INT
pin1 第一个管脚
pin2(可选) 第二个管脚
pinn(可选) 第n个管脚
  • 返回值


pio.pin.setval()

设置管脚的值

  • 语法

pio.pin.setval(value,pin1,pin2,...,pinn)

  • 参数
参数 释义
value 管脚值,可选0或1
pin1 第一个管脚
pin2(可选) 第二个管脚
pinn(可选) 第n个管脚
  • 返回值


pio.pin.getval()

读取管脚的值

  • 语法

val1, val2, ..., valn = pio.pin.getval( pin1, pin2, ..., pinn )

  • 参数
参数 释义
pin1 第一个管脚
pin2(可选) 第二个管脚
pinn(可选) 第n个管脚
  • 返回值

number类型,0表示低电平,1表示高电平


pio.pin.sethigh()

设置管脚为高电平(1)

  • 语法

pio.pin.sethigh(pin1,pin2,...,pinn)

  • 参数
参数 释义
pin1 第一个管脚
pin2(可选) 第二个管脚
pinn(可选) 第n个管脚
  • 返回值


pio.pin.setlow()

设置管脚为低电平(0)

  • 语法

pio.pin.setlow(pin1,pin2,...,pinn)

  • 参数
参数 释义
pin1 第一个管脚
pin2(可选) 第二个管脚
pinn(可选) 第n个管脚
  • 返回值


pmd

电源管理接口:ldo 控制,省电管理

pmd.LDO_KEYPAD pmd.LDO_LCD--控制 LED0-LED4 pmd.KP_LEDR pmd.KP_LEDG pmd.KP_LEDB pmd.LDO_VIB pmd.LDO_VLCD--控制 POWER_VLCD pmd.LDO_VASW -- V_ASW pmd.LDO_VMMC -- V_MMC


pmd.init()

设置电源管理参数 电池充电控制,3 阶段电流充电: 一阶段:电压低于 battlevelFirst 充电电流为 currentFirst 二阶段:电压高于 battlevelFirst 低于 battlevelSecond 充电电流为 currentSecond 三阶段:电压高于 battlevelSecond 至充满 4.25v 充电电流为 currentThird

  • 语法

result = pmd.init( param )

  • 参数
参数 释义
param 参数表,电流有效值:50,100,150,200,300,400,500,600,700,800 电压值以mV为单位,可选值为下
param.currentFirst - 电池电压小于一阶段电压值时的充电电流
param.battlevelFirst - 一阶段电压值节点
param.currentSecond - 电池电压大于一阶段电压值小于二阶段电压值时的充电电流
param.battlevelSecond - 二阶段电压值节点
param.currentThird - 电池电压大于二阶段电压值时的充电电流
  • 返回值

1:成功

0:失败


pmd.ldoset()

ldo 控制

  • 语法

pmd.ldoset(level,id1,[id2],...,[idn])

  • 参数
参数 释义
level ldo 亮度 0 - 7 级 0 级关闭
id1 要设置的第一个 ldo
id2(可选) 要设置的第 二 个 ldo
idn(可选) 要设置的第 n 个 ldo
  • 返回值


pmd.sleep()

省电控制

  • 语法

pmd.sleep(value)

  • 参数
参数 释义
value 1 - 进入睡眠,0 - 退出睡眠
  • 返回值


rtos

嵌入式系统接口:接收消息,软件定时器


rtos.receive()

接收消息

  • 语法

msg,msgpara = rtos.receive(timeout)

  • 参数
参数 释义
timeout timeout 超时返回以毫秒为单位,可以用#rtos.INF_TIMEOUT#表示阻塞等待消息
  • 返回值

如果 msg 为 table 类型,msg 根据不同的消息 msg.id 会有不同的数据:

如果 msg 为 number 类型,msg 根据不同的消息 msg 会有不同的数据

1.rtos.MSG_TIMER 定时器超时消息 msg.timer_id 或者 msgpara 为超时的定时器 id

2.rtos.MSG_UART_RXDATA 串口 ATC 数据提醒 msg.uart_id 或者msgpara为收到的数据的串口id或者atc,收到该消息后可以通过uart.read 接口读取数据

3.rtos.MSG_KEYPAD 键盘消息,必须初始化按键(#rtos.init_module#)后才会有键盘消息

msg.pressed 按键按下/弹起

msg.key_matrix_row 按键所在行值

msg.key_matrix_col 按键所在列值

4.rtos.WAIT_MSG_TIMEOUT 等待消息超时

5.rtos.MSG_INT 中断消息

msg.int_id 中断 id

msg.int_resnum 中断 pin 脚编号

6.rtos.MSG_PMD 电源管理消息

msg.present 电池在位状态

msg.level 百分比 0-100

msg.voltage 电池电压

msg.charger 充电器在位状态

msg.state 充电状态:0-不在充电 1-充电中 2-充电停止


rtos.timer_start()

启动定时器

  • 语法

rtos.timer_start(timer_id, timeout)

  • 参数
参数 释义
timer_id 定时器 id,可以是任意整数,定时器到时 msg.timer_id 值为启动时定时器
timeout 定时器延时时间以毫秒为单位
  • 返回值


rtos.timer_stop()

停止定时器

  • 语法

rtos.timer_stop(timer_id)

  • 参数
参数 释义
timer_id 输入与启动定时器时定义的 id 即可停止定时器
  • 返回值


rtos.poweron_reason()

读取开机原因值

  • 语法

reason=rtos.poweron_reason()

  • 参数

  • 返回值
rtos. POWERON_KEY(=0) 按键开机
rtos. POWERON_CHARGER(=1) 充电开机
rtos. POWERON_ALARM(=2) 闹钟开机
rtos. POWERON_RESTART(=3) 软件重启开机
rtos. POWERON_EXCEPTION(=6) 异常开机
rtos. POWERON_HOST(=7) HOST 工具控制重启开机
rtos. POWERON_WATCHDOG(=8) 软件看门狗开机

rtos.poweron()

是否启动 GSM 开机

  • 语法

rtos.poweron(flag)

  • 参数
参数 释义
flag 0 表示不启动系统;1 表示启动系统
  • 返回值


rtos.poweroff()

软件关机

  • 语法

rtos.poweroff()

  • 参数

  • 返回值


rtos.restart()

软件重启

  • 语法

rtos.restart()

  • 参数

  • 返回值


rtos.tick()

获取系统开机运行时间总计数

  • 语法

ticks=rtos.tick()

  • 参数

  • 返回值

ticks,时间计数,每 tick 时长:Air200 或 Air202 是 1/16384 秒,Air810 是 4.615 毫 秒。


rtos.sleep()

堵塞等待 V103 以上版本支持

  • 语法

rtos.sleep(millisecond)

  • 参数
参数 释义
millisecond 堵塞等待时间 以毫秒为单位
  • 返回值


rtos.get_env_usage()

获取 lua 任务消息队列的使用百分比

  • 语法

percentage=rtos.get_env_usage()

  • 参数

  • 返回值

percentage,百分比,例如使用了 80%,则 percentage 为 80


rtos.set_alarm()

设置闹钟,在设置之前必须注册闹钟模块和注册消息回调函数

  • 语法

rtos.set_alarm(mode,year,month,day,hour,min,sec)

  • 参数
参数 释义
mode 1:设置闹铃 ,0:清除闹铃
year number类型,年
month number类型,月
day number类型,日
hour number类型,时
min number类型,分
sec number类型,秒
  • 返回值

  • 例子

rtos.init_module(rtos.MOD_ALARM) --注册闹铃模块
sys.regmsg(rtos.MSG_ALARM,alarmmsg) --注册消息回调函数
rtos.set_alarm(1, 2017, 12, 7, 10, 52, 0) --设置闹铃 
--闹钟时间 2017-17-7 10:52:0
rtos.set_alarm(0, 0, 0, 0, 0, 0, 0)  --关闭闹铃

--闹钟开机
local reason = rtos.poweron_reason()
if reason == rtos.POWERON_ALARM then
    rtos.restart()-- 闹钟开机以后重启不然注册不上GSM协议栈
end


uart

uart 与虚拟 AT 交互接口


uart.setup()

uart通讯

  • 语法

    baud = uart.setup( id, baud, databits, parity, stopbits,[msgmode,txDoneReport] )

  • 参数

    参数 释义
    id 串口号,可选0,1,2
    baud 波特率,可选2400,4800,9600,14400,19200,28800,38400,57600,115200,230400,460800,921600
    databits 数据位,7或8
    parity 校验位,可选uart.PAR_EVEN, uart.PAR_ODD或uart.PAR_NONE
    stopbits 停止位,可选uart.STOP_1,uart.STOP_2
    msgmode 0 或者默认 - 消息通知,1 - 无消息上报需要用户主动轮询
    txDoneReport txdone消息上报开关。0:关闭,1:打开
  • 返回值

    串口的真实波特率


uart.write()

向串口写字符串或者整型数据

  • 语法

    uart.write( id, data1, [data2], ..., [datan] )

  • 参数

    参数 释义
    id 串口号,可选0,1,2
    data1 第一个字符串或8位整型数据
    data2 第二个字符串或8位整型数据
    datan(可选) 第n个字符串或8位整型数据
  • 返回值


uart.getchar()

从串口读取单字符

  • 语法

    str = uart.getchar( id, [timeout] )

  • 参数

    参数 释义
    id 串口号,可选0,1,2
    timeout(可选) 阻塞操作,默认值为uart.INF_TIMEOUT。uart.NO_TIMEOUT 或 0无阻塞。uart.INF_TIMEOUT或具体数字阻塞串口
  • 返回值

    串口读出来的字符


uart.read()

从串口读取字符串

  • 语法

    str = uart.read( id, format, [timeout] )

  • 参数

id 串口号
格式化 *l:读取到结束字符\n或者阻塞发送
*n:读取整型数据
*s:读取到空格字符
数字,number类型:只读取number长度的数据 **
timeout(可选) 阻塞操作,默认值为uart.INF_TIMEOUT。uart.NO_TIMEOUT 或 0无阻塞。uart.INF_TIMEOUT或具体数字阻塞串口
  • 返回值

    串口读出到的数据,如果阻塞发送,只读取阻塞前的数据


uart.close()

关闭 uart 接口

  • 语法

    uart.close(id)

  • 参数

    参数 释义
    id 串口号,可选0,1,2
  • 返回值


crypto

常见加密,校验算法


crypto.aes128_ecb_encrypt()

aes128加密。加密模式:ECB,填充:zeropadding,数据块:128位

  • 语法

    crypto.aes128_ecb_encrypt(originstr,len_str,signkey,len_key)

  • 参数

参数 释义
originstr string类型,待加密字符串
len number类型,加密字符串的长度
signkey string类型,密钥
len_key number类型,密钥长度
  • 返回值

    加密后的字符串

  • 例子

local originstr = "123456"
--加密模式:ECB,填充:zeropadding,数据块:128位
local encodestr = crypto.aes128_ecb_encrypt(originstr,slen(originstr),"1234567890123456",16)
print("aes128_ecb_encrypt",common.binstohexs(encodestr))
--输出 aes128_ecb_encrypt     1670778274B6090E14376B9F29522A52

crypto.aes128_ecb_decrypt()

aes128解密

  • 语法

    crypto.aes128_ecb_decrypt(encodestr,len,signkey,len_key)

  • 参数

    参数 释义
    encodestr string类型,待解密字符串
    len number类型,解密字符串的长度
    signkey string类型,密钥
    len_key number类型,密钥长度
  • 返回值

    解密后的数据

  • 例子

local str = crypto.aes128_ecb_decrypt(encodestr,slen(encodestr),"1234567890123456",16)
print("aes128_ecb_decrypt",str)
--aes128_ecb_decrypt    123456

crypto.crc16_modbus()

Modbus CRC16校验算法

  • 语法

    crypto.crc16_modbus(originstr,len)

  • 参数

    参数 释义
    originstr string类型, 需要校验的字符串
    len number类型,字符串长度
  • 返回值

    校验计算结果

  • 例子

local originstr = "sdfdsfdsfdsffdsfdsfsdfs1234"
print("crc16_modbus",string.format("%04X",crypto.crc16_modbus(originstr,slen(originstr))))
-- crc16_modbus 1184

crypto.crc32()

CRC32校验算法

  • 语法

    crypto.crc32(originstr,len)

  • 参数

    参数 释义
    originstr string类型, 需要校验的字符串
    len number类型,字符串长度
  • 返回值

    校验计算结果

  • 例子

local originstr = "sdfdsfdsfdsffdsfdsfsdfs1234"
print("crc32",string.format("%08X",crypto.crc32(originstr,slen(originstr))))
--crc32 2FC153F9

crypto.sha1()

sha1算法

  • 语法

    crypto.sha1(originstr,len)

  • 参数

    参数 释义
    originstr string类型, 需要加密的字符串
    len number类型,字符串长度
  • 返回值

    加密后的数据

  • 例子

local originstr = "sdfdsfdsfdsffdsfdsfsdfs1234"
print("sha1",crypto.sha1(originstr,slen(originstr)))
-- sha1 16EBE919119B9B54C8AF6B4F2A09C18B6B6D8218

crypto.hmac_sha1()

hmac_sha1算法

  • 语法

    hmac_sha1(originstr,len_str,signkey,len_key)

  • 参数

    参数 释义
    originstr string类型, 需要加密的数据
    len_str number类型,字符串长度
    signkey string类型, 密钥
    len_key number类型, 密钥长度
  • 返回值

    加密后的数据

  • 例子

local originstr = "asdasdsadasweqcdsjghjvcb"
local signkey = "12345689012345"
print("hmac_sha1",crypto.hmac_sha1(originstr,slen(originstr),signkey,slen(signkey)))
--hmac_sha1 E3BB109BA59AF6A1F677157E8EC6B21349B9220F

crypto.md5()

md5算法

  • 语法

    crypto.md5(originstr,len)

  • 参数

    参数 释义
    originstr string类型, 需要加密的字符串
    len number类型,字符串长度
  • 返回值

    加密后的数据

  • 例子

local originstr = "sdfdsfdsfdsffdsfdsfsdfs1234"
print("md5",crypto.md5(originstr,slen(originstr)))
--md5   235B69FBC9E75C4FD5E8C59F9CB16500

crypto.hmac_md5()

hmac_md5算法测试

  • 语法

    crypto.hmac_md5(originstr,len_str,signkey,len_key)

  • 参数

    参数 释义
    originstr string类型, 需要加密的字符串
    len_str number类型,字符串长度
    signkey string类型, 密钥
    len_key number类型, 密钥长度
  • 返回值

    加密后的数据

  • 例子

local originstr = "asdasdsadas"
local signkey = "123456"
print("hmac_md5",crypto.hmac_md5(originstr,slen(originstr),signkey,slen(signkey)))
-- hmac_md5 38A7B18DC5F6543849DC49F06FADE3CC

crypto.base64_encode()

base64加密

  • 语法

    crypto.base64_encode(originstr,len)

  • 参数

    参数 释义
    originstr string类型, 需要加密的字符串
    len number类型,字符串长度
  • 返回值

    加密后的数据

  • 例子

local originstr = "123456"
local encodestr = crypto.base64_encode(originstr,slen(originstr))
print("base64_encode",encodestr)
--base64_encode MTIzNDU2

crypto.base64_decode()

base64解密

  • 语法

    crypto.base64_decode(originstr,len)

  • 参数

    参数 释义
    originstr string类型, 需要加密的字符串
    len number类型,字符串长度
  • 返回值

    解密后的数据

  • 例子

print("base64_decode",crypto.base64_decode(encodestr,slen(encodestr)))
-- base64_decode    123456

wdt


wdt.setup()

配置喂狗使用的两个引脚

  • 语法

    wdt.setup(rst,wd)

  • 参数

    参数 释义
    rst 模块复位单片机引脚
    wd 模块和单片机相互喂狗引脚
  • 返回值


wdt.test()

测试“开发板上的硬件看门狗复位Air模块”的功能

  • 语法

    wdt.test()

  • 参数

  • 返回值


json

json编译解析


json.encode()

json编译

  • 语法

    json.encode(torigin)

  • 参数

    参数 释义
    torigin table类型,待编译的源字符
  • 返回值

    json格式字符串

  • 例子

local torigin =
{
    KEY1 = "VALUE1",
    KEY2 = "VALUE2",
    KEY3 = "VALUE3",
    KEY4 = "VALUE4",
    KEY5 = {KEY5_1="VALU5_1",KEY5_2="VALU5_2"},
    KEY6 = {1,2,3},
}

local jsondata = json.encode(torigin)
--[[
{"KEY3":"VALUE3","KEY4":"VALUE4","KEY2":"VALUE2","KEY1":"VALUE1","KEY5":{"KEY5_2":"VALU5_2","KEY5_1":"VALU5_1"}},"KEY6":[1,2,3]}
]]

json.decode()

json解析

  • 语法

    json.decode(origin)

  • 参数

    参数 释义
    origin 待解析的json字符串
  • 返回值

    解析内容,table类型

    解析结果,1为成功,其他失败

    错误信息

  • 例子

-- 正确json字符串
local wrongOrigin = "{\":\"VALUE3\",\"KEY4\":\"VALUE4\",\"KEY2\":\"VALUE2\",\"KEY1\":\"VALUE1\",\"KEY5\":{\"KEY5_2\":\"VALU5_2\",\"KEY5_1\":\"VALU5_1\"},\"KEY6\":[1,2,3]}"
local origin = "{\"KEY3\":\"VALUE3\",\"KEY4\":\"VALUE4\",\"KEY2\":\"VALUE2\",\"KEY1\":\"VALUE1\",\"KEY5\":{\"KEY5_2\":\"VALU5_2\",\"KEY5_1\":\"VALU5_1\"},\"KEY6\":[1,2,3]}"
local tjsondata,result,errinfo = json.decode(origin)
if result then
    print(tjsondata["KEY1"])
    print(tjsondata["KEY2"])
    print(tjsondata["KEY3"])
    print(tjsondata["KEY4"])
    print(tjsondata["KEY5"]["KEY5_1"],tjsondata["KEY5"]["KEY5_2"])
    print(tjsondata["KEY6"][1],tjsondata["KEY6"][2],tjsondata["KEY6"][3])
else
    print("json.decode error",errinfo)
end
--origin:正确输出
--wrongOrigin:json.decode error Expected colon but found invalid token at character 5

disp

lcd显示


disp.puttext()

显示字符串

  • 语法

    disp.puttext(str,x,y)

  • 参数

    参数 释义
    str string类型,显示的字符串
    x number类型,x轴坐标
    y number,y轴坐标
  • 返回值

  • 例子

disp.puttext("欢迎使用Luat",16,0) --从坐标16,0位置开始显示"欢迎使用Luat"

disp.clear()

清空显示缓冲区

  • 语法

    disp.clear()

  • 参数

  • 返回值


disp.update()

刷新LCD显示缓冲区到LCD屏幕上

  • 语法

    disp.update()

  • 参数

  • 返回值