Core API 文档发布时间: Fri Oct 20 17:32:19 2023常用外部设备LED灯独立按键0.96寸oled屏1602LCD(IIc接口)TF卡读写TF卡读写扩展(仅适用于C1)数码管和矩阵键盘TM1650四位数码管显示全彩RGB LedPCF8574扩展IO口WK2124 UART四串口扩展AM1805低功耗SYN6288语音输出LD3320A 语音识别ESP32CAM 摄像头无线局域网Ble低功耗蓝牙(仅C1支持)ThreadMesh组网(仅C1支持)红外无线通信无线广域网Wifi TCP通信(esp8266)Wifi UDP通信(esp8266)MQTT通信NBIOT TCP通信(m5311)NBIOT UDP通信(m5311)NBIOT MQTT通信(m5311)4G TCP和UDP通信(ML302和EC800)4G HTTP通信(ML302)4G MQTT通信(ML302和EC800)Lora通信Wifi TCP通信(内部Wifi,仅C2支持)Wifi UDP通信(内部Wifi,仅C2支持)Wifi MQTT通信(内部Wifi,仅C2支持)云接入机智云无线RFIDIC卡功能(RC522读写卡模块)ID卡读卡功能(em4001,em4102读卡器)UHF读写标签功能(R200读卡器)有线通信:连接电脑以太网TCP通信(W5500)以太网UDP通信(W5500)传感器:环境测量SHT3x温湿度传感器BMP280气压计/温度传感器BH1750光照强度传感器红外非接触式测温SM9541压力和温度测量传感器:物理测量MPU6050六轴传感器TCS3472颜色及色温传感器APDS9960(光照度,靠近检测、手势检测传感器)HX711称重/压力/电桥测量QMC5883三轴磁场强度/指南针ADXL345三轴加速度/倾角VL53L0X激光测距超声波测距GPS定位/授时心率/脉搏测量传感器:气体测量CCS811 TVOC/eCO2传感器ENS160/SGP30 TVOC/eCO2传感器ZPH04 PM2.5传感器ZE08K 甲醛传感器Z19C 二氧化碳传感器有线通信:连接电脑USB相关功能CH9329 USB键鼠模拟器单片机常用功能uart通用异步串口gpio引脚输入输出timer定时器iic同步串行总线spi串行外设接口总线PWM(1路或3路)PWM(8路扩展,仅C2支持)AD电压比较器(仅C1支持)脉宽测量脉冲计数自定义脉宽波形序列发生器(仅C2支持)内部Flash读写看门狗(WatchDog)关键调试信息获取(仅C2支持)产测工具相关函数(仅C2支持)工具库函数系统垃圾回收函数系统堆空间使用率统计函数系统日志函数系统复位函数系统唯一ID获取系统时间函数系统延时函数常用字符串处理函数常用校验算法函数Lua代码OTA接口函数常用字节转换函数

Core API 文档

发布时间: Fri Oct 20 17:32:19 2023

提示:查找某个函数时,可使用Ctrl+F搜索相应的函数名称









常用外部设备


LED灯


LIB_LedConfig(p1,p2,p3,p4,p5)

函数描述: LED(LED1~LED4)工作模式配置。注意:LED1~LED4是可以分配在任意D0~D11上的,由开发者自己定义 注意: 该函数只能调用一次

p1需要配置的Led的标识
 "LED1"
"LED2"
"LED3"
"LED4"
p2选择Led所占用的D端口号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3点亮Led所需要的电平值,该值由LED的驱动电路所决定
 "L":低电平
"H":高电平
p4设置LED在一个亮灭周期中亮的时间
 0-999999999毫秒
p5设置LED在一个亮灭周期中灭的时间
 0-999999999毫秒

应用示例:


LIB_LedStartWork(p1)

函数描述: Led开始闪烁

p1需要开始工作的Led的标识
 "LED1"
"LED2"
"LED3"
"LED4"

应用示例:


LIB_LedStopWork(p1)

函数描述: Led停止闪烁

p1需要停止工作的Led的标识
 "LED1"
"LED2"
"LED3"
"LED4"

应用示例:


独立按键


LIB_ButtonConfig(p1,p2,p3)

函数描述: 按键(BTN1~BTN7)工作模式的配置。注意:BTN1~BTN8是可以分配在任意D0~D11上的,看你的心情。

p1需要配置的按键的标识
 "BTN1"
"BTN2"
"BTN3"
"BTN4"
"BTN5"
"BTN6"
"BTN7"
"BTN8"
p2选择按键所占用的D端口号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3按键按下时检测到的有效电平值,该值由按键的电路所决定
 "L":低电平
"H":高电平

应用示例:


r1 = LIB_ButtonQuery(p1)

函数描述: 检测按键(Btn1~Btn8)的动作

p1需要检测的按键的标识
 "BTN1"
"BTN2"
"BTN3"
"BTN4"
"BTN5"
"BTN6"
"BTN7"
"BTN8"
r1按键检测返回值
 0: 按键没按下
 1: 检测到按键短按动作(3秒之内弹起)
 2: 检测到按键长按动作(3秒之后弹起)
 3: 检测到按键持续按压(0.8秒~3秒)
 4: 检测到按键持续按压(3秒以上)

注意:当持续按压时,LIB_ButtonQuery会持续返回数值3或4,直到按键弹起后最终会返回一个数值1或2.

应用示例:


0.96寸oled屏


LIB_0_96_OledConfig(p1)

函数描述: 配置0.96寸oled显示模块和core的连接端口,并初始化开始工作

p1oled模块占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


LIB_0_96_OledPuts(p1,p2,p3)

函数描述: 在p1行,p2列显示字符串。0.96寸oled整个屏幕可以容纳4行且每行长度不超过16列的ascii字符。

p1行号
 "1","2","3","4"
p2列号
 "1","2","3","4","5","6","7","8"
"9","10","11","12","13","14","15","16"
p3需要显示的字符串
 注意:列号加上字符串长度不能大于16,多出的部分会被截断

应用示例:


LIB_0_96_OledScreenClear()

函数描述: 清除整个屏幕的内容

应用示例:


1602LCD(IIc接口)


LIB_LCD1602Config(p1)

函数描述: 配置LCD1602的连接端口,并初始化开始工作

p1IIc LCD1602模块占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


LIB_LCD1602Puts(p1,p2,p3,p4)

函数描述: 在p1行,p2列显示字符串。LCD1602整个屏幕可以容纳2行且每行长度不超过16列的ascii字符。

p1行号
 "1","2","3","4"
p2列号
 "1","2","3","4","5","6","7","8"
"9","10","11","12","13","14","15","16"
p3需要显示的字符串
 注意:列号加上字符串长度不能大于16,多出的部分会被截断
p4背光灯是否打开
 "LightOn","LightOff"

应用示例:


LIB_LCD1602ScreenClear()

函数描述: 清除整个屏幕的内容

应用示例:


TF卡读写


r1,r2 = LIB_Fread(p1,p2)

函数描述: 从文件指定位置开始读取文件内容,一次读取256字节。注意调用该函数会阻塞程序。

p1字符串型,文件名
 注意: 文件名不要超过8字节,后缀名不要超过3个字节
p2整数型,读操作在文件中的起始位置
 以字节为单位
r1整数型,返回本次读取的实际字节数
 r1=0,表示已经读到文件末尾或读操作失败
0<r1<256,表示已经读到文件末尾
r1=256,表示读取到256字节且还未到文件末尾
r2table型,包含实际读取到的内容
 

应用示例:


LIB_Fwrite(p1,p2)

函数描述: 将table内的数据从指定文件的末尾处写入

p1字符串型,文件名
 注意: 文件名不要超过8字节,后缀名不要超过3个字节
p2table型
 table内的元素必须为字节型,元素个数不能超过256个

应用示例:


LIB_Fdelete(p1)

函数描述: 删除文件

p1字符串型,文件名
 注意: 文件名不要超过8字节,后缀名不要超过3个字节

应用示例:


TF卡读写扩展(仅适用于C1)


LIB_Fcache(p1,p2,p3)

函数描述: 缓存将要写入TF卡上文件的数据,当芯片内部4KB缓存将时,会自动将4K数据写入指定文件的末尾处, 注意1:该函数具有阻塞性 注意2:代码中使用该函数后,一定不要再使用print函数以及LIB_SystemLogEnable()函数了,因为会造成TF卡写入冲突。

p1操作选择
"Write"缓存将要写入文件的数据,当4KB缓存将时,会自动将4KB数据写入文件的末尾处并清空缓存,超出的数据将放至缓存起始位置
"Flush"立马将缓存中的数据写入文件,该功能可用于最后系统将要断电时及时保存剩余数据
p2字符串型,文件名
 注意: 文件名不要超过8字节,后缀名不要超过3个字节
p3table型
 table内的元素必须为字节型,元素个数不能超过256个

应用示例:


数码管和矩阵键盘


LIB_SegLedsAndMatrixKeysConfig(p1,p2,p3)

函数描述: 配置数码管矩阵键盘模块开始工作。

p1模块DIO引脚所占用的端口号
 "D0","D1","D2","D3","D4","D5","D6","D7",
"D8"已被Core的LED1占用,"D9"已被Core的LED2占用,"D10"已被Core的BTN1占用,"D11"已被Core的BTN2占用
p2模块CLK引脚所占用的端口号
 "D0","D1","D2","D3","D4","D5","D6","D7",
"D8"已被Core的LED1占用,"D9"已被Core的LED2占用,"D10"已被Core的BTN1占用,"D11"已被Core的BTN2占用
p3模块STB引脚所占用的端口号
 "D0","D1","D2","D3","D4","D5","D6","D7",
"D8"已被Core的LED1占用,"D9"已被Core的LED2占用,"D10"已被Core的BTN1占用,"D11"已被Core的BTN2占用

应用示例:


r1,r2 = LIB_MatrixKeysRead()

函数描述: 查询矩阵键盘是否有按键按下,并返回按键值

r1整数型,指示是否由按键按下
 0: 没有
1: 有
r2整数型,按键值
 1-16

应用示例:


LIB_SegLedsWrite(p1,p2,p3)

函数描述: 设置8位数码管需要显示的数值、小数位个数以及数码管亮度

p1整数型,需要显示的数值
 数值的有效范围需要在-9999999,99999999之间,超过部分将截断
p2字符串型,指示p1中的十进制数包含几个小数位
 "0","1","2","3","4","5","6"
p3字符串型,指示数码管显示亮度
 "LEVEL0","LEVEL1","LEVEL2",
"LEVEL3","LEVEL4","LEVEL5",
"LEVEL6","LEVEL7","LEVEL8"

"LEVEL0"是完全灭掉,"LEVEL8"是最亮状态

应用示例:


TM1650四位数码管显示


LIB_FourSegLedsConfig(p1,p2)

函数描述: 配置TM1650四位数码管模块开始工作。

p1模块DIO引脚所占用的端口号
 "D0","D1","D2","D3","D4","D5","D6","D7",
"D8"已被Core的LED1占用,"D9"已被Core的LED2占用,"D10"已被Core的BTN1占用,"D11"已被Core的BTN2占用
p2模块CLK引脚所占用的端口号
 "D0","D1","D2","D3","D4","D5","D6","D7",
"D8"已被Core的LED1占用,"D9"已被Core的LED2占用,"D10"已被Core的BTN1占用,"D11"已被Core的BTN2占用

应用示例:


LIB_FourSegLedsNumWrite(p1,p2,p3)

函数描述: 设置8位数码管需要显示的数值、小数位个数以及数码管亮度

p1整数型,需要显示的数值
 数值的有效范围需要在-999,9999之间,如果超过将显示极限值
p2字符串型,指示p1中的十进制数包含几个小数位
 "0","1","2","3"
p3字符串型,指示数码管显示亮度 ,"L8"最亮
 "L1","L2","L3","L4","L5","L6","L7","L8"

应用示例:


LIB_FourSegLedsRawWrite(p1,p2,p3,p4,p5)

函数描述: 设置8位数码管需要显示的数值、小数位个数以及数码管亮度

p1整数型,对应DIG4数码管的原始值
 例如显示值0-9,对应0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
p2整数型,对应DIG3数码管的原始值
 例如显示值0-9,对应0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
p3整数型,对应DIG2数码管的原始值
 例如显示值0-9,对应0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
p4整数型,对应DIG1数码管的原始值
 例如显示值0-9,对应0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
p5字符串型,指示数码管显示亮度 ,"L8"最亮
 "L1","L2","L3","L4","L5","L6","L7","L8"

应用示例:


全彩RGB Led


LIB_RGBledConfig(p1,p2,p3)

函数描述: 配置共阴极RGB模块开始工作,模块的R,G,B引脚分别固定占用Core的D0,D1,D2引脚 p1,p2,p3这三个参数用来调整RGB Led白平衡用

p1整数类型,R(红色亮度调整系数)
 0%-100% 当您的RGB硬件模块中的红色Led灯偏暗或偏亮,可以调整该百分比系数
p2整数类型,G(绿色亮度调整系数)
 0%-100% 当您的RGB硬件模块中的绿色Led灯偏暗或偏亮,可以调整该百分比系数
p3整数类型,B(蓝色(亮度调整系数))
 0%-100% 当您的RGB硬件模块中的蓝色Led灯偏暗或偏亮,可以调整该百分比系数

应用示例:


LIB_RGBledUpdate(p1,p2,p3)

函数描述: 更新RGB的颜色值

p1整数类型,R(红色)
 0-255
p2整数类型,G(绿色)
 0-255
p3整数类型,B(蓝色)
 0-255

应用示例:


PCF8574扩展IO口


LIB_PCF8574Config(p1)

函数描述: 配置PCF8574模块占用Core的哪一个IIC端口,

p1IIc PCF8574占用core的引脚
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


r1,r2 = LIB_PCF8574ReadPort(p1)

函数描述: 读取PCF8574的8个IO口的电平状态 注意:该函数每调用一次会耗时大概200us,这个耗时需要在您设计Lua代码时加以考虑

p1整数类型,PCF8574器件的iic设备地址
 注意:PCF8574和PCF8574A的地址不一样,且它们芯片上的A0,A1,A2三个引脚的状态也决定了八种不同的地址
r1整数型,指示是否正确读到端口电平
 0: IIc总线异常或PCF8574器件异常
1: 正确读到端口电平
r2整数型,返回一个字节型的端口值(P0-P7)
 字节中的最高位是P7

应用示例:


r1 = LIB_PCF8574WritePort(p1,p2)

函数描述: 向PCF8574写入8个IO口的电平状态 注意:该函数每调用一次会耗时大概200us,这个耗时需要在您设计Lua代码时加以考虑

p1整数类型,PCF8574器件的iic设备地址
 注意:PCF8574和PCF8574A的地址不一样,且它们芯片上的A0,A1,A2三个引脚的状态也决定了八种不同的地址
p2整数型,需要写入的字节型的端口值(P0-P7)
 字节中的最高位是P7
r1整数型,指示是否正确写入端口电平
 0: IIc总线异常或PCF8574器件异常
1: 正确写入端口电平

应用示例:


WK2124 UART四串口扩展


LIB_WK2124Config(p1~p5)

函数描述: 配置WK2124模块开始工作,模块需要占用SPI的四个引脚以及由p5参数指定的一个GPIO口

p1UART1的串口波特率配置。当为"NONE"时,则不会开启UART1,为系统省掉一定的功耗
 "NONE","B600","B1200","B2400","B4800","B9600","B19200","B38400","B76800",
"B1800","B3600","B7200","B14400","B28800","B57600","B115200","B230400"
p2UART2的串口波特率配置。当为"NONE"时,则不会开启UART2,为系统省掉一定的功耗
 "NONE","B600","B1200","B2400","B4800","B9600","B19200","B38400","B76800",
"B1800","B3600","B7200","B14400","B28800","B57600","B115200","B230400"
p3UART3的串口波特率配置。当为"NONE"时,则不会开启UART3,为系统省掉一定的功耗
 "NONE","B600","B1200","B2400","B4800","B9600","B19200","B38400","B76800",
"B1800","B3600","B7200","B14400","B28800","B57600","B115200","B230400"
p4UART4的串口波特率配置。当为"NONE"时,则不会开启UART4,为系统省掉一定的功耗
 "NONE","B600","B1200","B2400","B4800","B9600","B19200","B38400","B76800",
"B1800","B3600","B7200","B14400","B28800","B57600","B115200","B230400"
p5WK2124模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用

应用示例:


r1,r2 = LIB_WK2124UartRecvQuery(p1)

函数描述: 查询某个"Uart(1~4)"口是否收到数据,并将收到的数据内容以table形式返回。 注意:发送端每次发送的数据不能超过256字节,并且建议发送间隔最好不要小于100ms

p1需要查询的串口,"UARTn"
 "UART1","UART2","UART3","UART4"
r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_WK2124UartSend(p1,p2)

函数描述: 向某个"Uart(1~4)"口发送一串数据,注意数据个数不能超过256个

p1需要发送的串口,"UARTn"
 "UART1","UART2","UART3","UART4"
p2table类型
 table内的元素必须为字节型,元素个数不能超过256个

应用示例:


AM1805低功耗


LIB_AM1805Config(p1)

函数描述: 配置AM1805低功耗模块占用Core的哪一个IIC端口

p1IIc AM1805占用core的引脚
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


LIB_AM1805Sleep(p1,p2)

函数描述: 配置AM1805断掉外部系统的电源开始休眠,默认在休眠时间到后唤醒,但也可以增加外部信号唤醒方式。

p1休眠时间
 单位:秒,注意:该值最大值不能超过255*60=15300秒,既255分钟的休眠时间,最小不能低于3秒
p2外部信号唤醒方式
 "NONE": 不使用外部信号唤醒
"RISE":上升沿唤醒
"FALL":下降沿唤醒

注意:调用LIB_AM1805Sleep()函数前请确保MCU至少已上电1.5秒以上,不然无法正常休眠

应用示例:


SYN6288语音输出


LIB_SYN6288Config(p1,p2)

函数描述: 配置SYN6288语音模块占用的UART端口,以及需要播放的文字的编码

p1SYN6288的UART占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2需要播放的文本的编码信息
 "GB2312"
"GBK"
"BIG5"
"UNICODE"

应用示例:


LIB_SYN6288Play(p1)

函数描述: 开始语音播放p1参数所包含的文本内容

p1字符串型,需要播放的语音文字
 字符串长度不能超过200个字节,注意:一个汉字一般占用两个字节

应用示例:


LIB_SYN6288Stop()

函数描述: 停止正在播放的语音内容

应用示例:


LD3320A 语音识别


LIB_LD3320Config(p1,p2,p3,p4)

函数描述: 配置语音识别模块开始工作,以及RST引脚占用Core的端口号

p1模块RST引脚所占用的端口号
 "D0","D1","D2","D3","D4","D5","D6","D7",
"D8"已被Core的LED1占用,"D9"已被Core的LED2占用,"D10"已被Core的BTN1占用,"D11"已被Core的BTN2占用
p2麦克风音量 ,整数型,值范围必须在0x00~0x7F
 值越大代表MIC音量越大,识别启动越敏感,但可能带来更多误识别。
值越小代表MIC音量越小,需要近距离说话才能启动识别功能,好处是对远处的干扰语音没有反应
p3table类型 要识别的这些短语的代号
 table内的元素必须为字节型,元素个数不能超过50个
p4table类型 要识别的这些短语
 table内的元素必须为字符串型,元素个数不能超过50个

p2需要注意的地方: 注意1:在正常生活条件下的室内环境和比较安静的室外环境,建议设置值为 40H-55H;使用距离在 0.5 米以上为好,避免声音录入产生过激。 注意2:在十分嘈杂的环境中,比如展览会现场,建议设置值为10H-2FH;此时需要使用者嘴巴距离MIC距离为 0~50 厘米以内。

应用示例:


r1,r2 = LIB_LD3320GetResult()

函数描述: 查询是否有有效短语识别结果 注意:该函数必须是在检测到模块的IRQ引脚有下降沿信号时才能被调用

r1整数型,指示是否有有效短语被识别到
 0: 没有
1: 有
r2整数型,有效的短语识别码
 该短语识别码就是开发者在LIB_LD3320Config函数中传入的P3参数中的编码

应用示例:


ESP32CAM 摄像头


Res,Info=LIB_EspCamOp(p1,...)

函数描述: 向Esp32Cam板子下发各种指令,并返回指令的执行结果 注意: 调用该函数会造成Lua应用代码阻塞一段时间,具体时间取决于不同指令的操作,开发者需注意。

p1字符串类型,操作指令
 "Config","PostPhoto","SavePhote","WifiStatus","LedOn","LedOff"
 每种不同指令p1时,函数LIB_EspCamOp()的输入参数个数和函数返回值意义也不一样,下面会根据不同使用场景来介绍该函数的用法

开发者可以选择将Esp32Cam配置成如下四种场景功能之一: (一)Esp32Cam配置成本地相机工作 (二)Esp32Cam配置成远程相机工作 (三)Esp32Cam配置成Web camera模式工作 (四)Esp32Cam配置成Web server camera模式工作(不仅有视频流,还可以远程控制和采集传感器) 下面开始逐一介绍每种工作模式,开发者只需看自己感兴趣的工作模式

(一)当Esp32Cam配置成本地相机工作时:

初始化函数介绍
函数用法示例Res,Info=LIB_EspCamOp("Config","LOCAL_PHOTO","UART0")
函数意义配置Esp32Cam为本地相机功能,该函数调用成功后,即可通过LIB_EspCamOp("SavePhote","xxx")来执行拍照并自动将图片存入ESP32CAM板子上的SD卡中

参数介绍

拍照并本地保存函数介绍
函数用法示例Res,Info=LIB_EspCamOp("SavePhote","abc")
函数意义当配置Esp32Cam为本地相机功能后,调用该函数可以用来触发采集一张图片并保存到ESP32CAM的SD卡上面,比如文件名abc.jpg

返回值介绍

(二)当Esp32Cam配置成远程相机工作时:

初始化函数介绍
函数用法示例Res,Info=LIB_EspCamOp("Config","REMOTE_PHOTO","UART0",HW,IP,SERVER,H1,H2,H3)
函数意义配置Esp32Cam为远程相机功能,该函数调用成功后,即可通过LIB_EspCamOp("PostPhoto"...)来执行拍照并自动http post将图片发送给远程http server

参数介绍

返回值介绍

拍照并上传函数介绍
函数用法示例Res,Info=LIB_EspCamOp("PostPhoto","{","}",2000,300)
函数意义当配置Esp32Cam为远程相机功能后,调用该函数可以用来触发采集一张图片并上传给服务器
 当等待服务器响应时间设置的大于零时,比如上面的2000ms时,会在2秒内等待服务器返回包含"{"和"}"部分的消息,比如服务器返回的"{"和"}"中的json消息体
 当等待服务器响应时间设置的等于零时,则不等待服务器返回消息,发送万图片后就直接退出函数
 另外上面的300表示摄像头在采集图像之前提前300ms打开闪光灯,如果该值为0则不打开摄像头

返回值介绍

(三)当Esp32Cam配置成Web camera模式工作时:

初始化函数介绍
函数用法示例Res,Info=LIB_EspCamOp("Config","WEB_VEDIO","UART0",HW,IP,SERVER,H1,H2,H3)
函数意义配置Esp32Cam为网络摄像机WebServer功能,该函数调用成功后,Esp32Cam即可在本地局域网变成一台IP camera

参数介绍

返回值介绍

(四)当Esp32Cam配置成Web server camera模式工作时:

初始化函数介绍
函数用法示例Res,Info=LIB_EspCamOp("Config","WEB_VEDIO_ENHANCE","UART0",HW,IP,SERVER,H1,H2,H3)
函数意义配置Esp32Cam为网络摄像机WebServer功能,并且提供html网页服务,该函数调用成功后,Esp32Cam不仅可在本地局域网变成一台IP Camera,且可通过Web网页服务实现更多控制。比如在获取视频流的同时也可获取传感器数据或者控制继电器舵机动作等等

参数介绍

返回值介绍

(五)其他:

查询WFIF状态函数介绍
函数用法示例Res,Info=LIB_EspCamOp("WifiStatus")
函数意义查询Wifi状态

返回值介绍

打开摄像头闪光灯函数介绍
函数用法示例Res,Info=LIB_EspCamOp("LedOn")
函数意义调用该函数后,Esp32Cam板子上的闪光灯会打开。注意该灯不适合长期打开

返回值介绍

关闭摄像头闪光灯函数介绍
函数用法示例Res,Info=LIB_EspCamOp("LedOff")
函数意义调用该函数后,Esp32Cam板子上的闪光灯会关闭

返回值介绍

Esp32Cam软复位函数介绍
函数用法示例Res,Info=LIB_EspCamOp("Reset")
函数意义调用该函数后,过200ms,Esp32Cam会自动执行复位操作

返回值介绍

更新Webserver状态函数介绍
函数用法示例Res,Info=LIB_EspCamOp("WebserverUpdate","{"abc":"1"}")
函数意义当工作模式设置为WEB_VEDIO_ENHANCE时,调用该函数后,会将输入参数中的json字符串数据更新至Esp32Cam webserver,这样用户通过Web网页可以看到相应的数值发生变化,同时用户通过Web网页客户端发来的cmd指令也会体现在该函数的返回结果中

返回值介绍


无线局域网


Ble低功耗蓝牙(仅C1支持)


LIB_NrfBleDefaultConfig(p1)

函数描述: 按默认参数配置蓝牙,如果对默认参数的值感兴趣,可查看LIB_NrfBleAdvanceConfig里的应用示例,里面的参数即为默认参数 注意: 如果你的项目中同时用到USB功能时,一定要先调用本函数初始化蓝牙之后,再调用LIB_UsbConfig()函数。

p1蓝牙设备名称,即在手机扫描蓝牙设备时列表上显示的设备名字
 字符串型,长度不要超过32字节

service描述: service包含两个特性(Characteristic): 一个用来发送数据,一个用来接收数据

应用示例:


LIB_NrfBleAdvanceConfig(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12)

函数描述: 按指定参数配置蓝牙 注意: 如果你的项目中同时用到USB功能时,一定要先调用本函数初始化蓝牙之后,再调用LIB_UsbConfig()函数。

p1蓝牙设备名称,即在手机扫描蓝牙设备时列表上显示的设备名字。字符串类型,不要超过32字节
p2The advertising interval 蓝牙广播间隔,整数型,单位ms
p3The advertising duration 蓝牙广播持续时长,整数型,单位ms
p4Minimum acceptable connection interval 最小通信间隔,整数型,单位ms
p5Maximum acceptable connection interval 最大通信间隔,整数型,单位ms
p6Slave latency 忽略通信间隔次数,整数型
p7Connection supervisory timeout 连接失效时间,整数型,单位ms
p8The first connect params_update delay 第一次和手机请求参数更新的时间点,整数型,单位ms
p9The next connect params_update delay 下一次和手机请参数更新的时间点,整数型,单位ms
p10Number of attempts before giving up the connection parameter negotiation,整数型,单位ms
p11uuid类型,整数型,1: 16-bit,2: 128-bit 。注意: 目前仅支持16bit
p12service uuid值, 16bit整数型

service描述: service包含两个特性(Characteristic): 一个用来发送数据,一个用来接收数据

应用示例:


r1,r2 = LIB_NrfBleRecv()

函数描述: 查询是否收到蓝牙数据,如果收到数据则返回接收到的蓝牙数据

r1整数型,指示是否收到蓝牙数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到蓝牙的数据
 

应用示例:


LIB_NrfBleSend(p1)

函数描述: 将table p1中的数据通过蓝牙发送出去

p1table类型
 table内的元素必须为字节型,元素个数必须小于255个
为了兼容性建议不超过20个,因为Ble4.0最大包为20个字节

应用示例:


r1 = LIB_NrfBleConnectQuery()

函数描述: 查询是否已和手机蓝牙建立连接

r1整数型,指示是否建立连接
 0: 未连接
1: 已经连上

应用示例:


LIB_NrfBleIbeaconConfig(p1,p2,p3,p4,p5,p6)

函数描述: 按指定参数配置iBeacon蓝牙广播数据的具体内容,并开始工作 注意: 如果你的项目中同时用到USB功能时,一定要先调用本函数初始化iBeacon蓝牙之后,再调用LIB_UsbConfig()函数。

p1CompanyID:整数值, 范围:0x0000~0xFFFF, 其中 0x004C 代表的是Apple id(只有这个 ID,设备才会叫 iBeacon)
p2Major: 由 iBeacon 开发者自行设定,是16位的标识符, 例如可以用Major表示表示家电产品的型号
p3Minor:由 iBeacon 开发者自行设定,是16位的标识符, 例如表示错误代码,用来向外部通知故障、传感器值等
p4rssi_1m:厂家校准参数,APP通过iBeacon发送信号强度估算出的在 1 米的时候RSSI强度,例如0xC3 = -59db,该值更多的时候只是一个大概的值即可。
p5adv_interval_ms:设置iBeacon广播间隔,100ms-10240ms
p6uuid:为table类型的iBeacon广播uuid信息,table的元素必须为16个,uuid规定为 ISO/IEC11578:1996 标准的 128 位标识符

应用示例:


LIB_NrfBleIbeaconUpdate(p1,p2)

函数描述: beacon开启之后,可以通过本函数来实时设置beacon蓝牙广播中Major和Minor的值,

p1Major: 由 iBeacon 开发者自行设定,是16位的标识符, 例如可以用Major表示表示家电产品的型号
p2Minor:由 iBeacon 开发者自行设定,是16位的标识符, 例如表示错误代码,用来向外部通知故障、传感器值等

应用示例:


ThreadMesh组网(仅C1支持)


LIB_MeshConfig(p1,p2,p3)

函数描述: 配置设备的网络参数,如果设备是网络中的第一个节点,则自动形成Mesh网络,否则加入已存在的Mesh网络。 PanID参数和Channel参数用来决定加入哪个网络,并保证网络的唯一性,所以在同一个物理空间内,是可以共存多个PanID和Channel不一致的Mesh网络。

注意! 如果用了2.4G Mesh,Ble低功耗蓝牙和USB接口就不能再用了。

p1字符串类型,设备在Mesh网络中扮演的角色
 "Client":上传自己数据给Server,并接收Server端回应的command
"Server":一个Mesh网络中只能有一个Server
p2整数类型,PanID参数
 802.15.4 PAN ID used by Thread Mesh 范围<0-65535>
Mesh网络的标识
p3整数类型,Channel参数
 802.15.4 channel used by Thread 范围<11-26>
Mesh网络的频率

应用示例:


r1,r2,r3 = LIB_MeshServerRecvData()

函数描述: server查询是否收到client上传的data

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2字符串型,数据的来源(client名称)
 
r3table型,包含接收到的数据
 

应用示例:


LIB_MeshServerSendCommand(p1,p2)

函数描述: server向client下发8字节的命令数据。

注意1: 下发的command不会马上被client收到,而是取决于对应的client下次何时上传数据,server会自动在回复给client的response中附带上该command, 这样做是因为client有可能为低功耗传感器设备,并不会一直保持在线。

注意2: 下发的command并不保证一定会被client收到,比如下发一条command给"client01"还没被"client01"收到就被新下发给"client02"的command给覆盖了, 但是Core专门为名称是"CONTROL0" ~ "CONTROL9"的10个client分配了专有command缓存,所以mesh网络内最多可以有10个client可以确保接收命令不被其他client覆盖。

注意3:由于网络负荷大或其他原因,Core并不保证每次下发给client的command能够100%被client收到,这一点"CONTROL(0~9)"也不例外, 所以如果希望server下发的command 100%到达client,不仅client的名字需为“CONTROL(0~9)”,而且需要用户在应用层面上做保障,比如读取下一次client上传的状态 以确认上一次的command是否达到。

p1字符串型,需要下发至的client名称,需为8个字节
 
p2table类型 server下发给client的8字节command数据
 table内的元素必须为字节型,元素个数为8个字节

应用示例:


r1 = LIB_MeshServerNetStateQuery()

函数描述: 查询sever当前的网络状态

r1整数型
 0: server未加入mesh网络
1: server已加入mesh网络

应用示例:


r1,r2 = LIB_MeshClientRecvCommand()

函数描述: client查询是否收到server下发的8字节command

r1整数型,指示是否收到命令
 0: 未收到命令
1: 收到命令
r2table型,包含接收到的8字节命令
 

应用示例:


LIB_MeshClientSendData(p1,p2)

函数描述: client向server上传8字节的数据。 此上传过程如果失败Core会自动启动重发机制,如果系统重发了5次都没成功Core会认为和server已断开连接,可以通过LIB_MeshClientNetStateQuery函数查询到连接是否已断开

p1字符串型,client自己的名称,需为8个字节
 
p2table类型 client上传给server的8字节数据
 table内的元素必须为字节型,元素个数为8个字节

应用示例:


r1 = LIB_MeshClientNetStateQuery()

函数描述: 查询client当前的网络状态

r1整数型
 0: client未加入mesh网络
1: client已加入mesh网络但未和server建立连接
2: 已加入mesh网络且和server建立了连接

应用示例:


红外无线通信


LIB_IRConfig(p1)

函数描述: 配置红外无线模块占用的引脚端口,该模块适用于NEC编解码协议的红外编码和解码

p1红外无线模块的UART占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1

应用示例:


r1,r2 = LIB_IRRecv()

函数描述: 查询是否收到红外遥控数据,如果收到数据则返回接收到的3个字节的遥控数据内容。

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_IRSend(p1)

函数描述: 发送红外遥控数据,必须为包含3个字节的table

p1table类型
 table内的元素必须为字节型,元素个数必须为3个,这3个数据为开发者任意定义的遥控数据

应用示例:


LIB_24G_Config(p1,p2,p3,p4,p5)

函数描述: 配置NRF24L01/SI24R1 2.4G无线模块占用SPI引脚,以及CE占用的GPIO引脚,并开始工作

p12.4G无线模块的CE引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p2table类型 接收和发送地址,只有发送方和接收方的地址相同才能进行正常通信
 table内的元素必须为字节型,元素个数必须等于5个
p3整数型,射频信道,0-125对应2400MHz~2525Mhz
 数值范围:0-125
p4传输速率设置
 "1Mpbs","2Mpbs","125Kpbs"
p5发射功率设置
 "-12dB","-6dB","-4dB","0dB","1dB","3dB","4dB","7dB"

应用示例:


r1,r2 = LIB_24G_Recv()

函数描述: 查询是否收到2.4G对端发来的数据,如果收到数据则返回接收到的数据来源及内容。注意对端发来的每个数据包不要大于32字节,且数据包时间间隔尽量不要小于100ms 注意:由于SI24R1底层收发数据已被固定为每包32字节,所以每次不管对方发送多少字节过来,都是收到32字节,只是多余的字节都会为0。

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_24G_Send(p1)

函数描述: 将p1数组中的数据发送给对端,每包发送的数据量不要超过32字节,每包发送间隔时间也尽量大于100ms 注意:由于SI24R1底层收发数据已被固定为每包32字节,所以不管每次发送多少字节,实际都是32字节,只是多余的字节都会为0。

p1table类型
 table内的元素必须为字节型,元素个数不超过32个

应用示例:


无线广域网


Wifi TCP通信(esp8266)


LIB_WifiTcpConfig(p1,p2,p3,p4,p5,p6,p7)

函数描述: 配置WIFI模块(esp8266)占用的引脚端口,并以TCP Client方式和Server(服务器)通信

p1esp8266模块的UART占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2esp8266模块的reset占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3字符串型,路由器SSID(账号)
 
p4字符串型,路由器Password(密码)
 
p5字符串型,服务器的IP地址或域名
 
p6整数型,服务器的端口号
 
p7整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会重新尝试连接服务器

注意1:心跳包是由开发者在Lua代码中以不大于p7的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p7的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启wifi模块),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证wifi模块常年不掉线。

应用示例:


r1,r2 = LIB_WifiTcpRecv()

函数描述: 查询是否收到TCP server发来数据,如果收到数据则返回接收到的数据。注意服务端下发的每个数据包尽量不要大于256字节,且数据包时间间隔尽量不要小于100ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_WifiTcpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过256字节,发送间隔时间也尽量大于100ms 注意:只有当TCP连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


Wifi UDP通信(esp8266)


LIB_WifiUdpConfig(p1,p2,p3,p4,p5,p6,p7)

函数描述: 配置WIFI模块(esp8266)占用的引脚端口,并以UDP方式通信,自身默认UDP端口是1112

p1esp8266模块的UART占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2esp8266模块的reset占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3字符串型,路由器SSID(账号)
 
p4字符串型,路由器Password(密码)
 
p5字符串型,对端的IP地址或域名
 
p6整数型,对端的端口号
 
p7整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到心跳包响应也没收到对端发来的任意数据,此时Core会认为通信链路已断开,Core会重新尝试恢复通信链路

注意1:心跳包是由开发者在Lua代码中以不大于p7的心跳时间间隔向服务器发送一包数据,UDP的另一端应返回心跳包响应数据。心跳包及响应的具体内容和长度由您自己定义。 注意2:当p7的值为0的时候,Core默认关闭心跳机制(即Core不会因为对端长时间没有数据下发而重启wifi模块),但真正开发产品时还是需要您和对端的开发人员商量好心跳包的策略,这样就能保证wifi模块常年不掉线。

应用示例:


r1,r2 = LIB_WifiUdpRecv()

函数描述: 查询是否收到UDP对端发来的数据,如果收到数据则返回接收到的数据。注意对端发来的每个数据包尽量不要大于256字节,且数据包时间间隔尽量不要小于100ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_WifiUdpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过256字节,发送间隔时间也尽量大于100ms 注意:只有当esp8266连上AP后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


MQTT通信


LIB_MQTTConfig(p1,p2,p3,p4,p5,p6,p7)

函数描述: 配置MQTT工作

p1选择MQTT通信的载体是WIFI(esp8266)还是以太网(w5500)
 "WIFI","ETHERNET"
p2MQTT连接参数: client ID
 字符串类型
p3MQTT连接参数: user name
 字符串类型
p4MQTT连接参数: password
 字符串类型
p5MQTT连接参数: keepalive ,单位:秒
 整数型
p6MQTT订阅路径: subscribe topic
 字符串类型
p7订阅消息的QOS等级
 "QOS0","QOS1","QOS2"

应用示例:


r1,r2,r3 = LIB_MqttRecvSub()

函数描述: 查询是否收到服务器( broker )下发的订阅消息

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2字符串型,接收到的订阅数据的topic
 
r3字符串型,接收到的订阅数据的内容
 

应用示例:


LIB_MqttSendPub(p1,p2,p3)

函数描述: 向服务器订阅的p2主题publish消息 注意:只有当MQTT连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1QOS等级
 "QOS0","QOS1","QOS2"
p2MQTT发布路径: publish topic
 字符串类型
p3MQTT发布内容
 字符串类型

应用示例:


LIB_JsonParse(p1,p2,p3)

函数描述: 根据JsonPath(p2)来提取Json文本(p1)中所要找的文本(value) 注意:该函数只能将Json的value以字符串形式解析出来,不管value是数值型还是字符串型

p1Json文本
 字符串类型
p2Json路径
 字符串类型
p3(可选)要解析的value数据类型
 "Number":解析数值型(float)
"String":解析字符串型
"Bool":解析布尔型
r1解析出的value值
 如果参数不含p3,r1返回的只会是字符串类型;如果含p3,r1将根据p3的类型返回不同类型的值

应用示例:


NBIOT TCP通信(m5311)


LIB_NbTcpConfig(p1,p2,p3,p4,p5,p6,p7,p8)

函数描述: 配置NB模块(m5311)占用的引脚端口,并以TCP Client方式和Server(服务器)通信

p1m5311模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2m5311模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置m5311模块的RST引脚是低电平复位还是高电平复位(取决于您的NB模块电路实现原理)
 "LOW","HIGH"
p4m5311模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置m5311模块的PWR引脚是低电平开机还是高电平开机(取决于您的NB模块电路实现原理)
 "LOW","HIGH"
p6字符串型,服务器的IP地址
 
p7整数型,服务器的端口号
 
p8整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会重新尝试连接服务器

注意1:心跳包是由开发者在Lua代码中以不大于p8的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p8的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启NB模块),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证NB模块常年不掉线。

应用示例:


r1,r2 = LIB_NbTcpRecv()

函数描述: 查询是否收到TCP server发来数据,如果收到数据则返回接收到的数据。注意服务端下发的每个数据包尽量不要大于100字节,且数据包时间间隔尽量不要小于1秒

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_NbTcpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过100字节,发送间隔时间也尽量大于100ms 注意:只有当TCP连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


NBIOT UDP通信(m5311)


LIB_NbUdpConfig(p1,p2,p3,p4,p5,p6,p7,p8)

函数描述: 配置NB模块(m5311)占用的引脚端口,并以Udp方式和Udp对端通信

p1m5311模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2m5311模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置m5311模块的RST引脚是低电平复位还是高电平复位(取决于您的NB模块电路实现原理)
 "LOW","HIGH"
p4m5311模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置m5311模块的PWR引脚是低电平开机还是高电平开机(取决于您的NB模块电路实现原理)
 "LOW","HIGH"
p6字符串型,Udp对端的IP地址
 
p7整数型,Udp对端的端口号
 
p8整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内没收到Udp对端发的任何数据,此时Core会认为Udp对端已断联,Core会重新尝试连接Udp对端

注意1:心跳包是由开发者在Lua代码中以不大于p8的心跳时间间隔向Udp对端发送一包数据,并且Udp对端应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和Udp对端开发人员商量。 注意2:当p8的值为0的时候,Core默认关闭心跳机制(即Core不会因为长时间没有收到Udp对端数据而重启NB模块),但真正开发产品时还是需要您和Udp对端开发人员商量好心跳包的策略,这样就能保证NB模块常年不掉线。

应用示例:


r1,r2 = LIB_NbUdpRecv()

函数描述: 查询是否收到Udp 对端发来数据,如果收到数据则返回接收到的数据。注意Udp对端发的每个数据包尽量不要大于100字节,且数据包时间间隔尽量不要小于1秒

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_NbUdpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过100字节,发送间隔时间也尽量大于100ms

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


NBIOT MQTT通信(m5311)


LIB_NbMqttM5311Config(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13)

函数描述: 配置NB-IOT模块(m5311)以MQTT方式工作,并设置相关参数

p1m5311模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2m5311模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置m5311模块的RST引脚是低电平复位还是高电平复位(取决于您的NB模块电路实现原理)
 "LOW","HIGH"
p4m5311模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置m5311模块的PWR引脚是低电平开机还是高电平开机(取决于您的NB模块电路实现原理)
 "LOW","HIGH"
p6字符串型,服务器的IP地址
 
p7整数型,服务器的端口号
 
p8MQTT连接参数: client ID
 字符串类型
p9MQTT连接参数: user name
 字符串类型
p10MQTT连接参数: password
 字符串类型
p11MQTT连接参数: keepalive ,单位:秒
 整数型
p12MQTT订阅路径: subscribe topic
 字符串类型
p13订阅消息的QOS等级
 "QOS0","QOS1","QOS2"

应用示例:


r1,r2,r3 = LIB_NbMqttM5311RecvSub()

函数描述: 查询是否收到服务器( broker )下发的订阅消息,该消息总长度尽量不要超过256字节

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2字符串型,接收到的订阅数据的topic
 
r3字符串型,接收到的订阅数据的内容
 

应用示例:


LIB_NbMqttM5311SendPub(p1,p2,p3)

函数描述: 向服务器订阅的p2主题publish消息 注意:1. 只有当MQTT连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

  1. p2和p3的长度总和尽量不要超过200字节
p1QOS等级
 "QOS0","QOS1","QOS2"
p2MQTT发布路径: publish topic
 字符串类型
p3MQTT发布内容
 字符串类型

应用示例:


r1,r2,r3,r4,r5 = LIB_NbStatusQuery()

函数描述: 查询NBIOT模块的状态,以及IMEI、IMSI、ICCID号、信号强度 注意:该函数最好在NBIOT模块上电后5秒再调用

r1字符串,指示模块当前的状态
 "power on":模块上电完成
"sim card is detected":检测到sim卡
"celluar connected" 已连上附近基站
r2字符串,IMEI号
 数字串
r3字符串,IMSI号
 数字串
r4字符串,ICCID号
 数字串
r5整数型,信号强度(RSSI)
 单位: dBm ,最小值:-113dBm。注意:该信号强度只是模块上电入网时的信号强度,并不会实时变化

应用示例:


4G TCP和UDP通信(ML302和EC800)


LIB_Cat1TcpUdpConfig(p1,p2~p10)

函数描述: 配置4G Cat1 模块(ML302-G)占用的引脚端口,并以TCP Client或UDP方式和Server(服务器)通信,以及是否开启GPS功能和设置GPS模式

p1Cat1模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2Cat1模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置Cat1模块的RST引脚是低电平复位还是高电平复位(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p4Cat1模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置Cat1模块的PWR引脚是低电平开机还是高电平开机(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p6字符串型,服务器的IP地址或域名
 
p7整数型,服务器的端口号
 
p8整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会重新尝试连接服务器
p9配置Cat1模块以TCP或者UDP方式和对端服务器通信
 "TCP","UDP"
p10配置Cat1模块的GPS是否工作,以及GPS的工作模式。注意: GPS工作的前提是和server端的通信正常
 "NO_GPS": 不开启GPS
 "NORMAL_GPS": 开启GPS,但不使用AGPS功能
 "AUTO_AGPS": 开启GPS和AGPS,并且每隔4个小时后如果再次重新上电调用LIB_Cat1TcpUdpConfig会耗费下载星历数据的流量(5KB)
 "FORCE_AGPS": 开启GPS和AGPS,并且每次重新上电后调用LIB_Cat1TcpUdpConfig必定会耗费下载星历数据的流量(5KB),该模式适合套餐流量充足的或者追求快速定位的

注意1:心跳包是由开发者在Lua代码中以不大于p8的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p8的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启NB模块),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证Cat1模块常年不掉线。

应用示例:


r1,r2 = LIB_Cat1TcpUdpRecv()

函数描述: 查询是否收到TCP/UDP Server端发来数据,如果收到数据则返回接收到的数据。注意TCP/UDP Server端下发的每个数据包尽量不要大于256字节,且数据包时间间隔尽量不要小于0.1秒

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_Cat1TcpUdpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过220字节,发送间隔时间也尽量大于100ms 注意:只有当TCP/UDP连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1table类型
 table内的元素必须为字节型,元素个数必须小于等于220个

应用示例:


LIB_Cat1TcpUdpEC800Config(p1,p2~p10)

函数描述: 配置4G Cat1 模块(EC800)占用的引脚端口,并以TCP Client或UDP方式和Server(服务器)通信,以及是否开启GPS功能和设置GPS模式

p1Cat1模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2Cat1模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置Cat1模块的RST引脚是低电平复位还是高电平复位(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p4Cat1模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置Cat1模块的PWR引脚是低电平开机还是高电平开机(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p6字符串型,服务器的IP地址或域名
 
p7整数型,服务器的端口号
 
p8整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会重新尝试连接服务器
p9配置Cat1模块以TCP或者UDP方式和对端服务器通信
 "TCP","UDP"
p10配置Cat1模块的GPS是否工作,以及GPS的工作模式。注意1: GPS工作的前提是和server端的通信正常,注意2:GPS功能仅EC800M模组支持
 "NO_GPS": 不开启GPS
 "NORMAL_GPS": 开启GPS,但不使用AP-FLASH GPS热启动功能
 "AUTO_AGPS": 开启GPS和EC800M的AP-FLASH GPS热启动功能

注意1:心跳包是由开发者在Lua代码中以不大于p8的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p8的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启NB模块),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证Cat1模块常年不掉线。

应用示例:


r1,r2 = LIB_Cat1TcpUdpEC800Recv()

函数描述: 查询是否收到TCP/UDP Server端发来数据,如果收到数据则返回接收到的数据。注意TCP/UDP Server端下发的每个数据包尽量不要大于256字节,且数据包时间间隔尽量不要小于0.1秒

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_Cat1TcpUdpEC800Send(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过220字节,发送间隔时间也尽量大于100ms 注意:只有当TCP/UDP连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1table类型
 table内的元素必须为字节型,元素个数必须小于等于220个

应用示例:


4G HTTP通信(ML302)


LIB_Cat1HttpConfig(p1,p2~p10)

函数描述: 配置4G Cat1 模块(ML302-G)占用的引脚端口,并以HTTP方式和Server(服务器)通信,以及是否开启GPS功能和设置GPS模式

p1Cat1模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2Cat1模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置Cat1模块的RST引脚是低电平复位还是高电平复位(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p4Cat1模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置Cat1模块的PWR引脚是低电平开机还是高电平开机(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p6字符串型,保留
 固定为"NONE"
p7整数型,保留
 固定为0
p8整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会重新尝试连接服务器
p9配置Cat1模块以HTTP方式和对端服务器通信,目前只有HTTP选项
 "HTTP"
p10配置Cat1模块的GPS是否工作,以及GPS的工作模式。注意: GPS工作的前提是和server端的通信正常
 "NO_GPS": 不开启GPS
 "NORMAL_GPS": 开启GPS,但不使用AGPS功能
 "AUTO_AGPS": 开启GPS和AGPS,并且每隔4个小时后如果再次重新上电调用LIB_Cat1HttpConfig会耗费下载星历数据的流量(5KB)
 "FORCE_AGPS": 开启GPS和AGPS,并且每次重新上电后调用LIB_Cat1HttpConfig必定会耗费下载星历数据的流量(5KB),该模式适合套餐流量充足的或者追求快速定位的

注意1:心跳包是由开发者在Lua代码中以不大于p8的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p8的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启NB模块),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证Cat1模块常年不掉线。

应用示例:


r1,r2,r3 = LIB_Cat1HttpGet(p1)

函数描述: 向服务器发起GET请求并接收服务器的返回数据,最大支持服务器返回200KB数据 注意:这个函数是阻塞型函数,在Lua代码中应予以考虑,服务器返回的数据是缓存在Buffer中,需调用LIB_Cat1HttpQueryBuff函数来取

p1字符串型,服务器URL地址
 例如:"http:/www.baidu.com:80/index.php"
r1整数型,函数执行结果
 1:finished 2:time out
r2整数型,服务器返回的http状态码
 例如200代表OK,404代表无法找到URL指定的资源
r3整数型,服务器返回消息的长度,
 单位:字节

应用示例:


r1,r2 = LIB_Cat1HttpQueryBuff(p1,p2)

函数描述: 该函数用来从模组缓存中读取上一次向服务器发请求所返回的数据, 注意:注意每次读取的字符串数据不要超过250个,如果需要读的字符串数据超过250个,应分多次调用该函数来读取

p1整数型,读取buffer中的起始位置
 从0开始
p2整数型,读取buffer中的结束位置
 不包含该结束位置的数据
r1整数型,实际读出的个数
 如果缓存中的实际个数小于要读取的个数,则返回缓存中的实际个数
r2字符串型,从缓存读出的字符串数据 (Http服务器返回的数据应该都是字符)
 

应用示例:


r1,r2,r3 = LIB_Cat1HttpPost(p1,p2)

函数描述: 向服务器发起POST请求并接收服务器的返回数据,最大支持服务器返回200KB数据 注意:这个函数是阻塞型函数,在Lua代码中应予以考虑,服务器返回的数据是缓存在Buffer中,需调用LIB_Cat1HttpQueryBuff函数来取

p1字符串型,服务器URL地址
 例如:"http:/www.baidu.com:80/index.php"
p2字符串型,要发送的Post 数据 ,总长度不能超过250
 例如:"{"temperature"25.0,"humidity":70}"
r1整数型,函数执行结果
 1:finished 2:time out
r2整数型,服务器返回的http状态码
 例如200代表OK,404代表无法找到URL指定的资源
r3整数型,服务器返回消息的长度,
 单位:字节

应用示例:


4G MQTT通信(ML302和EC800)


LIB_Cat1MqttML302Config(p1~p14)

函数描述: 配置Cat1 4G 模块(ML302)以MQTT方式工作,并设置相关参数

p1ML302模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2ML302模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置ML302模块的RST引脚是低电平复位还是高电平复位(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p4ML302模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置ML302模块的PWR引脚是低电平开机还是高电平开机(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p6字符串型,服务器的IP地址
 
p7整数型,服务器的端口号
 
p8MQTT连接参数: client ID
 字符串类型
p9MQTT连接参数: user name
 字符串类型
p10MQTT连接参数: password
 字符串类型
p11MQTT连接参数: keepalive ,单位:秒
 整数型
p12MQTT订阅路径: subscribe topic
 字符串类型
p13订阅消息的QOS等级
 "QOS0","QOS1","QOS2"
p14配置Cat1模块的GPS是否工作,以及GPS的工作模式。注意: GPS工作的前提是和server端的通信正常
 "NO_GPS": 不开启GPS
 "NORMAL_GPS": 开启GPS,但不使用AGPS功能
 "AUTO_AGPS": 开启GPS和AGPS,并且每隔4个小时后如果再次重新上电调用LIB_Cat1MqttML302Config会耗费下载星历数据的流量(5KB)
 "FORCE_AGPS": 开启GPS和AGPS,并且每次重新上电后调用LIB_Cat1MqttML302Config必定会耗费下载星历数据的流量(5KB),该模式适合套餐流量充足的或者追求快速定位的

应用示例:


r1,r2,r3 = LIB_Cat1MqttML302RecvSub()

函数描述: 查询是否收到服务器(broker)下发的订阅消息,该消息总长度尽量不要超过256字节

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2字符串型,接收到的订阅数据的topic
 
r3字符串型,接收到的订阅数据的内容
 

应用示例:


LIB_Cat1MqttML302SendPub(p1,p2,p3)

函数描述: 向服务器订阅的p2主题publish消息 注意:1. 只有当MQTT连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

  1. p2和p3的长度总和尽量不要超过200字节
p1QOS等级
 "QOS0","QOS1","QOS2"
p2MQTT发布路径: publish topic
 字符串类型
p3MQTT发布内容
 字符串类型

应用示例:


LIB_Cat1MqttEC800Config(p1~p14)

函数描述: 配置Cat1 4G 模块(EC800)以MQTT方式工作,并设置相关参数

p1EC800模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2EC800模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3配置EC800模块的RST引脚是低电平复位还是高电平复位(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p4EC800模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p5配置EC800模块的PWR引脚是低电平开机还是高电平开机(取决于您的Cat1模块电路实现原理)
 "LOW","HIGH"
p6字符串型,服务器的IP地址
 
p7整数型,服务器的端口号
 
p8MQTT连接参数: client ID
 字符串类型
p9MQTT连接参数: user name
 字符串类型
p10MQTT连接参数: password
 字符串类型
p11MQTT连接参数: keepalive ,单位:秒
 整数型
p12MQTT订阅路径: subscribe topic
 字符串类型
p13订阅消息的QOS等级
 "QOS0","QOS1","QOS2"
p14配置Cat1模块的GPS是否工作,以及GPS的工作模式。注意1: GPS工作的前提是和server端的通信正常,注意2:GPS功能仅EC800M模组支持
 "NO_GPS": 不开启GPS
 "NORMAL_GPS": 开启GPS,但不使用AP-FLASH GPS热启动功能
 "AUTO_AGPS": 开启GPS和EC800M的AP-FLASH GPS热启动功能

应用示例:


r1,r2,r3 = LIB_Cat1MqttEC800RecvSub()

函数描述: 查询是否收到服务器(broker)下发的订阅消息,该消息总长度尽量不要超过256字节

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2字符串型,接收到的订阅数据的topic
 
r3字符串型,接收到的订阅数据的内容
 

应用示例:


LIB_Cat1MqttEC800SendPub(p1,p2,p3)

函数描述: 向对端订阅的p2所指示的主题(topic)发送publish消息 注意:1. 只有当MQTT连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

  1. p2和p3的长度总和尽量不要超过200字节
p1QOS等级
 "QOS0","QOS1","QOS2"
p2MQTT发布路径: publish topic
 字符串类型
p3MQTT发布内容
 字符串类型

应用示例:


r1,r2,r3,r4 = LIB_Cat1StatusQuery()

函数描述: 查询Cat1模块的状态,以及IMSI、ICCID号、信号强度 注意:该函数最好在Cat1模块上电后5秒再调用

r1字符串,指示模块当前的状态
 "PowerOff":模块还未开始工作
 "PowerOn":模块上电完成
 "SimOK":sim卡正常
 "Attached":已附着附近的基站
 "Connected":已和服务器建立连接
r2字符串,Sim卡的IMSI号
 数字串
r3字符串,Sim卡的ICCID号
 数字串
r4整数型,CSQ信号强度(RSSI)
 0:低于-113dB
1:-111dB
2~30:-109dB~-53dB
31:高于-51dB
99:未知
当CSQ值低于10就表明信号不好
 注意:该信号强度只是模块上电入网时的信号强度,并不会实时变化

应用示例:


r1~r16 = LIB_Cat1GpsQuery()

函数描述: 查询Cat1是产生新的GPS定位数据,返回的数据中包含已浮点化的经度值(r2),纬度值(r3), 海拔高度值(r4),以及标准UTC时间,以供方便开发者使用,但NMEA协议字符串提供更详细的定位信息。

r1整数型,指示是否读到GPS数据
 0: 未读到
1: 已读到
r2浮点小数型,经度(longtitude),单位:度
 正数表示东经,负数表示西经
r3浮点小数型,纬度(latitude),单位:度
 正数表示北纬,负数表示南纬
r4浮点小数型,海拔(altitude),单位:米
 
r5整数型(32位),UTC时间 单位:秒
 
r6NMEA协议字符串 time
 时间:hhmmss.sss 格式参考NMEA协议的GGA格式
r7NMEA协议字符串 latitude
 维度:ddmm.mmmmN/S 格式参考NMEA协议的GGA格式
r8NMEA协议字符串 longtitude
 经度:dddmm.mmmm/E/W 格式参考NMEA协议的GGA格式
r9NMEA协议字符串 hdop
 水平精度因子 格式参考NMEA协议的GGA格式
r10NMEA协议字符串 altitude
 海拔,单位米 格式参考NMEA协议的GGA格式
r11NMEA协议字符串 fix
 定位类型,0:未定位,2:2D定位,3:3Dd定位 格式参考NMEA协议的GSA格式
r12NMEA协议字符串 cog
 运动角度 格式参考NMEA协议的VTG格式
r13NMEA协议字符串 spkm
 水平运动速度,单位:Km/h 格式参考NMEA协议的VTG格式
r14NMEA协议字符串 spkn
 水平运动速度,单位:Knots 格式参考NMEA协议的VTG格式
r15NMEA协议字符串 date
 日期,日月年 格式参考NMEA协议的RMC格式
r16NMEA协议字符串 nsat
 正在使用的卫星数量 格式参考NMEA协议的GGA格式

应用示例:


Lora通信


LIB_LoraConfig(p1,p2,p3,p4,p5,p6,p7)

函数描述: 配置Lora模块(ATK-LORA-01/02或ATK-MWCC68S/D)占用的引脚端口,以及Lora通信相关参数的初始化 注意1: ATK-MWCC68S和ATK-LORA-02模块不能互相通信,必须要同种型号的模块才可以 注意2: ATK-MWCC68S比ATK-LORA-02模块多出一个RST引脚,不用时可悬空,但也可用来当应用层代码判断CC68模块可能出现异常时复位该模块,以增强通信的稳定可靠性

p1Lora模块的UART占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2Lora模块的Aux占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3Lora模块的Md0占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p4整数型,Lora模块的通信地址
 范围:0-65535
p5整数型,Lora模块的通信信道
 范围:410Mhz-493Mhz
注意:LORA-02仅支持410Mhz-441Mhz
p6Lora模块的无线通信速率
 "0.3kpbs"
"1.2kpbs"
"2.4kpbs"
"4.8kpbs"
"9.6kpbs"
"19.2kpbs"
"38.4kpbs"
"62.5kpbs"
注意:LORA-02模块最大支持到19.2
p7Lora模块的无线发射功率
 "11dB"
"14dB"
"17dB"
"20dB"
"22dB"
注意:LORA-02最大仅支持20dB
p8(可选)Lora模块的网络NetID
 0-255,只有NetID相同的模组之间才可通信,该参数可用来组网
注意:仅MWCC68S模块支持该参数

应用示例:


r1,r2,r3 = LIB_LoraRecv()

函数描述: 查询是否收到Lora对端发来的数据,如果收到数据则返回接收到的数据来源及内容。注意对端发来的每个数据包尽量不要大于16字节,且数据包时间间隔尽量不要小于1秒

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2整数型,数据来源地址
 Lora地址范围应该在0-65535
r3table型,包含接收到的数据
 

应用示例:


LIB_LoraSend(p1,p2)

函数描述: 将p2数组中的数据发送到地址为p1的Lora对端,每包发送的数据量不要超过16字节,每包发送间隔时间也尽量大于1秒

p1整数型,发送目的地址
 范围:0-65535
p2table类型
 table内的元素必须为字节型,元素个数尽量不超过16个

应用示例:


Wifi TCP通信(内部Wifi,仅C2支持)


LIB_IntWifiTcpConfig(p1,p2,p3,p4,p5)

函数描述: 配置内部WIFI开始工作,并以TCP Client方式和Server(服务器)通信

p1字符串型,路由器SSID(账号)
 
p2字符串型,路由器Password(密码)
 
p3字符串型,服务器的IP地址或域名
 
p4整数型,服务器的端口号
 
p5整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会自动重启尝试看是否能够修复Wifi通信

注意1:心跳包是由开发者在Lua代码中以不大于p5的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p5的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证wifi模块常年不掉线。 注意3:开发者在使用心跳机制时,必须要考虑Core重启带来的后果,权衡重启是否会带来不可接受的后果!

应用示例:


r1,r2 = LIB_IntWifiTcpRecv()

函数描述: 查询是否收到TCP server发来数据,如果收到数据则返回接收到的数据。注意服务端下发的每个数据包不要大于256字节,且数据包时间间隔尽量不要小于200ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_IntWifiTcpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过256字节,发送间隔时间也尽量大于200ms 注意:只有当TCP连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


Wifi UDP通信(内部Wifi,仅C2支持)


LIB_IntWifiUdpConfig(p1,p2,p3,p4,p5)

函数描述: 配置内部WIFI开始工作,并以UDP Client方式和UDP Server通信

p1字符串型,路由器SSID(账号)
 
p2字符串型,路由器Password(密码)
 
p3字符串型,服务器的IP地址或域名
 
p4整数型,服务器的端口号
 
p5整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会自动重启尝试看是否能够修复Wifi通信

注意1:心跳包是由开发者在Lua代码中以不大于p5的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p5的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证wifi模块常年不掉线。 注意3:开发者在使用心跳机制时,必须要考虑Core重启带来的后果,权衡重启是否会带来不可接受的后果!

应用示例:


r1,r2 = LIB_IntWifiUdpRecv()

函数描述: 查询是否收到UDP server发来数据,如果收到数据则返回接收到的数据。注意服务端下发的每个数据包不要大于256字节,且数据包时间间隔尽量不要小于200ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_IntWifiUdpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过256字节,发送间隔时间也尽量大于200ms

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


Wifi MQTT通信(内部Wifi,仅C2支持)


LIB_MQTTC2Config(p1~p11)

函数描述: 配置内部WIFI开始工作,并以MQTT Client方式和MQTT Server通信

p1字符串型,路由器SSID(账号)
 
p2字符串型,路由器Password(密码)
 
p3字符串型,服务器的IP地址或域名
 
p4整数型,服务器的端口号
 
p5整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会自动重启尝试看是否能够修复Wifi通信
p6MQTT连接参数: client ID
 字符串类型
p7MQTT连接参数: user name
 字符串类型
p8MQTT连接参数: password
 字符串类型
p9MQTT连接参数: keepalive ,单位:秒
 整数型
p10MQTT订阅路径: subscribe topic
 字符串类型
p11订阅消息的QOS等级
 "QOS0","QOS1","QOS2"

注意1:心跳包是由开发者在Lua代码中以不大于p7的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p5的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证wifi模块常年不掉线。 注意3:开发者在使用心跳机制时,必须要考虑Core重启带来的后果,权衡重启是否会带来不可接受的后果!

应用示例:


r1,r2,r3 = LIB_MqttC2RecvSub()

函数描述: 查询是否收到服务器( broker )下发的订阅消息

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2字符串型,接收到的订阅数据的topic
 
r3字符串型,接收到的订阅数据的内容
 

应用示例:


LIB_MqttC2SendPub(p1,p2,p3)

函数描述: 向服务器订阅的p2主题publish消息 注意:只有当MQTT连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1QOS等级
 "QOS0","QOS1","QOS2"
p2MQTT发布路径: publish topic
 字符串类型
p3MQTT发布内容
 字符串类型

应用示例:


LIB_CloudConfig(p1~p7)

函数描述: 设置连接云的相关参数,并开始连云

p1云代号
 目前固定为"S0"
p2通信类型
 目前支持"WIFI_C2"和"4G_ML302"和"4G_EC800"
注意:如果选择的是4G_ML302或4G_EC800那么会固定占用开发板的RX0,TXO,D5,D6四个引脚,如果选择的是WIFI_C2则不占用任何引脚
p3整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于30秒
 当该值大于0时,如果Core在该间隔时间内即没收到服务器的心跳包响应也没收到服务器下发的任意数据,此时Core会认为服务器已断联,Core会自动重启尝试看是否能够修复Wifi通信或4G通信
p4字符串型,ProductName
 产品名称,如果是ShineBlink开发板,目前必须为"SBK_01"
p5字符串型,UI配置信息
 通过p5中字符串的内容,即可定义显示在小程序/App/网页端的数据内容,字符串具体格式定义方法请查阅相关文档
p6字符串型,路由器SSID(账号)
 注意:如果通信类型为"WIFI_C2"时才需要p6参数
p6配置Cat1模块的GPS是否工作,以及GPS的工作模式。注意: GPS工作的前提是和server端的通信正常
 "NO_GPS": 不开启GPS
 "NORMAL_GPS": 开启GPS,但不使用AGPS功能
 "AUTO_AGPS": 开启GPS和AGPS,并且每隔4个小时后如果再次重新上电调用LIB_Cat1HttpConfig会耗费下载星历数据的流量(5KB)
 "FORCE_AGPS": 开启GPS和AGPS,并且每次重新上电后调用LIB_Cat1MqttML302Config必定会耗费下载星历数据的流量(5KB),该模式适合套餐流量充足的或者追求快速定位的
 注意:如果通信类型为"4G_ML302"时才需要p6参数, GPS结果可以通过LIB_Cat1GpsQuery()函数查询
p7字符串型,路由器Password(密码)
 注意:如果通信类型为"WIFI_C2"时才需要p7参数

注意1:心跳包是由开发者在Lua代码中以不大于p3的心跳时间间隔向服务器发送一包数据,并且服务器应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和服务器端开发人员商量。 注意2:当p3的值为0的时候,Core默认关闭心跳机制(即Core不会因为服务器长时间没有数据下发而重启自身或者4G模块),但真正开发产品时还是需要您和服务器端开发人员商量好心跳包的策略,这样就能保证WiFi/4G模块常年不掉线。

应用示例:


r1,r2 = LIB_CloudRecv()

函数描述: 查询是否收到服务器下发的json消息

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2字符串型,接收到的消息的内容
 

应用示例:


LIB_CloudSend(p1)

函数描述: 向服务器发送json消息,json消息中的Key值必须和UI描述符中的匹配 注意:只有当云连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用。另外该函数的调用时间间隔必须大于1秒以上,低于1秒调用时会被忽略

p1需要发送的消息内容
 字符串类型

应用示例:


云接入


机智云


LIB_GizWifiConfig(p1~p8)

函数描述: 配置带有GAgent固件的wifi模块(esp8266)占用的引脚端口,wifi模块开始按照函数中的参数自动连接机智云开始工作

p1字符串类型 ,机智云开发平台为产品分配的ProductKey
 注意: 当您的产品量产时,这个ProductKey需要保密
p2字符串类型 ,机智云开发平台为产品分配的ProductSecret
 注意: 当您的产品量产时,这个ProductSecret需要保密
p3整数型,数据上传间隔时间,单位:ms,增大数据上传间隔时间有利于节省流量
 注意:该参数只会影响Rs1-Rs6,RL7-RL8,Rf1-Rf4这种整数型和浮点型的数据上传间隔时间
而像In1-In8这些状态位和RawData透传数组只要发生变化WIFI模块就会立刻上传给服务器
p4整数型,Core和WIFI模块的最大通讯间隔时间 ,单位:秒,建议该值不要小于120秒
 当该值大于0时,如果Core在该间隔时间内没收到WIFI模块的串口数据,此时Core会认为WIFI模块出问题了,Core会重新尝试通过RST引脚重启WIFI模块
当该值为0时关闭该机制
p5WIFI模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p6WIFI模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p7配网按键Key占用的core引脚配置(按键低电平有效),当检测到用户短按按键时WIFI模块开启AirLink配网,长按(3秒)时开启SoftAp配网,长按(10秒)时清空WIFI模块上的网络配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p8用来指示WIFI状态的LED灯的引脚占用的core引脚配置,WIFI模块处于AirLink配网状态时LED快闪,处于SoftAp配网状态时LED慢闪(1秒)。处于连接路由器状态时常亮,否则常灭
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用

应用示例:


LIB_Giz4GConfig(p1~p9)

函数描述: 配置带有GAgent固件的4G模块(ML302)占用的引脚端口,4G模块开始按照函数中的参数自动连接机智云开始工作

p1字符串类型 ,机智云开发平台为产品分配的ProductKey
 注意: 当您的产品量产时,这个ProductKey需要保密
p2字符串类型 ,机智云开发平台为产品分配的ProductSecret
 注意: 当您的产品量产时,这个ProductSecret需要保密
p3整数型,数据上传间隔时间,单位:ms,增大数据上传间隔时间有利于节省流量
 注意:该参数只会影响Rs1-Rs6,RL7-RL8,Rf1-Rf4这种整数型和浮点型的数据上传间隔时间
而像In1-In8这些状态位和RawData透传数组只要发生变化WIFI模块就会立刻上传给服务器
p4整数型,Core和4G模块的最大通讯间隔时间 ,单位:秒,建议该值不要小于120秒
 当该值大于0时,如果Core在该间隔时间内没收到4G模块的串口数据,此时Core会认为4G模块出问题了,Core会重新尝试通过RST引脚重启4G模块
当该值为0时关闭该机制
p54G模块的UART引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p64G模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p7配置4G模块的RST引脚是低电平复位还是高电平复位(取决于您的4G模块电路实现原理)
 "LOW","HIGH"
p84G模块的PWR引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p9配置4G模块的PWR引脚是低电平开机还是高电平开机(取决于您的4G模块电路实现原理)
 "LOW","HIGH"

应用示例:


LIB_SendToGizCloud(p1,p2)

函数描述: 向机智云发送各种类型的数据

p1字符串类型,要发送的数据的变量句柄
 如果需要发送的是输入开关状态,可以用"In1"~"In8"这8个句柄,发送值必须是0或1
 如果需要发送的是-10000~50000之间的整数值,可以用"Rs1"~"Rs6"这6个句柄
 如果需要发送的是-10000000~50000000之间的整数值,可以用"RL7"~"RL8"这2个句柄
 如果需要发送的是-1000.0~5000.0之间的小数值,可以用"Rf1"~"Rf2"这2个句柄
 如果需要发送的是-100.00~500.00之间的小数值,可以用"Rf3"~"Rf4"这2个句柄
 如果需要发送的是一串开发者自定义Hex字节数据,可以用"RawData"这个句柄,这个句柄中需放入64字节的数据
p2发送的数据值,根据上面p1不同的句柄,类型也不同
 如果p1是"In1"~"In8",该值必须是0或1
 如果p1是"Rs1"~"Rs6",该值必须是-10000~50000
 如果p1是"RL7"~"RL8",该值必须是-10000000~50000000
 如果p1是"Rf1"~"Rf2",该值必须是-1000.0~5000.0
 如果p1是"Rf3"~"Rf4",该值必须是-100.00~500.00
 如果p1是"RawData",该值一个64字节元素的Table(数组)

应用示例:


r1,r2 = LIB_RecvFromGizCloud(p1)

函数描述: 从机智云接收各种类型的数据

p1字符串类型,要接收的数据的变量句柄
 如果需要接收的是设置开关状态量,可以用"Sw1"~"Sw8"这8个句柄,如果接收到,则返回的是0或1这样的整数
 如果需要接收的是枚举值,可以用"Em1"~"Em2"这2个句柄,如果接收到,则返回的是0,1,3,4,5... 这样的整数
 如果需要接收的是在0-100范围的数值,可以用"Ws1"~"Ws4"这4个句柄,如果接收到,则返回的是0-100这样的整数
 如果需要接收的是在-10000000 - 50000000范围的数值,可以用"WL5"~"WL8"这4个句柄,如果接收到,则返回的是-10000000 - 50000000这样的整数
 如果需要接收的是64字节数据,可以用"RawData"这个句柄,如果接收到,则返回的是一个包含64字节元素的Table(数组)
r1整数型,指示是否收到机智云发下的数据
 0: 未收到数据
1: 收到数据
r2机智云下发的具体数据值,根据上面p1不同的句柄,返回的数据类型也不同
 如果p1是"Sw1"~"Sw8",返回的数据值是0或1这样的整数
 如果p1是"Em1"~"Em2",返回的数据值是0,1,3,4,5...这样的整数
 如果p1是"Ws1"~"Ws4",返回的数据值是0-100这样的整数
 如果p1是"WL5"~"WL8",返回的数据值是-10000000 - 50000000这样的整数
 如果p1是"RawData",返回的数据值是一个包含64字节元素的Table(数组)

应用示例:


LIB_SetGizWifiMode(p1)

函数描述: 设置Wifi模块进入某种工作状态

p1字符串类型,工作模式选择参数
 "FactoryReset"
"SoftAp"
"AriLink"
"FactroyTest"
"Binding"
"reboot"

应用示例:


r1=LIB_GetGizWifiState()

函数描述: 获取当前WIFI模块的工作状态

r1函数返回的状态值,具体定义如下
 0:unknow
1:Airlink
2:softap
3:station
4:connect router
5:disconnect
6:connect m2m
7:disconnect m2m

应用示例:


无线RFID


IC卡功能(RC522读写卡模块)


LIB_RC522Config(p1)

函数描述: 初始化RC522读卡模块,初始化后,后台会一直寻找有效IC卡的出现

p1RC522模块的RST引脚占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用

应用示例:


r1,r2,r3 = LIB_RC522CardFind()

函数描述: 查询是否发现有效的卡,并返回IC卡的类型字符串和4字节的UID 注意:一旦发现有效的卡后,在1秒内不管卡还在不在检测范围,调用LIB_RC522CardFind都会返回有效卡状态 1秒后如果卡确实不在检测范围后,LIB_RC522CardFind才会返回无卡状态。

r1整数型,指示是否发现有效的卡
 0: 还未发现有效的卡
1: 已发现有效的卡
r2字符串型,IC卡的类型字符串
 比如: "M1-S50","M1-S70","MF-UltraLight","MF-Pro","MF Desire"
r3table型,包含4字节的UID
 

应用示例:


r1 = LIB_RC522CardAuth(p1,p2,p3,p4)

函数描述: 验证密码p3是否和IC卡的扇区p2的密码匹配(在每次读写IC卡时都需要执行该操作)

p1密码验证模式
 "KEYA": 验证A密钥
"KEYB": 验证B密钥
p2指定需要验证密码的Sector区
 "Sector0","Sector1","Sector2","Sector3","Sector4","Sector5","Sector6","Sector7","Sector8",
"Sector9","Sector10","Sector11","Sector12","Sector13","Sector14","Sector15"
p3table类型 , IC卡的6字节密码
 table内的元素必须为字节型,元素个数必须为6个
p4table类型,IC卡的4字节UID
 table内的元素必须为字节型,元素个数必须为4个
r1整数型,指示对IC卡该扇区的密码认证是否成功
 1: 成功
0: 失败

应用示例:


r1,r2 = LIB_RC522CardRead(p1,p2)

函数描述: 读取IC卡p1扇区中的p2块的16个字节数据,执行该函数前需先执行LIB_RC522CardAuth()函数

p1指定需要执行读操作的Sector(扇区)号
 "Sector0","Sector1","Sector2","Sector3","Sector4","Sector5","Sector6","Sector7","Sector8",
"Sector9","Sector10","Sector11","Sector12","Sector13","Sector14","Sector15"
p2指定需要执行读操作的Block(块)号
 "Block0","Block1","Block2","Block3"
r1整数型,指示对IC卡该块的读操作是否成功
 1: 成功
0: 失败
r2table型,包含读到的16字节的块数据
 

应用示例:


r1 = LIB_RC522CardWrite(p1,p2,p3)

函数描述: 向IC卡的p1扇区中的p2块写入16个字节数据,执行该函数前需先执行LIB_RC522CardAuth()函数

p1指定需要执行写操作的Sector(扇区)号
 "Sector0","Sector1","Sector2","Sector3","Sector4","Sector5","Sector6","Sector7","Sector8",
"Sector9","Sector10","Sector11","Sector12","Sector13","Sector14","Sector15"
p2指定需要执行写操作的Block(块)号
 "Block0","Block1","Block2","Block3"
p3table类型 , 需要写入的16字节数据
 table内的元素必须为字节型,元素个数必须为16个
r1整数型,指示对IC卡该块的写操作是否成功
 1: 成功
0: 失败

应用示例:


ID卡读卡功能(em4001,em4102读卡器)


LIB_IdCardReaderConfig(p1)

函数描述: 配置ID卡读卡器开始工作

p1读卡器模块占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1

应用示例:


r1,r2,r3 = LIB_IdCardReaderGetContent()

函数描述: 查询是否读到ID卡,并输出ID卡的VID号和ID卡号

r1整数型,指示是否读到ID卡
 0: 未读到ID卡
1: 已读到ID卡
r2整数型,1字节(UINT8型)的VID号
 VID号是ID卡的厂商定制号或版本号
r3整数型,4字节(UINT32型)的ID号
 该ID号即是我们在ID白卡或钥匙扣上看到的号码的十六进制表达形式

应用示例:


UHF读写标签功能(R200读卡器)


LIB_R200ReaderConfig(p1,p2,p3,p4,p5)

函数描述: 配置R200 UHF读卡器开始工作

p1读卡器模块TX和RX引脚占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2读卡器模块EN引脚占用的core引脚配置,该引脚的作用是当R200模块长期工作死机(只是可能)后自动复位引脚
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3工作区域(国家)
 "DEFAULT":默认CHINA2
"CHINA2":920~925Mhz
"US":902.25~927.75Mhz
"EUROPE":865~868Mhz
"CHINA1":840~845Mhz
p4工作信道,整数型
 如果工作区域(p3)是China2区 (920.125~924.875MHz)信道值范围(0~19),共20个信道,间隔0.25M
 如果工作区域(p3)是US区(902.25~927.75MHz)信道值范围(0~51),共52个信道,间隔0.5M
 如果工作区域(p3)是Europe区(865.1~867.9MHz)信道值范围(0~14),共15个信道,间隔0.2M
 如果工作区域(p3)是China1区 (840.125~844.875MHz)信道值范围(0~19),共20个信道,间隔0.25M
p5发射功率,整数型 ,可以通过降低发射功率来缩小读卡器扫描标签的距离
 单位:0.01dBm, 最大值2000, 即20dBm 。建议最低值不低于500

应用示例:


r1,r2 = LIB_R200GetCard()

函数描述: 查询R200读卡器是否扫描到标签卡,当扫描到时返回扫描到的数量,以及每张标签卡的12字节标签卡号(EPC),EPC= eletronic product code

r1整数型,指示扫描到多少个标签卡号
 0: 未扫描到
大于1: 扫描到r1张标签卡号
r2table型,包含扫描到的r1张标签卡的12字节标签卡号
 

应用示例:


r1,r2 = LIB_R200GetRssiCard()

函数描述: 查询R200读卡器是否扫描到标签卡,当扫描到时返回扫描到的数量,以及每张标签卡的12字节标签卡号(EPC)和1个字节的RSSI信号强度

r1整数型,指示扫描到多少个标签卡号
 0: 未扫描到
大于1: 扫描到r1张标签卡号
r2table型,包含扫描到的r1张标签卡的12字节标签卡号以及每张卡的RSSI强度
 

应用示例:


r1 = LIB_R200SetCard(p1,p2,p3,p4)

函数描述: 设置放在读卡器范围内的某个标签的密码和标签卡号,并返回结果代码 注意: 该函数是阻塞型的,所以调用该函数会比较耗时

p132bit整数类型,如0x12345678
 标签卡的旧密码,注意只有旧密码(p1)正确时,p2(新密码)和p3(新标签卡号)才能成功设置
p232bit整数类型,如0x12345678
 将要设置的标签卡新密码
p3整数类型,卡片信号稳定度
 该值越大就越能避免写卡时误写了周围其他的卡,但写卡的过程会耗费更长时间,一般建议设为6
p4table类型
 table内有12个元素,为12个字节新的标签卡号
r1整数类型
 返回的错误代码,0表示成功,大于0表示失败,需要看具体的失败代码
1读卡器无法定位到一张稳定的标签,因为标签不在通信范围内或者周围有其他标签干扰
2关闭读卡器的扫描工作状态时出现问题
3写密码select超时
4写密码select失败
5写密码超时
6写密码超次数
7写密码时,标签不在现场,或标签号不对
8二次写密码时,标签密码错误
9二次写密码未知错误
10二次写密码超时
11二次写密码超次数
12备用
13二次写密码select超时
14二次写密码select失败
15Lock操作前select超时
16Lock操作前select失败
17Lock时超时
18Lock时超次数
19Lock时,标签不在现场,或标签号不对
20Lock时,用的标签密码不对
21写标签卡号前select超时
22写标签卡号前select失败
23写标签卡号超时
24写标签卡号超次数
25写标签卡号时,标签不在现场,或标签号不对
26写标签卡时,密码不正确

应用示例:


有线通信:连接电脑


以太网TCP通信(W5500)


LIB_EthTcpConfig(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11)

函数描述: 配置以太网模块(w5500 spi接口)的cs和rst占用的端口,并以TCP Client方式和Server(服务端)通信

p1W5500模块的cs占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p2W5500模块的rst占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3table类型 自身mac地址
 table内的元素必须为字节型,元素个数必须等于6个
p4table类型 自身ip地址
 table内的元素必须为字节型,元素个数必须等于4个
p5table类型 子网掩码
 table内的元素必须为字节型,元素个数必须等于4个
p6table类型 网关ip地址
 table内的元素必须为字节型,元素个数必须等于4个
p7table类型 dns地址
 table内的元素必须为字节型,元素个数必须等于4个
p8table类型 server端ip地址
 table内的元素必须为字节型,元素个数必须等于4个
p9整数型,server端的端口号
 0-65535
p10整数型,client端的端口号
 0-65535
p11整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到Server端的心跳包响应也没收到Server端下发的任意数据,此时Core会认为Server已断联,Core会重新尝试连接Server

注意1:心跳包是由开发者在Lua代码中以不大于p11的心跳时间间隔向Server发送一包数据,并且Server应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和Server端开发人员商量。 注意2:当p11的值为0的时候,Core默认关闭心跳机制(即Core不会因为Server端长时间没有数据下发而重启以太网模块),但真正开发产品时还是需要您和Server端开发人员商量好心跳包的策略,这样就能保证以太网模块常年不掉线。

应用示例:


r1,r2 = LIB_EthTcpRecv()

函数描述: 查询是否收到TCP server发来数据,如果收到数据则返回接收到的数据。注意server端下发的每个数据包不要大于256字节,且数据包时间间隔尽量不要小于100ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_EthTcpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过256字节,发送间隔时间也尽量大于100ms 注意:只有当TCP连接成功后,调用该函数才会发送,否则该函数会自动忽略对其的调用

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


以太网UDP通信(W5500)


LIB_EthUdpConfig(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11)

函数描述: 配置以太网模块(w5500 spi接口)的cs和rst占用的端口,UDP模式

p1W5500模块的cs占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p2W5500模块的rst占用的core引脚配置
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3table类型 自身mac地址
 table内的元素必须为字节型,元素个数必须等于6个
p4table类型 自身ip地址
 table内的元素必须为字节型,元素个数必须等于4个
p5table类型 子网掩码
 table内的元素必须为字节型,元素个数必须等于4个
p6table类型 网关ip地址
 table内的元素必须为字节型,元素个数必须等于4个
p7table类型 dns地址
 table内的元素必须为字节型,元素个数必须等于4个
p8table类型 目标端ip地址
 table内的元素必须为字节型,元素个数必须等于4个
p9整数型,目标端的端口号
 0-65535
p10整数型,本地端的端口号
 0-65535
p11整数型,心跳包间隔时间 ,单位:秒,建议该值不要小于20秒
 当该值大于0时,如果Core在该间隔时间内即没收到对端的心跳包响应也没收到对端下发的任意数据,此时Core会认为对端已断联,Core会重新启动UDP

注意1:心跳包是由开发者在Lua代码中以不大于p11的心跳时间间隔向UDP对端发送一包数据,并且对端应返回心跳包响应数据。心跳包及响应的具体内容和长度由您和对端开发人员商量。 注意2:当p11的值为0的时候,Core默认关闭心跳机制(即Core不会因为对端长时间没有数据下发而重启UDP),但真正开发产品时还是需要您和对端开发人员商量好心跳包的策略,这样就能保证以太网模块常年不掉线。

应用示例:


r1,r2,r3,r4 = LIB_EthUdpRecv()

函数描述: 查询是否收到Udp对端发来数据,如果收到数据则返回接收到的ip地址、端口号以及数据。注意对端下发的每个数据包不要大于256字节,且数据包时间间隔尽量不要小于100ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,4个元素,UDP对端的IP地址
 
r3整数型,UDP对端的端口号
 
r4table型,对端发来的数据
 

应用示例:


LIB_EthUdpSend(p1)

函数描述: 发送p1数组中的数据,每包发送的数据量不要超过256字节,发送间隔时间也尽量大于100ms

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


r1 = LIB_MbRtuMasterSendTrans(p1~p4)

函数描述: 根据p1不同的modbus功能码以及p1之后的参数,生成符合modbus协议格式的hex数据流,并以table数组形式返回

p1字符串类型
 p1可为如下八个Modbus功能码之一
"01","02","03","04","05","06","0F","10"
p2整数型
 需要通信的从机地址,1~255
p3和p4数据类型不固定
 当p1="01"时,表示读线圈。p3=起始地址(0-0xFFFF),p4=个数(1-256)
 当p1="02"时,表示读离散输入量。p3=起始地址(0-0xFFFF),p4=个数(1-256)
 当p1="03"时,表示读保持寄存器。p3=起始地址(0-0xFFFF),p4=个数(1-100)
 当p1="04"时,表示读输入寄存器。p3=起始地址(0-0xFFFF),p4=个数(1-100)
 当p1="05"时,表示写单个线圈。p3=起始地址(0-0xFFFF),p4=线圈值(0或1)
 当p1="06"时,表示写单个寄存器。p3=起始地址(0-0xFFFF),p4=16位寄存器值
 当p1="0F"时,表示写多个线圈。p3=起始地址(0-0xFFFF),p4=数组,数组中元素的个数等于要写入的线圈个数,0和1代表线圈值 ,注意:元素个数不能超过256个
 当p1="10"时,表示写多个寄存器。p3=起始地址(0-0xFFFF),p4=数组,数组中元素的个数等于要写入的寄存器个数,值即是要写入的寄存器的值 ,注意:元素个数不能超过123个
r1数组类型
 返回的数组即为符合modbus协议格式的hex数据流数组

应用示例:


r1,r2 = LIB_MbRtuMasterRecvTrans(p1,p2)

函数描述: 根据p1功能码的类型,将从机发来的应答结果hex数据流数组p2解析出结果

p1字符串类型
 p1可为如下八个Modbus功能码之一
"01","02","03","04","05","06","0F","10"
p2table型
 从机发来的应答数据(需要被解析的数据流数组)
r1整数型,表示结果
 r1大于0表示应答正确,小于等于零表示有问题。例如-1表示应答报文格式有问题,其他值为Modbus异常
r2table型
 r2仅在读取类型的功能码时才会有,根据读取的类容不同,返回的table包含的数据意义也不同,比如"01"时包含的是各个线圈的值,"03"时包含的是各个寄存器的值

应用示例:


传感器:环境测量


SHT3x温湿度传感器


LIB_Sht3xConfig(p1,p2,p3)

函数描述: 配置sht3x温湿度传感器以默认参数周期性工作(mps="10",repeatability="MEDIUM")

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2mps参数,传感器每秒转换次数,mps的详细解析请参看sht3x的官方资料
 "0.5","1","2","4","10"
以上数据可以作为您在代码中读传感器的周期参考
p3repeatability参数,传感器精度等级,repeatability的详细解析请参看sht3x的官方资料
 "HIGH","MEDIUM","LOW"

应用示例:


r1,r2,r3 = LIB_Sht3xGetResult()

函数描述: 查询SHT30/SHT31温湿度传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2number浮点型,温度
 
r3number浮点型,湿度百分比
 

应用示例:


BMP280气压计/温度传感器


LIB_BMP280Config(p1)

函数描述: 配置BMP280气压计传感器开始工作,以每秒输出26.32组数据的频率工作。

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


r1,r2,r3 = LIB_BMP280GetResult()

函数描述: 查询BMP280温度/气压传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2number浮点型,温度,单位:度
 
r3number浮点型,气压值,单位:帕(Pa)
 

应用示例:


BH1750光照强度传感器


LIB_BH1750Config(p1)

函数描述: 配置BH1750光照强度传感器开始工作,以每秒输出5组数据的频率工作。

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


r1,r2 = LIB_BH1750GetResult()

函数描述: 查询BH1750光照强度传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2number浮点型,光照强度,单位:勒克斯(lx)
 

应用示例:


红外非接触式测温


LIB_IfrTempConfig(p1)

函数描述: 配置红外测温传感器开始工作,以每秒输出5组数据的频率工作。

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


r1~r5 = LIB_IfrTempGetResult()

函数描述: 查询红外测温传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2number浮点型,环境温度
 
r3number浮点型,输出电压,单位uV
 
r4number浮点型,物体表面温度
 
r5number浮点型,人体温度
 

应用示例:


SM9541压力和温度测量


LIB_SM9541Config(p1,P2,P3)

函数描述: 配置SM9541压力传感器开始工作,并启动传感器,每300毫秒输出一个数

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2浮点数,SM9541传感器的MinPressure 单位:cmH2O
 该值请参考SM9541 DataSheet 中对应型号的Minimum pressure值
p3浮点数,SM9541传感器的MaxPressure 单位:cmH2O
 该值请参考SM9541 DataSheet 中对应型号的Maximum pressure值

应用示例:


r1,r2,r3 = LIB_SM9541GetResult()

函数描述: 查询SM9541压力传感器是否出数,大概每300ms出一个数,该数是由50个间隔6ms的点求平均值而得

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2number浮点型,压力,单位:cmH2O, 1cmH2O=0.098kPa
 
r3number浮点型,温度,单位:摄氏度
 

应用示例:


传感器:物理测量


MPU6050六轴传感器


LIB_MPU6050Config(p1)

函数描述: 配置MPU6050六轴传感器开始工作,以每秒输出10组欧拉角数据的频率工作。 注意: 模块上电自校正,需保持3秒以上静止状态,建议不要用手拿着模块。

p1传感器占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1

应用示例:


r1,r2,r3,r4 = LIB_MPU6050GetEulerAngle()

函数描述: 查询是否收MPU6050传感器模块输出的欧拉角(姿态角)

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2number型,Pitch 俯仰角
 单位:度 ,小数点后两位有效
r3number型,Yaw 航偏角
 单位:度 ,小数点后两位有效
r4number型,Roll 横滚角
 单位:度 ,小数点后两位有效

应用示例:


LIB_MPU6050Cali(p1)

函数描述: 让MPU6050六轴传感器开始校准

p1校准模式
 "PITCH_ROLL": 开始俯仰横滚角校准,需要保持水平时候再开启
"YAW": 开启航偏角校准,航向任意角度清零

应用示例:


TCS3472颜色及色温传感器


LIB_TCS3472Config(p1,p2,p3)

函数描述: 配置TCS3472颜色传感器开始工作

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2TCS3472传感器的Integration Time(可以理解为每次测量的采样时间),该时间越长转换的结果准确性越高
 "2.4ms","24ms","50ms","101ms","154ms","700ms"
p3TCS3472传感器的Gain(可以理解传感器采样前端的放大器增益),该增益越大灵敏性越高(越适合弱色)
 "GAIN_1X","GAIN_4X","GAIN_16X","GAIN_60X"

应用示例:


r1,r2,r3,r4,r5,r6 = LIB_TCS3472GetResult()

函数描述: 查询TCS3472颜色传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2number浮点型,red值
 0.0-255.0
r3number浮点型,green值
 0.0-255.0
r4number浮点型,blue值
 0.0-255.0
r5整数型,cct(相对色温)
 0-65535 单位:K(开尔文),
r6整数型,光照强度
 0-65535 单位:lux(勒克斯)

应用示例:


APDS9960(光照度,靠近检测、手势检测传感器)


LIB_ApdsConfig(p1,p2)

函数描述: 配置APDS9960传感器开始工作

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2传感器工作模式
 "PorximityAndLux": 靠近感应以及环境光强度测量
"Gesture": 手势检测

注意:"Gesture"模式时RC522 RFID读卡模块不能同时共存

应用示例:


r1,r2,r3 = LIB_ApdsGetPrxmAndLux()

函数描述: 查询APDS9960传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2整数型,靠近感应数据
 0-255 该值越大表示距离越近
r3整数型,环境光强度
 0-65535 单位:lux(勒克斯)

应用示例:


r1,r2 = LIB_ApdsGetGesture()

函数描述: 查询APDS9960传感器是否检测到手势感应

r1整数型,指示是否感应到手势动作
 0: 未感应到
1: 已感应到
r2整数型,手势动作代号
 1-4 1:up 2:down 3:left 4:right

应用示例:


HX711称重/压力/电桥测量


LIB_HX711Config(p1,p2,p3)

函数描述: 配置HX711模块工作模式,以及占用的IO口 注意:Core只使用HX711的A通道,B通道不需要使用。

p1工作模式
 "A_64"
A通道64倍增益,对应的桥式电路差分输入电压范围为:-40mv ~ 40mv
"A_128"
A通道128倍增益,对应的桥式电路差分输入电压范围为:-20mv ~ 20mv
p2选择HX711时钟引脚SCK所占用的D端口号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
p3选择HX711数据引脚DT(DOUT)所占用的D端口号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用

应用示例:


r1,r2 = LIB_HX711GetValue()

函数描述: 查询HX711是否出结果,查询频率请根据HX711 RATE引脚来调整 RATE=0时HX711一秒钟能够输出10个AD采样结果,RATE=1时HX711一秒钟能够输出70个AD采样结果

r1整数型,指示HX711是否出结果
 0: 否
1: 是
r2整数型,HX711的24位差分输入电压AD转换结果,结果带正负号
 单位:无,满量程为您给HX711提供的模拟电源电压

应用示例:


QMC5883三轴磁场强度/指南针


LIB_QMC5883Config(p1,P2)

函数描述: 配置三轴磁场强度传感器开始工作,默认每秒输出100组数据

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2三轴磁场强度的测量方位
 "RNG_2G": -2G ~ +2G
"RNG_8G": -8G ~ +8G

应用示例:


r1,r2,r3,r4,r5 = LIB_QMC5883GetResult()

函数描述: 查询QMC5883三轴磁场强度传感器是否出数,并返回传感器的测量结果 注意:该函数的调用频率不能超过每秒100次,即调用时间间隔需大于等于10毫秒

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2整数型,X轴磁场强度
 该值范围为-32768 ~ 32767,对应着您在LIB_QMC5883Config设置的-2G ~ 2G或-8G ~ 8G
r3整数型,Y轴磁场强度
 该值范围为-32768 ~ 32767,对应着您在LIB_QMC5883Config设置的-2G ~ 2G或-8G ~ 8G
r4整数型,Z轴磁场强度
 该值范围为-32768 ~ 32767,对应着您在LIB_QMC5883Config设置的-2G ~ 2G或-8G ~ 8G
r5浮点小型(NUMBER),方位角(azimuth),单位:度
 水平面上与正北方向的夹角

应用示例:


ADXL345三轴加速度/倾角


LIB_ADXL345Config(p1)

函数描述: 配置ADXL345传感器开始工作,三轴加速度测量结果输出频率默认100Hz,测量范围默认+-16g

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1

应用示例:


LIB_ADXL345AutoSleepConfig(p1,p2,p3,p4)

函数描述: 设置ADXL345传感器自动休眠及唤醒相关参数 注意: 该函数必须在LIB_ADXL345Config()之前调用,否则无效

p1字符串类型,选择某个轴作为判断进入休眠和结束休眠的参考轴
 "X":选择X轴作为参考
"Y":选择Y轴作为参考
"Z":选择Z轴作为参考
p2浮点数类型,当p1轴的加速度小于p2,并持续p3秒后,ADXL345会进入休眠状态
 单位: mg(1000mg = 1g) 范围为:62.5-15999.0mg,建议p2的大小为62.5的倍数
p3整数类型,当p1轴的加速度小于p2,并持续p3秒后,ADXL345会进入休眠状态
 单位: 秒, 范围为:1-255秒
p4浮点数类型,当p1轴的加速度大于p4时,ADXL345会自动唤醒,并在INT1引脚输出唤醒信号
 单位: mg(1000mg = 1g) 范围为:62.5-15999.0mg,建议p4的大小为62.5的倍数
p5字符串类型 设置当ADXL345自动唤醒时,ADXL345的INT1引脚输出的唤醒信号
 "HIGH":高电平脉冲
“LOW”:低电平脉冲

应用示例:


r1,r2,r3,r4 = LIB_ADXL345GetAccXYZ()

函数描述: 查询ADXL345三轴加速度传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2整数型,X轴加速度
 单位: mg (1000mg = 1g)
r3整数型,Y轴加速度
 单位: mg (1000mg = 1g)
r4整数型,Z轴加速度
 单位: mg (1000mg = 1g)

应用示例:


VL53L0X激光测距


LIB_VL53L0XConfig(p1,p2)

函数描述: 配置VL53L0X传感器开始工作

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2传感器工作模式
 "Default":默认模式
"HighAccuracy":高精度模式
"LongRange":长距离模式
"HighSpeed":高速模式
各种工作模式性能介绍每次测量耗时(毫秒)测距范围(米)精度应用场景
"Default"301.23% ~ 12%通用场景
"HighAccuracy"2001.23%以内精确测量场景
"LongRange"3323% ~ 12%远距离,但仅适合暗光场景
"HighSpeed"201.25%左右要求测量速度快,但精度不追求太高的场景

应用示例:


r1,r2 = LIB_VL53L0XGetDistance()

函数描述: 查询VL53L0X传感器是否测量出距离

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2整数型,传感器测量出来的距离
 单位:毫米

应用示例:


超声波测距


LIB_US015Config(p1,p2)

函数描述: 配置超声波测距传感器开始工作 注意:US-015超声波模块固定占用Core的D4,D5引脚,D4-->Echo,D5-->Trig。

应用示例:


r1,r2 = LIB_US015GetDistance()

函数描述: 查询超声波测距传感器是否测量出距离,如果障碍物在传感器量程之外,该函数将不会有输出或者返回值r2为99999无效值

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2整数型,传感器测量出来的距离
 单位:毫米

应用示例:


GPS定位/授时


LIB_NEO6MConfig(p1)

函数描述: 配置GPS模块开始工作

p1GPS模块占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1

应用示例:


r1,r2,r3,r4,r5 = LIB_NEO6MGetGpsData()

函数描述: 查询是否读到GPS数据

r1整数型,指示是否读到GPS数据
 0: 未读到
1: 已读到
r2浮点小数型,经度(longtitude),单位:度
 正数表示东经,负数表示西经
r3浮点小数型,纬度(latitude),单位:度
 正数表示北纬,负数表示南纬
r4浮点小数型,海拔(altitude),单位:米
 
r5整数型,UTC时间 单位:秒
 

应用示例:


心率/脉搏测量


LIB_HrAlgorithmConfig()

函数描述: 为PulseSensor心率脉搏传感器算法准备好运行环境

应用示例:


r1,r2,r3 = LIB_HrGetBpmIbi(p1)

函数描述: 该函数向算法喂传感器原始数据的同时也查询算法是否输出有效心率值和脉搏区间

p1整数型,喂给心率算法的传感器原始数据
 该原始数据为2ms间隔的心率传感器AD值
r1整数型,指示算法是否检测到一个有效的BPM和IBI数据
 0: 未检测到
1: 已检测到
r2整数型,BPM
 每分钟的心跳数
r3整数型,IBI 单位:毫秒
 相邻两次脉搏的间隔时间,心电图曲线中的(R-R间隔)

应用示例:


传感器:气体测量


CCS811 TVOC/eCO2传感器


LIB_CCS811Config(p1,p2)

函数描述: 配置CCS811气体传感器开始工作

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2CCS811传感器产生测量结果的周期
 "1S","10S","60S","250MS"

应用示例:


r1,r2,r3,r4,r5 = LIB_CCS811GetResult()

函数描述: 查询CCS811传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2整数型,Tvoc 单位:ppb
 挥发性有机化合物气体 0ppb-1000ppb
r3整数型,eCO2 单位:ppm
 等效二氧化碳 400ppm-5000ppm
r4整数型,rawdata中的i 单位:uA
 current through the sensor, 流经传感器的电流,范围:1-63uA
r5整数型,rawdata中的u 单位:(1.65v/1023)
 raw ADC reading of the voltage across the sensor, 范围:0-1023

应用示例:


LIB_CCS811SetCompensate(p1,p2)

函数描述:如果您设计的系统有条件可以得到环境温度和湿度值时,可以对CCS811进行环境温度和湿度补偿。 注意:该函数不需要一直调用,可以视环境温湿度的变化情况每隔一段时间补偿一次。

p1NUMBER类型(浮点小数),温度
 单位:℃(度)
p2整数类型,湿度
 单位:%

应用示例:


ENS160/SGP30 TVOC/eCO2传感器


LIB_TVOCConfig(p1,p2)

函数描述: 配置ENS160/SGP30 TVOC气体传感器开始工作

p1传感器占用的core引脚配置
 "IIC0": SCL0,SDA0
"IIC1": SCL1,SDA1
p2ENS160/SGP30传感器产生测量结果的周期
 "1S","10S","60S"

应用示例:


r1~r8 = LIB_TVOCGetResult()

函数描述: 查询ENS160/SGP30传感器是否出数

r1整数型,指示是否读取到传感器结果数据
 0: 还未读取到数据
1: 已读取到数据
r2整数型,Tvoc 单位:ppb
 挥发性有机化合物气体 0–65000ppb
r3整数型,eCO2 单位:ppm
 等效二氧化碳 400–65000ppm
r4整数型,AQI ,无单位
 空气质量等级(德国标准,详情请参看ens160的datasheet),范围1~5,1表示空气质量最好
注意:SGP30传感器无此数据,返回0值
r5整数型,ValidityFlag
 0:NormalOperation
1:Warm-Up
2:Start-Up
3:InvalidOutput
详情请参看ENS160的datasheet
注意:SGP30传感器无此数据,返回0值

应用示例:


LIB_TVOCEnvCompensate(p1,p2)

函数描述:如果您设计的系统有条件可以得到环境温度和湿度值时,可以对ENS160/SGP30进行环境温度和湿度补偿。 注意:该函数不需要一直调用,可以视环境温湿度的变化情况每隔一段时间补偿一次。

p1NUMBER类型(浮点小数),温度
 单位:℃(度)
p2NUMBER类型(浮点小数),湿度
 单位:%

应用示例:


ZPH04 PM2.5传感器


LIB_ZPH04Config(p1)

函数描述: 配置PM2.5传感器开始工作

p1读卡器模块占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1

应用示例:


r1,r2 = LIB_ZPH04GetPM25()

函数描述: 查询PM2.5传感器是否出数据,并输出传感器值

r1整数型,指示是否读传感器数据
 0: 未读到
1: 已读到
r2浮点小数型,PM2.5值
 单位:ug/m^3 微克每立方米

应用示例:


ZE08K 甲醛传感器


LIB_ZE08KConfig(p1)

函数描述: 配置甲醛传感器开始工作

p1读卡器模块占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1

应用示例:


r1,r2 = LIB_ZE08KGetCH2O()

函数描述: 查询甲醛传感器是否出数据,并输出传感器值

r1整数型,指示是否读传感器数据
 0: 未读到
1: 已读到
r2整数型,甲醛值,单位:PPB
 1000PPB=1PPM,1PPM=1mg/m^3(毫克每立方米)

应用示例:


Z19C 二氧化碳传感器


LIB_Z19CConfig(p1,p2)

函数描述: 配置Z19C二氧化碳传感器开始工作,以及开启开启自动校准

p1传感器占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2是否开启自动校准
 "AUTO_CALI_EN": 开启
"AUTO_CALI_DIS": 关闭

应用示例:


r1,r2 = LIB_Z19CGetCO2()

函数描述: 查询是否收到Z19C二氧化碳传感器模块的值

r1整数型,指示是否收到数据
 0: 未收到
1: 已收到
r2整数型,单位:PPM
 单位:度 ,小数点后两位有效

应用示例:


有线通信:连接电脑


USB相关功能


LIB_UsbConfig(p1)

函数描述: 配置USB口的工作模式 注意: 如果你的项目中同时用到Ble蓝牙功能时,一定要先初始化Ble蓝牙之后,再调用本函数。

p1USB口工作模式选择参数
 "CDC": USB接口以USB转串口(cdc)方式和PC通信
"CDC_PD": 同CDC,但不支持Lua代码中的print打印至PC了
"KBD": 模拟成USB键盘

应用示例:


r1,r2 = LIB_UsbCdcRecv()

函数描述: 查询是否收到USB串口数据,如果收到数据则返回接收到的数据。注意pc每包发送的数据不要多于256字节,间隔不要小于100ms最好

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_UsbCdcSend(p1)

函数描述: 将table p1中的数据通过usb串口(cdc)发送出去

p1table类型
 table内的元素必须为字节型,元素个数必须小于255个

应用示例:


r1 = LIB_UsbCommPortOpenQuery()

函数描述: 查询USB线是否连上,且PC端已经打开了相应的串口端口

r1整数型,指示是否建立连接
 0: 未连接
1: 已经连上

应用示例:


LIB_UsbKbdSend(p1,p2)

函数描述: 模拟按键动作发送给电脑。注意调用该函数模拟每个按键的动作时都会阻塞LUA系统50毫秒左右

p1按键动作的模拟类型
 "SINGLE": 单个按键
"COMBINE": 组合按键
p2table类型
 p1="SINGLE"时,table内的元素必须为正确的按键标识符字符串,且元素个数不能大于255个
p1="COMBINE"时,table内的元素必须为正确的按键标识符字符串,且元素个数不能大于6个

应用示例:


r1,r2 = LIB_UsbKbdCapsLockAndNumLockQuery()

函数描述: 查询CapsLock,NumLock是否打开

r1整数型,CapsLock状态
 0: 关闭
1: 已打开
r2整数型,NumLock状态
 0: 关闭
1: 已打开

应用示例:


CH9329 USB键鼠模拟器


LIB_CH9329Config(p1)

函数描述: 配置CH9329模块占用的UART端口,以及要控制的电脑的屏幕分辨率

p1CH9329的UART占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1
p2整数类型,屏幕宽度(像素值)
 该值为屏幕水平方向像素宽度,范围:0-65535
例如某个屏幕1920*800,那么它的宽度就应该是1920
p3整数类型,屏幕高度(像素值)
 该值为屏幕垂直方向像素高度,范围:0-65535
例如某个屏幕1920*800,那么它的高度就应该是800

应用示例:


LIB_CH9329_MoveMouse(p1,p2,p3,p4,p5)

函数描述: 让鼠标光标移动至(p2,p3)的坐标位置上,并点击一下左键或者右键或者不点

p1要发送的鼠标目标值的模式
 "ABSOLUTE": 绝对坐标模式
"RELATIVE": 相对坐标模式
 注意:Win和Mac系统用绝对坐标模式就可以了,安卓系统有的不支持绝对坐标,需要用相对坐标模式
 相对坐标模式的实现稍微复杂一些耗时也会更久,其实现过程为先强行让鼠标回到零点,然后再基于零点让鼠标移动到目标位置
p2整数类型,鼠标X轴目标值
 该值为屏幕水平方向像素坐标值,屏幕最左边为0,范围:0-65535
p3整数类型,鼠标Y轴目标值
 该值为屏幕垂直方向像素坐标值,屏幕最上边为0,范围:0-65535
p4鼠标移动到目标位置后是否点击鼠标,以及左键点击还是右键点击
 "NONE","LEFT","RIGHT"
p5鼠标是单击还是双击
 "SINGLE","DOUBLE"

注意:调用该函数会导致Lua程序阻塞:ABSOLUTE模式会阻塞200ms左右,RELATIVE模式会阻塞更长时间(取决于屏幕分辨率),编程时需要加以考虑。

应用示例:


LIB_CH9329KbdSend(p1)

函数描述: 发送按键数据,最多可以同时发送8个功能键 + 6个普通键。

p1table类型
 table内的元素必须为字节型,元素个数必须为7个
table[1]表示是否按下左右Win、Shift、Alt、Ctrl这8个功能键,具体定义请看官网文档教程
table[2-7]表示6个除上面功能键以外的所有普通按键,需要同时按下几个就填几个,最多不超过6个,按键值具体编码请看官网文档教程

注意:调用该函数会导致Lua程序阻塞:阻塞100ms左右,

应用示例:


单片机常用功能


uart通用异步串口


LIB_Uart0Config(p1)

函数描述: 配置Uart0串口开始工作,并按照参数p1的值设定波特率

p1字符串类型,工作模式选择参数
 "BAUDRATE_1200"
 "BAUDRATE_2400"
 "BAUDRATE_4800"
 "BAUDRATE_9600"
 "BAUDRATE_14400"
 "BAUDRATE_19200"
 "BAUDRATE_28800"
 "BAUDRATE_31250"
 "BAUDRATE_38400"
 "BAUDRATE_56000"
 "BAUDRATE_57600"
 "BAUDRATE_76800"
 "BAUDRATE_115200"
 "BAUDRATE_230400"
 "BAUDRATE_250000"
 "BAUDRATE_460800"
 "BAUDRATE_921600"
 "BAUDRATE_1000000"

应用示例:


LIB_Uart0Rs485Config(p1,p2)

函数描述: 配置Uart0串口开始工作,并按参数p1的值设定波特率,并使用p2指定的IO引脚作为485收发方向自动控制引脚,这样当Uart Send时该引脚会自动变成低电平,平时则为高电平

p1字符串类型,工作模式选择参数
 "BAUDRATE_1200"
 "BAUDRATE_2400"
 "BAUDRATE_4800"
 "BAUDRATE_9600"
 "BAUDRATE_14400"
 "BAUDRATE_19200"
 "BAUDRATE_28800"
 "BAUDRATE_31250"
 "BAUDRATE_38400"
 "BAUDRATE_56000"
 "BAUDRATE_57600"
 "BAUDRATE_76800"
 "BAUDRATE_115200"
 "BAUDRATE_230400"
 "BAUDRATE_250000"
 "BAUDRATE_460800"
 "BAUDRATE_921600"
 "BAUDRATE_1000000"
p2选择需要配置为模拟RTS方向自动控制引脚的端口标识号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8"
"D9"
"D10"
"D11"
p3(可选)校验方式选择(仅C2支持)
 "NoneParity"
"EvenParity"
OddParity"
p4(可选)停止位选择(仅C2支持)
 "StopBit_1"
"StopBit_1_5"
"StopBit_2"

应用示例:


r1,r2 = LIB_Uart0Recv()

函数描述: 查询是否收到串口数据,如果收到数据则返回接收到的数据。注意每个数据包不要大于256字节,且数据包时间间隔尽量不要小于100ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_Uart0Send(p1)

函数描述: 发送table p1中的数据,每包发送的数据量不要超过255字节,包之间的发送间隔时间也尽量大于100ms

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


LIB_Uart0BlockSend(p1)

函数描述: 阻塞发送table p1中的数据,每包发送的数据量不要超过255字节,包之间的发送间隔时间也尽量大于10ms

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


LIB_Uart1Config(p1)

函数描述: 配置Uart1串口开始工作,并按照参数p1的值设定波特率

p1字符串类型,工作模式选择参数
 "BAUDRATE_1200"
 "BAUDRATE_2400"
 "BAUDRATE_4800"
 "BAUDRATE_9600"
 "BAUDRATE_14400"
 "BAUDRATE_19200"
 "BAUDRATE_28800"
 "BAUDRATE_31250"
 "BAUDRATE_38400"
 "BAUDRATE_56000"
 "BAUDRATE_57600"
 "BAUDRATE_76800"
 "BAUDRATE_115200"
 "BAUDRATE_230400"
 "BAUDRATE_250000"
 "BAUDRATE_460800"
 "BAUDRATE_921600"
 "BAUDRATE_1000000"

应用示例:


LIB_Uart1Rs485Config(p1,p2)

函数描述: 配置Uart1串口开始工作,并按参数p1的值设定波特率,并使用p2指定的IO引脚作为485收发方向自动控制引脚,这样当调用Uart Send时该引脚会自动变成低电平,平时则为高电平

p1字符串类型,工作模式选择参数
 "BAUDRATE_1200"
 "BAUDRATE_2400"
 "BAUDRATE_4800"
 "BAUDRATE_9600"
 "BAUDRATE_14400"
 "BAUDRATE_19200"
 "BAUDRATE_28800"
 "BAUDRATE_31250"
 "BAUDRATE_38400"
 "BAUDRATE_56000"
 "BAUDRATE_57600"
 "BAUDRATE_76800"
 "BAUDRATE_115200"
 "BAUDRATE_230400"
 "BAUDRATE_250000"
 "BAUDRATE_460800"
 "BAUDRATE_921600"
 "BAUDRATE_1000000"
p2选择需要配置为模拟RTS方向自动控制引脚的端口标识号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8"
"D9"
"D10"
"D11"
p3(可选)校验方式选择(仅C2支持)
 "NoneParity"
"EvenParity"
OddParity"
p4(可选)停止位选择(仅C2支持)
 "StopBit_1"
"StopBit_1_5"
"StopBit_2"

应用示例:


r1,r2 = LIB_Uart1Recv()

函数描述: 查询是否收到串口数据,如果收到数据则返回接收到的数据。注意每个数据包不要大于256字节,且数据包时间间隔尽量不要小于100ms

r1整数型,指示是否收到数据
 0: 未收到数据
1: 收到数据
r2table型,包含接收到的数据
 

应用示例:


LIB_Uart1Send(p1)

函数描述: 发送table p1中的数据,每包发送的数据量不要超过255字节,发送间隔时间也尽量大于100ms

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


LIB_Uart1BlockSend(p1)

函数描述: 阻塞发送table p1中的数据,每包发送的数据量不要超过255字节,包之间的发送间隔时间也尽量大于10ms

p1table类型
 table内的元素必须为字节型,元素个数必须小于256个

应用示例:


gpio引脚输入输出


LIB_GpioInputConfig(p1,p2)

函数描述: 将GPIO口设置为输入

p1选择需要配置为输入端口的端口标识号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8"
"D9"
"D10"
"D11"
p2输入模式配置
 "NOPULL": 既不上拉也不下拉
"PULLDOWN": 下拉输入
"PULLUP": 上拉输入

应用示例:


LIB_GpioOutputConfig(p1,p2)

函数描述: 将GPIO口设置为输出

p1选择需要配置为输出端口的端口标识号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8"
"D9"
"D10"
"D11"
p2输出模式配置
 "STANDARD": 标准输出
"OPENDRAIN": 开漏输出

应用示例:


r1 = LIB_GpioRead(p1)

函数描述: 读取端口电平状态

p1选择需要读取的端口标识号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8"
"D9"
"D10"
"D11"
r1整数型,指示端口读取到的电平高低
 0: 检测到低电平
1: 检测到高电平

应用示例:


LIB_GpioWrite(p1, p2)

函数描述: 控制端口的输出电平值

p1选择需要控制的端口标识号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8"
"D9"
"D10"
"D11"
P2整数型,需要输出的电平值
 0: 低电平
1: 高电平

应用示例:


LIB_GpioToggle(p1)

函数描述: 控制端口输出翻转

p1选择需要控制的端口标识号
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8"
"D9"
"D10"
"D11"

应用示例:


timer定时器


LIB_10msTimerConfig(p1)

函数描述: 配置是否使能10ms定时器

p1字符串类型,工作模式选择参数
 "DISABLE": 禁止10ms timer
 "ENABLE": 使能10ms timer

应用示例:


LIB_10msTimerCallback()

函数描述: 如果执行了LIB_10msTimerConfig("ENABLE")后,该函数每10毫秒会被系统自动调用,用户只需定义并填充该函数的具体功能即可

应用示例:


iic同步串行总线


LIB_IIC0Config(p1)

函数描述: 配置IIC0以master模式开始工作,IIC0使用Core的scl0和sda0引脚

p1字符串类型,IIC通信速率选择
 "100K":100Khz
"250K":250Khz
"400K":400Khz

应用示例:


r1 = LIB_IIC0Write(p1,p2)

函数描述: 向设备地址为p1的slave设备发送p2中的数据,该函数为阻塞型函数,如果连续失败10次后IIC0将被Core放弃。

p1整数类型
 iic slave设备地址
p2table类型
 table内的元素必须为字节型,元素个数必须小于256个
r1整数型
 1: 表示通信成功
0: 表示通信失败,失败原因可能是地址不对,器件不存在,或发送数据有误等

应用示例:


r1,r2 = LIB_IIC0Read(p1,p2)

函数描述: 从设备地址为p1的从设备读取数据,该函数为阻塞函数

p1整数类型
 iic slave设备地址
p2整数类型
 需要读取的字节数,最多256字节
r1整数型
 1: 表示通信成功
0: 表示未能读取到数据,也可能是因为通信失败:地址不对,器件不存在,或发送数据有误等
r2table类型
 table内的元素为字节型,读取的数据即存储在table中

应用示例:


LIB_IIC1Config(p1)

函数描述: 配置IIC1以master模式开始工作,IIC1使用Core的scl1和sda1引脚

p1字符串类型,IIC通信速率选择
 "100K":100Khz
"250K":250Khz
"400K":400Khz

应用示例:


r1 = LIB_IIC1Write(p1,p2)

函数描述: 向设备地址为p1的slave设备发送p2中的数据,该函数为阻塞型函数,如果连续失败10次后IIC1将被Core放弃。

p1整数类型
 iic slave设备地址
p2table类型
 table内的元素必须为字节型,元素个数必须小于256个
r1整数型
 1: 表示通信成功
0: 表示通信失败,失败原因可能是地址不对,器件不存在,或发送数据有误等

应用示例:


r1,r2 = LIB_IIC1Read(p1,p2)

函数描述: 从设备地址为p1的从设备读取数据,该函数为阻塞函数

p1整数类型
 iic slave设备地址
p2整数类型
 需要读取的字节数,最多256字节
r1整数型
 1: 表示通信成功
0: 表示未能读取到数据,也可能是因为通信失败:地址不对,器件不存在,或发送数据有误等
r2table类型
 table内的元素为字节型,读取的数据即存储在table中

应用示例:


spi串行外设接口总线


LIB_SpiMasterConfig(p1,p2,p3)

函数描述: 配置Core的SPI接口以master模式开始工作,SPI使用Core的CLK,MOSI,MISO,CS引脚 注意:该函数只能调用一次

p1字符串类型,SPI时钟速率选择
 "125K","250K","500K","1M","2M","4M","8M"
p2字符串类型,SPI通信模式选择,一般情况下Mode0和Mode3比较常用
 "Mode0","Mode1","Mode2","Mode3"
"Mode0"CPOL=0 CPHA=0, SCK active high, Data sampled on the rising edge and shifted out on the falling edge
"Mode1"CPOL=0 CPHA=1, SCK active high, Data sampled on the falling edge and shifted out on the rising edge
"Mode2"CPOL=1 CPHA=0, SCK active low, Data sampled on the falling edge and shifted out on the rising edge
"Mode3"CPOL=1 CPHA=1, SCK active low, Data sampled on the rising edge and shifted out on the falling edge
p3字符串类型,发送数据高低位顺序选择,一般情况下都是先发送一个字节的最高位"MSB_First"
 "MSB_First","LSB_First"

应用示例:


... LIB_SpiMstTransmit(p1, ...)

函数描述: SPI主机开始发送和接收数据,需要注意的是每次收发的数据个数不能超过128个字节。

p1字符串类型,传输模式
 "TxAndRx","TxThenRx","Tx","Rx"
"TxAndRx"全双工模式,发送和接收同时进行,即SPI主机发送出去多少字节,同时也会收到多少字节
"TxThenRx"单双工模式,SPI主机先发送数据,发送完后紧接着又开始接收数据
"Tx"单双工模式,SPI主机只发送数据
"Rx"单双工模式,SPI主机只接收数据

注意:不同传输模式下函数LIB_SpiMstTransmit()的输入参数和返回值不一样,下面的例子会介绍不同模式下函数的调用方法

TxAndRx 应用示例:

TxThenRx 应用示例:

Tx 应用示例:

Rx 应用示例:


PWM(1路或3路)


LIB_PwmConfig1(p1,p2)

函数描述: 将D0口配置为PWM功能,注意:C1和C2支持的周期/频率范围不同

p1整数类型,Pwm波形的周期
 C1:1-32767微秒
C2:100-32767微秒
p2整数类型,Pwm波形的极性
 0: 负极性,即有效占空比期间输出低电平
1 :正极性,即有效占空比期间输出高电平

应用示例:


LIB_PwmUpdate1(p1)

函数描述: 调整D0口输出的PWM波形占空比值

p1整数类型,脉冲宽度
 0-32767微秒

应用示例:


LIB_PwmSetPrd1(p1,p2)

函数描述: 调整D0口输出的PWM波形的周期(频率)以及占空比值, 注意:C1和C2支持的周期/频率范围不同 注意:该函数不适合频繁调用,因为该函数会有几us时间的延时,并且该函数会在当前PWM周期结束时刻才产生效果

p1整数类型,Pwm波形的周期
 C1:1-32767微秒
C2:100-32767微秒
p2整数类型,脉冲宽度
 0-32767微秒

应用示例:


LIB_PwmConfig3(p1,p2)

函数描述: 将D0, D1, D2口配置为PWM功能, 注意:C1和C2支持的周期/频率范围不同

p1整数类型,Pwm波形的周期
 C1:1-32767微秒
C2:100-32767微秒
p2整数类型,Pwm波形的极性
 0: 负极性,即有效占空比期间输出低电平
1 :正极性,即有效占空比期间输出高电平

应用示例:


LIB_PwmUpdate3(p1,p2,p3)

函数描述: 调整D0 D1 D2口输出的PWM波形占空比值

p1整数类型,DO口脉冲宽度
 0-32767微秒
p2整数类型,D1口脉冲宽度
 0-32767微秒
p3整数类型,D2口脉冲宽度
 0-32767微秒

应用示例:


LIB_PwmSetPrd3(p1,p2,p3,p4)

函数描述: 调整D0 D1 D2口输出的PWM波形的周期(频率)以及占空比值, 注意:C1和C2支持的周期/频率范围不同 注意:该函数不适合频繁调用,因为该函数会有几us时间的延时,并且该函数会在当前PWM周期结束时刻才产生效果

p1整数类型,D0 D1 D2口Pwm波形的周期
 C1:1-32767微秒
C2:100-32767微秒
p2整数类型,D0口的脉冲宽度
 0-32767微秒
p3整数类型,D1口的脉冲宽度
 0-32767微秒
p4整数类型,D2口的脉冲宽度
 0-32767微秒

应用示例:


PWM(8路扩展,仅C2支持)


LIB_PwmConfig8(p1,p2)

函数描述: 将Core的D0~D7这8个IO口配置为PWM输出功能, 注意:C1和C2支持的周期/频率范围不同

p1整数类型,Pwm波形的周期
 C1:1-32767微秒
C2:100-32767微秒
p2整数类型,Pwm波形的极性
 0: 负极性,即有效占空比期间输出低电平
1 :正极性,即有效占空比期间输出高电平

应用示例:


LIB_PwmUpdate8(p1~p8)

函数描述: 调整D0~D7口输出的PWM波形占空比值

p1整数类型,DO口脉冲宽度
 0-32767微秒
p2整数类型,D1口脉冲宽度
 0-32767微秒
p3整数类型,D2口脉冲宽度
 0-32767微秒
p4整数类型,D3口脉冲宽度
 0-32767微秒
p5整数类型,D4口脉冲宽度
 0-32767微秒
p6整数类型,D5口脉冲宽度
 0-32767微秒
p7整数类型,D6口脉冲宽度
 0-32767微秒
p8整数类型,D7口脉冲宽度
 0-32767微秒

应用示例:


LIB_PwmSetPrd8(p1,p2~p9)

函数描述: 调整D0~D7这8个IO口输出的PWM波形的周期(频率)以及占空比值, 注意:C1和C2支持的周期/频率范围不同 注意:该函数不适合频繁调用,因为该函数会有几us时间的延时,并且该函数会在当前PWM周期结束时刻才产生效果

p1整数类型,D0~D7口Pwm波形的周期
 C1:1-32767微秒
C2:100-32767微秒
p2整数类型,D0口的脉冲宽度
 0-32767微秒
p3整数类型,D1口的脉冲宽度
 0-32767微秒
p4整数类型,D2口的脉冲宽度
 0-32767微秒
p5整数类型,D3口的脉冲宽度
 0-32767微秒
p6整数类型,D4口的脉冲宽度
 0-32767微秒
p7整数类型,D5口的脉冲宽度
 0-32767微秒
p8整数类型,D6口的脉冲宽度
 0-32767微秒
p9整数类型,D7口的脉冲宽度
 0-32767微秒

应用示例:


AD


LIB_ADConfig(p1,p2)

函数描述: 同时让4个通道(A0-A3)开始AD采集工作。AD工作模式为单端输入,12-bit工作模式,4096对应最大电压3.6v

p1整数类型,每个通道缓存大小,即缓存需要存放多少个采集点才会满
 该参数须大于1,且最大值不能超过64
p2整数类型,采集时间间隔,单位:微秒(us)
 最小值不能小于200us,建议该值大于1000以上,太低了会增加CPU负荷

注意1: A0-A3引脚的输入电压均不能超过mcu的VDD 3.3V 注意2: 配置了AD功能就不能再用比较器功能了(只针对C1,因为C2没有比较器功能) 注意3: 当参数p2采集时间间隔大于1000us时,时间精度降为1ms(只针对C2) 注意4: p1 * p2 的结果须大于20ms,且该乘积应尽量为20ms的整数倍(只针对C2) 注意5: C1最高能测3.6v以内的输入电压,而C2最高只能测2.6v左右的输入电压

应用示例:


LIB_ADStop()

函数描述: 停止AD工作,再次开启AD需要重新调用LIB_ADRestart()函数

应用示例:


LIB_ADRestart()

函数描述: 停止AD工作,再次开启AD需要重新调用LIB_ADRestart()函数

应用示例:


r1,r2 = LIB_ADCheckBufFull(p1)

函数描述: 查询某个AD通道缓存是否已满,如果满了就在表中返回缓存中的数据

p1字符串型,需要查询的通道标识
 "A0","A1","A2","A3"
r1整数型,指示通道An的缓存buf是否已满,如果满了r2就会包含缓存中的所有AD采样数据
 0: 未满
1: 已满
r2table型,返回已满缓存中的数据,数据个数取决于你用LIB_ADConfig时设置的大小
 

应用示例:


电压比较器(仅C1支持)


LIB_CompConfig(p1,p2)

函数描述: 配置电压比较器开始工作,比较器的输入引脚为Core的A0引脚,注意:当配置电压比较器后就无法使用AD功能 另外电压比较器默认带迟滞功能,hysteresis=50mv

p1字符串类型,比较器的参考电压1/16Vdd - 15/16Vdd,其中Vdd为Core的电源3.3v
 "0.125Vdd"
 "0.25Vdd"
 "0.375Vdd"
 "0.5Vdd"
 "0.625Vdd"
 "0.75Vdd"
 "0.875Vdd"
 "0.0625Vdd"
 "0.1875Vdd"
 "0.3125Vdd"
 "0.4375Vdd"
 "0.5625Vdd"
 "0.6875Vdd"
 "0.8125Vdd"
 "0.9375Vdd"
p2字符串类型,比较器工作模式选择参数
 "UpAndDown" : 当A0引脚的输入电压超过或低于参考电压时,都会触发回调函数LIB_CompCallBack()的调用
 "Up" : 当A0引脚的输入电压超过参考电压时,触发回调函数LIB_CompCallBack()的调用
 "Down" : 当A0引脚的输入电压低于参考电压时,触发回调函数LIB_CompCallBack()的调用

应用示例:


LIB_CompCtrl(p1)

函数描述: 调用LIB_CompConfig配置比较器开始工作后,可以用LIB_CompCtrl函数随时打开或关闭比较器

p1字符串类型
 "CLOSE":打开比较器
"OPEN":关闭比较器

应用示例:


LIB_CompCallBack()

函数描述: 如果执行了LIB_CompConfig()让电压比较器开始工作后,每当Core的A0引脚上电压变化满足条件时,该函数会自动被调用

应用示例:


脉宽测量


LIB_PulseWidthMeasureConfig(p1,p2)

函数描述: 配置测量脉宽时的参数,测量的时间精度能够达到1us。Core中用于测量的引脚固定为D4引脚 注意:在C2中被测量波形的最大脉宽不能超过32ms,且C2不能测量连续波形(脉冲个数不能超过256个),否则将无法测量

p1字符串类型,用于配置测量引脚D4是否使能内部上拉或下拉电阻
 "NoPull"
"PullDown"
"PullUp"
p2字符串类型,用于配置触发测量的条件
 "Fall":下降沿触发
"Rise":上升沿触发
p3整数类型,滤波参数,测量的波形中脉宽小于该值的将被忽略
 单位:us

应用示例:


LIB_PulseWidthMeasureStart(p1,p2)

函数描述: 配置测量脉宽时的参数,测量的时间精度能够达到1us。Core中用于测量的引脚固定为D4引脚

p1整数类型,想要测量的高低电平脉宽数量
 由于系统缓存有限,要测量的脉宽数量最多不能超过256个,如果大于256,按256个算
p2整数类型,超时时间
 单位:毫秒

应用示例:


r1,r2 = LIB_PulseWidthMeasureFinishCheck()

函数描述: 查询脉宽测量工作是否结束,如果结束就可以从返回的table表中取出每个高低电平的脉宽(单位:us)

r1整数型,指示测量工作是否结束
 0: 测量中
1: 测量结束(结束原因可能是已完成预定的高低电平数量,也可能是超时)
r2table型,包含测量到的数据 ,正数表示该脉宽是高电平,负数表示该脉宽是低电平,单位:us
 table的元素个数反映了实际测量到的高低电平数量,当数量少于预设的值时说明测量是因超时结束的

应用示例:


脉冲计数


LIB_PulseCountMeasureConfig(p1,p2)

函数描述: 配置脉冲计数工作时的参数,配置完成后以p3设定的周期计量并更新每个周期所测的脉冲数量 注意:在C2中被测量波形的最大脉宽不能超过32ms,且C2不能测量连续波形(脉冲个数不能超过256个),否则将无法测量

p1字符串类型,用于配置测量引脚D4是否使能内部上拉或下拉电阻
 "NoPull"
"PullDown"
"PullUp"
p2字符串类型,用于配置计数的脉冲类型
 "Fall": 下降沿触发
"Rise":上升沿触发
"RiseAndFall": 上升沿和下降沿
p3整数类型,计数周期
 单位:ms,范围可从(1-0x7FFFFFFF)毫秒

应用示例:


r1,r2 = LIB_PulseCountMeasureFinishCheck()

函数描述: 查询本周期的脉冲计数的工作是否出结果

r1整数型,本周期计数工作是否完成
 0: 正在计数中
1: 计数结束
r2整数型,本周期的计数结果
 单位: 个

应用示例:


自定义脉宽波形序列发生器(仅C2支持)


r1 = LIB_WaveFormConfig(p1,p2,p3,p4,p5,p6,p7)

函数描述: 配置自定义脉宽波形序列发生器,D3引脚固定作为波形输出引脚 注意:仅C2支持该功能

p1整数类型,clk_div分频系数,范围1-255,被分频的主频为80Mhz
 分频后的频率即为波形的最小分辨率,例如clk_div=80时,频率=80Mhz/80=1Mhz
p2整数类型,idle_level
 没输出波形时(空闲时)的默认电平,1为高电平,0为低电平,如果载波使能。一般设为0
p3整数类型,reverse
 输出电平是否反向,1使能反向,0禁止反向
p4整数类型,carrier_en
 是否使能载波,carrier_en=1时使能载波,0时禁止
p5整数类型,carrier_duty_percent
 载波的占空比(1%~100%)
p6整数类型,carrier_freq_hz
 载波的频率(单位Hz)
p7整数类型,carrier_level
 载波的有效电平,1为高电平,0为低电平,一般设为1

示例1(无载波情形):

示例2(有载波情形):


LIB_WaveFormSend(p1,p2)

函数描述: 发送参数p1 table中定义的波形,波形中每个脉冲的宽度由table中的值以及分辨率决定 注意:table中的每个值正数不能超过32767,负数不能低于-32768

p1table类型
 table内的元素必须为整数型,元素个数不能超过512个,即一次最多发送512个脉冲
p2整数类型,设置是否阻塞发送,如果阻塞发送那么该函数会一直卡住直到所有波形发送完成才会返回
 1:阻塞发送,0:非阻塞发送

应用示例:


内部Flash读写


r1 = LIB_FlashGetNumber(p1)

函数描述: Core为用户提供64个Number存储区域,每个Number区域可以让用户存1个4字节的int型数据, 本函数通过p1参数来获取指定的Number区的值。

p1字符串类型,Number区索引
 "0","1","2","3","4","5","6","7","8","9",
"10","11","12","13","14","15","16","17","18","19",
"20","21","22","23","24","25","26","27","28","29",
"30","31","32","33","34","35","36","37","38","39",
"40","41","42","43","44","45","46","47","48","49",
"50","51","52","53","54","55","56","57","58","59",
"60","61","62","63"
r1整数型
 返回指定Number区的int值

应用示例:


LIB_FlashWriteNumber(p1,p2)

函数描述: Core为用户提供64个Number存储区域,每个Number区域可以让用户存1个4字节的int型数据, 本函数实现了向p1参数所指定的Number区写入int型值p2。 注意:调用该函数会造成大概100毫秒的阻塞

p1字符串类型,Number区索引
 "0","1","2","3","4","5","6","7","8","9",
"10","11","12","13","14","15","16","17","18","19",
"20","21","22","23","24","25","26","27","28","29",
"30","31","32","33","34","35","36","37","38","39",
"40","41","42","43","44","45","46","47","48","49",
"50","51","52","53","54","55","56","57","58","59",
"60","61","62","63"
p2整数型
 需要写入的int型数据

应用示例:


r1 = LIB_FlashGetString(p1)

函数描述: Core为用户提供4个String存储区域,每个String区域可以让用户存1个长度在64字节范围内的字符串, 本函数通过p1参数来获取指定的String区的字符串。

p1字符串类型,String区索引
 "0":String0
"1":String1
"2":String2
"3":String3
r1字符串型
 返回指定String区的字符串

应用示例:


LIB_FlashWriteString(p1,p2)

函数描述: Core为用户提供4个String存储区域,每个String区域可以让用户存1个长度在64字节范围内的字符串, 本函数实现了向p1参数所指定的String区写入字符串。 注意:调用该函数会造成大概100毫秒的阻塞

p1字符串类型,String区索引
 "0":String0
"1":String1
"2":String2
"3":String3
p2字符串类型
 需要写入String区的字符串

应用示例:


看门狗(WatchDog)


LIB_WatchDogConfig(p1)

函数描述: 配置看们狗按指定的溢出时间开始工作 当溢出时间到达之时,Lua代码仍然没有执行LIB_WatchDogFeed()喂狗操作,Core会自动系统重启

p1字符串类型,用于配置看门狗的溢出时间
 "0.1S","1S","10S","30S","120S"

应用示例:


LIB_WatchDogFeed()

函数描述: 喂狗

应用示例:


关键调试信息获取(仅C2支持)


r1,r2,r3,r4 = LIB_GetC2KeyDbgInfo()

函数描述: 调用该函数后,会返回各种关键调试信息,用于协助诊断一些关键问题

r1字符串型,芯片重启原因
r2字符串型,芯片crash位置信息
r3整数型,芯片底层剩余heap空间,单位byte
r4整数型,芯片WiFi是否连上Ap ,1表示连上,0表示未连上

应用示例:


产测工具相关函数(仅C2支持)


LIB_FacConfig(p1)

函数描述: 配置Core具备Fac产测功能(注意:仅C2支持该功能)

p1通讯串口占用的core引脚配置
 "UART0": TX0,RX0
"UART1": TX1,RX1

应用示例:


r1,r2 = LIB_FacSendFile(p1)

函数描述: 调用该函数后,会将TF卡中SRC文件夹下的p1命名的文件下发(SRC文件夹不存在时请手工创建一个) 注意:该函数是一个严重阻塞的函数,阻塞的的时间由整个文件传输的时间决定

p1字符串类型
 需要传输的文件名字,注意:该文件必须放在虚拟TF卡的根级目录中的"SRC/"文件夹下,且文件大小不能超过70KB
p2(可选)被发送文件的Core外部看门狗引脚设置,当该参数设置之后,对应的看门狗引脚会在下载大文件时不停的翻转电平,以防止外部的看门狗芯片复位Core
 "D0"
"D1"
"D2"
"D3"
"D4"
"D5"
"D6"
"D7"
"D8",已被Core的LED1占用
"D9",已被Core的LED2占用
"D10",已被Core的BTN1占用
"D11",已被Core的BTN2占用
r1整数型,指示是否成功发送
 0: 失败
1: 成功
r2字符串类型
 包含传输失败的信息,用于调试

应用示例:


r1,r2 = LIB_FacGetUidStr()

函数描述: 调用该函数后,会将从对端获取一个类似"090807060504030201"的芯片唯一序列号(UID) 注意: 该函数具有阻塞性,阻塞时间取决于对端应答的时间

r1整数型,指示是否成功发送
 0: 失败
1: 成功
r2字符串类型
 r1=1时包含UID,r1=0时包含错误信息

应用示例:


r1,r2 = LIB_FacWriteFlashString()

函数描述: 调用该函数后,会将一个不超过64字节的字符串写入对端的Flash String0~3 这四个区域中的其中一个。该函数可以给用户提供出厂预写一些定制信息,比如产品序列号,之后用户通过LIB_FlashGetString函数即可获取该字符串信息 注意: 该函数具有阻塞性,阻塞时间取决于对端应答的时间

p1字符串类型,String区索引
 "0":String0
"1":String1
"2":String2
"3":String3
p2字符串类型
 需要写入String区的字符串
r1整数型,指示是否成功发送
 0: 失败
1: 成功
r2字符串类型
 根据r1的值,返回相信的结果信息,例如r1=1时返回"Success"

应用示例:


工具库函数


系统垃圾回收函数


r1 = GC(p1)

函数描述: 执行Lua的垃圾回收功能,及时为系统heap释放空间

p1整数型,表示每调用多少次GC()才执行一次垃圾回收
 一般设置成1,即每次调用GC()都执行一次垃圾回收
如果为了给CPU减负,该值可以设置的大一些
r1boolean类型,总是返回true
 

注意: 也可以不用这个函数,用Lua自带的垃圾回收函数collectgarbage("collect")也可以。

应用示例:


系统堆空间使用率统计函数


LIB_LuaHeapStatistics()

函数描述: 打印输出Lua heap使用情况,打印结果可以在log.txt或usb串口终端看到

应用示例:


系统日志函数


LIB_SystemLogEnable()

函数描述: 使能系统日志,系统日志不仅可以存在sd卡上,也可以通过usb串口print出来,取决于用户设置,该功能用户不需用。

应用示例:


系统复位函数


LIB_SystemReset()

函数描述: 调用该函数后,系统会立刻重启。

应用示例:


系统唯一ID获取


LIB_GetSysUniID()

函数描述: 调用该函数后,会返回一个属于本机的9字节唯一ID号,例如"0102030405A6B7C8D9"

应用示例:


系统时间函数


r1,r2,r3,r4,r5,r6,r7 = LIB_GetDateTime()

函数描述: 获取系统年月日,时分秒以及毫秒

r1整数型,年
r2整数型,月
r3整数型,日
r4整数型,时
r5整数型,分
r6整数型,秒
r7整数型,毫秒

应用示例:


LIB_SetUtcTime(p1)

函数描述: 将UTC时间设置为系统时间

p1整数类型,UTC时间
 单位:秒

应用示例:


系统延时函数


LIB_DelayMs(p1)

函数描述: 毫秒级延时

p1整数类型,延时参数
 0-999999999毫秒

应用示例:


常用字符串处理函数


r1 = LIB_StrToTab(p1)

函数描述: 将字符串转换成table类型返回

p1字符串类型
 注意: 字符串长度不能超过256字节,否则会截断字符串
r1table类型
 

应用示例:


r1 = LIB_TabToStr(p1)

函数描述: 将table中的每个字符合并转换成字符串返回

p1table类型
 注意: table中的每个元素必须是0-255的ascii码值(否则会造成无法预料结果),且table中的元素个数不能大于256
r1字符串类型
 注意: 返回的字符串长度不会超过256字节

应用示例:


r1 = LIB_HexStrToHexTab(p1)

函数描述: 将HEX形式的字符串转换成table类型数组返回 例如将"001122AABBCC"转换成table={0x00,0x11,0x22,0xAA,0xBB,0xCC}

p1字符串类型
 注意1: 字符串长度不能超过256字节,否则会截断字符串
 注意2: 字符串长度必须是偶数
 注意3: 字符串中的每个字符必须是'0'-'9','A'-'F','a'-'f'
r1table类型
 table中的每个元素值为0x00~0xff

应用示例:


r1 = LIB_HexTabToHexStr(p1)

函数描述: 将table中的每个8位HEX值合并转换成HEX字符串返回 例如将table={0x00,0x11,0x22,0xAA,0xBB,0xCC}转换成"001122AABBCC"

p1table类型
 注意: table中的每个元素的值必须是0-255,且table中的元素个数不能大于128
r1字符串类型
 注意: 返回的字符串长度不会超过255

应用示例:


常用校验算法函数


r1 = LIB_Sum8Calculate(p1)

函数描述: 计算p1中所有元素(字节型元素)的8位(Byte型)和校验,并在r1中返回Byte型结果

p1table类型
 注意: table中的每个元素必须是0-255的值,且table中的元素个数不能大于256
r1整型数(Byte)
 返回的值不会大于0xFF

应用示例:


r1 = LIB_CrcCalculate(p1,p2)

函数描述: 根据p1指定的算法模式计算长度为p3字节数的表p2内数据的CRC,并将结果通过r1返回 该库函数中的CRC8,16,32算法从www.libcrc.org中移植

p1字符串类型,传输模式,"CRC8","CRC16","CRC_MODBUS","CRC32"
CRC8crc_start_value=0x00
CRC16crc_start_value=0x0000, crc_polynomial=0xA001
CRC16_MODBUScrc_start_value=0xFFFF, crc_polynomial=0xA001
CRC32crc_start_value=0xFFFFFFFF, crc_polynomial=0xEDB88320
p2table类型,待校验的数据
 注意: table中的每个元素必须是0-255的值,且table中的元素个数不能大于256
r1整型数,算法返回的结果
 注意: CRC8返回的是8bit数值,CRC16和CRC16_MODBUS返回的是16bit数值,CRC32返回的是32bit数值

应用示例:


Lua代码OTA接口函数


LIB_LuaOtaStart(p1,p2)

函数描述: 准备开始OTA,并记录即将下载的文件的CRC32值以及文件的大小, 该函数执行之后会自动删掉TF卡上之前的download.lua文件删掉(如果存在的话),

p1整数类型,32位整数
 即将下载的文件的CRC32值
p2整数类型,32位整数
:---:---
 即将下载的文件的的大小,单位:字节

应用示例:


LIB_LuaOtaWrite(p1)

函数描述: 将p1中的每个字符元素写入临时文件download.lua中 注意1: 执行LIB_LuaOtaWrite函数前,必须调用过LIB_LuaOtaStart函数,并且p1的元素个数不能超过256 注意2: 不要连续调用该函数,中间最好留50ms以上的时间留给系统向TF卡写入数据

p1table类型
 table中的每个元素必须是asscii字符

应用示例:


r1,r2 = LIB_LuaOtaEnd(p1)

函数描述: 调用该函数后,如果下载的文件大小(size)和CRC32校验结果都没问题,会自动将download.lua名字改为p1,然后返回该函数的执行结果 注意:即使该函数返回"Success"结果后,系统也不会实际进行Lua代码的更新,需要用户后续调用LIB_SystemReset()函数重启系统后才会真正的更新

p1字符串类型
 注意:p1必须是"main.lua"或者"main_rea.lua",不然无法真正更新lua代码
r1整数类型
 0表示:"Success"
 1表示:Error, OTA not yet start
 2表示:"Error size"
 3表示:"Error crc32"
 4表示:"Error read dowmload.lua fail"
r2字符串类型
 返回Ota下载文件的结果,只会有如下五种结果(注意:下面的size和crc32数据是举例的假数据):
 "Success"
 "Error, OTA not yet start"
 "Error size, Size should be 3500 bytes, but now is 2000 bytes"
 "Error crc32, Crc32 should be Oxab123456, but now is 0x12345678"
 "Error read dowmload.lua fail"

应用示例:


常用字节转换函数


r1.. = LIB_BC(p1..)

函数描述: 在硬件开发中经常遇到寄存器或者通信数据是字节流形式,对于Lua语言来说不太友好, BC(Byte Convert)函数可用来将字节数据转换成Lua数据类型(NUMBER和INT),或者将Lua数据类型转换成字节数据。 注意:由于处理器是小端模式,以下所有操作都是基于小端模式,所以LIB_BC函数不管是返回值还是参数都按从左到右对应从高到低。

p1字符串类型:操作指令
 注意:下面的WORD=32bit数据,HALF_WORD=16bit数据,BYTE=8bit数据
"BYTE16_F64"四个HALF_WORD型转换成NUMBER浮点数(double)
"BYTE16_F32"两个HALF_WORD型转换成NUMBER浮点数(float)
"F32_BYTE16"NUMBER浮点数转换成两个HALF_WORD型
"BYTE16_I32"两个HALF_WORD型转换成INT整数
"I32_BYTE16"INT整数转换成两个HALF_WORD型
"BYTE16_I16"一个HALF_WORD型转换成INT整数
"I16_BYTE16"INT整数转换成一个HALF_WORD型
"BYTE8_F32"四个BYTE型转换成NUMBER浮点数
"F32_BYTE8"NUMBER浮点数转换成四个BYTE型
"BYTE8_I32"四个BYTE型转换成INT整数
"I32_BYTE8"INT整数转换成四个BYTE型
"BYTE8_I16"两个BYTE型转换成INT整数
"I16_BYTE8"INT整数转换成两个BYTE型
"BYTE8_I8"一个BYTE型转换成INT整数
"I8_BYTE8"INT整数转换成一个BYTE型
"BYTE16_SWAP"将HALF_WORD中包含的两个BYTE相互交换
pn类型待定
 pn参数的个数由p1决定
rn类型待定
 返回数据rn的个数由p1决定

应用示例: