LUA 脚本API函数接口

本文档适用于M系列、W系列、X系列、F系列(固件版本 >= V4.2.401.0)。API函数中的screen、control参数均表示为目标画面ID、目标组态控件ID,后文每个API不一一介绍

1.1 控件属性类

1.1.1 change_screen(screen)

切换到指定画面

1.1.2 change_child_screen (screen)

切换到子画面,例如对话框

1.1.3 change_screen_effect(screen,effect)

切换到指定画面,使用动画效果

  • effect:动画效果。0-无动画,1-从左到右,2-从右到左,3-从上到下,4-从下到上,5-渐隐渐消

1.1.4 set_slide_screen(slide,round,start_screen,end_screen)

设置窗口滑动模式

  • slide:0-禁止滑动,1-左右滑动,2-上下滑动
  • round: 1-环回模式,尾页可以滑到首页
  • start_screen: 开始画面
  • end_screen:结束画面

1.1.5 set_button_notify_release ()

设置按钮松开通知模式,在触摸按钮上也可以滑动窗口

1.1.6 get_current_screen()

获取当前画面ID

1.1.7 set_value(screen,control,value)

设置控件数值

  • value:控件值

按钮控件:value=1 - 按下,0 - 弹起

文本控件:value - 整数或小数

也可以设置进度条、滑块、仪表、滑动选择控件等等

1.1.8 get_value(screen,control)

获取控件数值,按钮、文本、进度条、滑块、仪表等

1.1.9 set_visiable(screen,control,visiable)

设置控件是否可见

  • visiable:0-隐藏,1-显示

1.1.10 set_enable(screen,control,enable)

设置控件是否可触摸

  • enable:0-禁止触摸,1-启用触摸

1.1.11 set_fore_color(screen,control,color)

设置控件前景色,例如文本控件文字颜色,进度条显示颜色

  • color:RGB值,2个字节,RGB565

1.1.12 set_back_color(screen,control,color)

设置控件背景色,例如文本控件背景颜色,进度条背景颜色

  • color:RGB值,2个字节,RGB565

1.1.13 set_text(screen,control,text)

设置控件显示内容(字符串),文本控件,二维码控件等

  • text:字符串类型

1.1.14 set_text_roll(screen,control, speed)

设置文本控件从右往左滚动速度

  • speed:每秒多少个像素。设置为0停止滚动

1.1.15 set_text_flicker (screen,control, cycle)

设置文本控件闪烁周期

  • cycle:闪烁周期,单位10ms。设置为0停止闪烁

1.1.16 get_text(screen,control)

获取控件字符串内容(字符串),文本控件,二维码控件等

1.1.17 set_options (screen, control, options)

设置滑动选择控件的内容

  • options:选项内容,字符串格式,每一项用英文分号“;”隔开

例如:set_options (screen,control, ‘选项1;选项2;选项3;’)

1.1.18 set_screen_range(screen, control, start_screen,end_screen, round)

设置子画面窗口滑动模式,W系列支持,F、M系列不支持

  • start_screen: 开始画面
  • end_screen:结束画面
  • round:1环回模式,尾页可以滑到首页

1.1.19 play_animation(screen, control)

设置动画控件播放

1.1.20 stop_animation(screen,control)

设置动画控件停止

1.1.21 set_history_graph_value(screen,control,channel0,..,channel7)

设置历史曲线的通道值,根据通道的个数填写参数

  • channe0:通道0的值
  • channe7:通道7的值

例如有4个通道:set_history_graph_value(screen,control,1,2,3,4)

1.1.22 set_history_graph_direction(screen,control,direction)

设置历史曲线刷新方向,默认状态下,刷新方向从右往左

  • direction:0-从右往左,1-从左往右

1.1.23 set_scroll_position(screen, control, mode)

设置历史曲线的翻页

  • mode:翻页模式。2-下一页,3-上一页,4-尾页,5-首页

1.2 记录控件

1.2.1 record_set_event(screen,control,eventid)

告警类型-触发告警

  • eventid:和告警类型的数据记录控件中告警解析ID关联

1.2.2 record_reset_event(screen,control,eventid)

告警类型-解除告警

  • eventid:和告警类型的数据记录控件中告警解析ID关联

1.2.3 record_add(screen,control,record)

在末尾添加一条记录

  • record:record为字符串
例如:record_add(screen,control, “item1;item2;item3;”)

1.2.4 record_insert (screen,control,position,record)

在指定位置插入一条记录

  • position:插入位置索引
  • record:record为字符串

1.2.5 record_clear(screen,control)

清除记录数据

1.2.6 record_setoffset(screen,control,offset)

设置滚动显示位置

  • offset:当前显示的定位到该索引

1.2.7 record_get_count(screen,control)

获取记录条数

例如:local recordCnt = record_get_count(0, 1) —假设画面0、控件1位数据记录控件

1.2.8 record_read(screen,control,position)

读取一条记录,返回字符串

  • position:需要被读取的行号。索引从0开始,0即是第一行数据

1.2.9 record_modify(screen,control, position ,record)

修改一条记录

  • position:需要被修改的行号,索引从0开始,0即是第一行数据
  • record:新的修改内容

1.2.10 record_delete(screen,control,position)

删除一条记录

  • position:需要被删除的行号。索引从0开始,0即是第一行数据

1.2.11 record_select(screen,control,position)

选中一条记录

  • position:需要被选中的行号。索引从0开始,0即是第一行数据

1.2.12 record_export(screen,control)

导出记录到SD卡/U盘

1.2.13 record_set_event(screen,control,event)

触发告警

一般情况使用逻辑处理结和控件设置的对话框,就可以满足告警需求,不需要使用下面的API。

此处的告警指通过脚本触发告警和动态显示告警内容。

一般用于下列情形

  • [x] 告警条目比较多,内容具有重复规律,只有细微差异
  • [x] 告警条件具有规律性

  • event:告警事件ID

1.2.14 record_reset_event(screen,control,event)

解除告警

  • event:告警事件ID

1.2.15 on_record_parse(screen,control,event)

告警解析回调函数,通过判断告警event,返回描述告警内容的字符串。

  • event:告警事件ID

返回参数说明:

  • str:返回的字符串告警内容
_warningTb = {
--1~96
    '翅片1温度探头故障',
    '翅片2温度探头故障',
    '翅片3温度探头故障',
    '翅片4温度探头故障',
    '回气1温度探头故障',
    '回气2温度探头故障',
    '回气3温度探头故障',
    '回气4温度探头故障',
    '排气1温度探头故障',
    '排气2温度探头故障',
    '排气3温度探头故障',
    '排气4温度探头故障',
    '蒸发1温度探头故障',
    '蒸发2温度探头故障',
    '蒸发3温度探头故障',
    '蒸发4温度探头故障',
    '冷凝1温度探头故障',
    '冷凝2温度探头故障',
    '冷凝3温度探头故障',
    '冷凝4温度探头故障',
    '房内温度探头故障',
    ...
    ...
    ...
    '室内翅片1探头故障',
    '室内翅片2探头故障',
    '室内翅片3探头故障',
    '室内翅片4探头故障',
}

function on_record_parse(screen,control,event)
    local slaveId = (event // 96) + 1   --第几个告警
    local msgId = event % 96            --告警类型ID
    local curWarnMsg = ''            --告警描述

    if msgId == 0 
    then
        msgId = 1
    else
        msgId = msgId + 1 -- _warningTb初始化时,下表从1开始,即event 对应_warningTb[1]
    end

    curWarnMsg = math.ceil(slaveId)..'device : '.._warningTb[msgId]
    return curWarnMsg
end

1.3 常用回调函数

1.3.1 on_init()

系统加载LUA脚本文件之后,立即调用此回调函数,通常用于执行初始化操作。

1.3.2 on_systick()

系统每隔1秒钟自动调用此回调函数。

1.3.3 on_control_notify(screen,control,value)

用户触摸修改控件后,执行此回调函数。点击按钮控件,修改文本控件、修改滑动条都会触发此控件

  • value:为数值类型,如果需要获取文本控件的字符串值,使用get_text(screen,control)

1.3.4 on_screen_change(screen)

当画面需要切换时,执行此回调函数,screen为目标画面。

注意,此函数内部调用change_screen,不会嵌套执行on_screen_change。

1.3.5 on_press(state,x,y)

用户点击触摸屏时,执行此回调函数。

  • state:触摸状态,0-松开,1-按下,2-持续按压

  • x:为触摸X坐标

  • y:为触摸Y坐标

1.3.6 on_usb_inserted(driver)

U盘插入时,执行此回调函数

  • dirver:为U盘的盘符

1.3.7 on_usb_removed()

U盘拔出时,执行此回调函数

1.3.8 on_sd_inserted(dir)

SD卡插入通知

  • dir:盘符路径

1.3.9 on_sd_removed()

SD卡拔出通知

1.3.10 on_screen_sliding(screen, control)

用于确定手指滑动时的目标画面ID,W系列、M系列支持,F系列不支持

返回切换目标的画面的ID,left、right 、up、down,4个参数,指定左、右、上、下的页面ID,若为-1,该方向不允许滑动

  • screen:当前所在的画面
  • control:当前页面,在上面滑动的控件ID

1.4 绘图函数

1.4.1 on_draw(screen)

当界面的显示内容需要更新时,系统自动调用此函数,用户在此函数中添加自定义的绘图操作。用户绘制的内容叠加在画面内容控件上面.此函数为系统回调函数,用户不要直接调用

下面几种情况会触发此函数:

  • 界面有动画播放、视频播放、RTC时间显示的动态刷新
  • 用户操作屏幕控件
  • 通过LUA脚本或串口指令更新控件
  • 通过执行redraw

总之,界面上有任何变化,都会触发此回调函数。

1.4.2 on_pre_draw(screen)

用户绘制的内容在画面最底层,当前绘制画面需要透明,无背景图

相关说明同上

1.4.3 redraw()

发送重绘请求,触发on_draw的执行

1.4.4 screen_shoot(filename,x,y,width,height,quality)

截取屏幕窗口范围,存储到指定文件路径。W系列支持,F、M系列不支持

  • filename: 图片文件存放路径
  • x:截图的起点x坐标
  • y:截图的起点y坐标
  • width:截图的宽度
  • height:截图的高度
  • quality: JPEG图片质量,默认95

例如:screen_shoot(‘b:/shoot.jpg’,0,0,480,272, 95)

1.4.5 set_pen_color(color)

设置画笔的颜色,RGB565,用于指定线、矩形、圆等的颜色

  • color:RGB565颜色值

1.4.6 draw_line(x0,y0,x1,y1,width)

绘制直线

  • x0,y0:起始点坐标
  • x1,y1:结束点坐标
  • width:为线条的厚度,1~10

1.4.7 draw_rect(x0,y0,x1,y1,fill)

绘制矩形

  • x0,y0:左上角坐标
  • x1,y1:右下角坐标
  • fill:0不填充,1填充

1.4.8 draw_rect_alpha(x0,y0,x1,y1,alpha)

绘制实心的半透明矩形,F系列不支持

  • x0,y0:左上角坐标
  • x1,y1:右下角坐标
  • alpha:透明度0全透明~255不透明

1.4.9 draw_circle(x,y,r,fill)

绘制圆形

  • x,y:圆的中心坐标
  • r:圆的半径
  • fill:0不填充,1填充

1.4.10 draw_ellipse(x0,y0,x1,y1,fill)

绘制椭圆

  • x0,y0:左上角坐标
  • x1,y1:右下角坐标
  • fill:0不填充,1填充

1.4.11 load_image (image_id,frame_id)

加载指定图片到内存,一般用在on_init中,牺牲了开机速度,但使运行过程更流程。W系列支持,F、M系列不支持

  • image_id:图片资源的ID
  • frame_id:对应图标,可以设置帧ID,其他图片固定为0

1.4.12 draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy)

绘制图片

  • image_id:图片资源的ID
  • frame_id:对应图标,可以设置帧ID,其他图片固定为0
  • dstx:图片显示X坐标
  • dsty:图片显示Y坐标
  • width:图片显示宽度
  • height:图片显示高度
  • srcx:图片裁剪X坐标
  • srcy:图片裁剪Y坐标

1.4.13 draw_image_file(filename,dstx,dsty,width,height,srcx,srcy)

绘制图片,此方法不对图片进行缓存,效率较低,W系列支持,F、M系列不支持

  • filename:图片文件,支持JPEG/PNG
  • dstx:图片显示X坐标
  • dsty:图片显示Y坐标
  • width:图片显示宽度
  • height:图片显示高度
  • srcx:图片裁剪X坐标
  • srcy:图片裁剪Y坐标

1.4.14 load_surface (filename)

加载图片到图层,W系列支持、M系列 >= V6.1.241.00支持(裁剪显示)、F系列不支持

  • filename:图片文件,支持JPEG/PNG

例如:surface = load_surface (“c:/test.jpg”)

图层不再使用时,需要调用destroy_surface进行销毁,否则会导致内存泄漏。

1.4.15 destroy_surface (surface)

销毁图层,W系列支持、M系列 >= V6.1.241.00、F系列不支持

  • surface:图层资源指针

1.4.16 draw_surface (surface,dstx,dsty,width,height,srcx,srcy)

绘制图层,相比于draw_image_file,此方法效率较高,W系列支持、M系列 >= V6.1.241.00支持(裁剪显示)、F系列不支持

  • surface:图层资源指针
  • dstx:图片显示X坐标
  • dsty:图片显示Y坐标
  • width:图片显示宽度[可选]
  • height:图片显示高度[可选]
  • srcx:图片裁剪X坐标[可选]
  • srcy:图片裁剪Y坐标[可选]

例如:

  1. 平铺显示:draw_surface(surface, dstx, dsty)
  2. 缩放显示:draw_surface(surface, dstx, dsty, width, height)
  3. 裁剪显示:draw_surface(surface, dstx, dsty, width, height ,srcx, srcy)

1.4.17 draw_text(text,x,y,w,h,font,color,align)

显示文字

  • text:字符串
  • x:显示X坐标
  • y:显示Y坐标
  • w:显示宽度
  • h:显示高度
  • font:字体编号
  • color:颜色RGB565
  • align:对齐方式

bit0~bit1水平对齐方式,0左对齐,1居中对齐,2右对齐

bit2~bit3垂直对齐方式,0上对齐,1居中对齐,3下对齐

1.5 MODBUS协议访问

LUA中访问MODBUS/PLC等协议中定义的变量,需要通过下面的变量访问接口

mb_前缀的接口,专用于MODBUS协议,固件版本要求:W系列>=3.0.590.0,F系列>= 4.1.401.0,M系列>= V6.1.59.00

1.5.1 get_variant(name)

获取协议变量的数值

  • name:变量名称
例如:get_variant("Variable1")

1.5.2 set_variant(name,value)

设置协议变量的数值

  • name:变量名称
  • value:需要对变量赋的值
例如:set_variant("Variable1,12345)

1.5.3 mb_set_timeout (timeout)

设置从机应答超时时间

  • timeout:范围1~255,10毫秒单位

1.5.4 mb_read_coil_01 (slave,addr,quantity)

01功能码,读取线圈,成功时返回字节数组,一个字节8个coil,失败返回nil

  • slave:从机地址
  • addr:变量地址
  • quantity:读取的线圈个数

1.5.5 mb_read_input_02(slave,addr,quantity)

02功能码,读取离散输入,成功时返回字节数组,一个字节8个input,失败返回nil

  • slave:从机地址
  • addr:变量地址
  • quantity:读取离散输入寄存器的个数

1.5.6 mb_read_reg_03(slave,addr,quantity)

03功能码,读取保持寄存器,成功时返回WORD数组,失败返回nil

  • slave:从机地址
  • addr:变量地址
  • quantity:读取的保存寄存器的个数

1.5.7 mb_read_input_reg_04(slave,addr,quantity)

04功能码,读取输入寄存器,成功时返回WORD数组,失败返回nil

  • lave:从机地址
  • addr:变量地址
  • quantity:读取的输入寄存器的个数

1.5.8 mb_write_coil_05 (slave,addr,status)

05功能码,写单个线圈,成功时返回true,失败返回false

  • slave:从机地址
  • addr:变量地址
  • status:1为ON,0为OFF

1.5.9 mb_write_reg_06 (slave,addr,reg)

06功能码,写入单个保持寄存器,成功时返回true,失败返回false

  • slave:从机地址
  • addr:变量地址
  • reg:寄存器值

1.5.10 mb_write_coil_15 (slave,addr,quantity,coils)

15功能码,写多个线圈,成功时返回true,失败返回false

  • slave:从机地址
  • addr:变量地址
  • coils:字节数组,一个字节8个coil,下标索引从0开始

1.5.11 mb_write_reg_16 (slave,addr,regs)

16功能码,写入多个保持寄存器,成功时返回true,失败返回false

  • slave:从机地址
  • addr:变量地址
  • regs:寄存器WORD数组,下标索引从0开始

1.5.12 set_slave_addr(slave)

设置站号id

  • slave:从机地址

1.6 网络相关

W联型支持,F系列、M系列不支持

1.6.1 get_wifi_cfg()

返回4个参数

例如:wifi_mode, secumode, ssid, password = get_wifi_cfg()
  • wifi_mode:无线网络模式。0-禁用无线网络,1-无线网卡模式,2-AP热点模式
  • secumode:加密模式 0-AUTO(默认值) ,1-WEP, 2-WPAPSK ,3-WPAPSK2
  • ssid:无线网络名称
  • password:无线网络密码

1.6.2 set_wifi_cfg(wifi_mode, secumode, ssid, password)

设置WIFI配置,参数说明同上

1.6.3 on_wifi_callback(state,reason)

网络状态改变时,会被调用

1.6.4 get_network_state()

获取网络状态,返回一个参数

例如:state = get_network_state()

状态位说明

  • bit0-无线网络连接
  • bit1-有线网络连接
  • bit2-是否连上服务器
  • bit3-是否有客户端连上

1.6.5 set_network_cfg(dhcp, ipaddr, netmask, gateway, dns)

dhcp启用DHCP,0禁用,1启用,禁用时后面的参数才有效

  • ipaddr:静态IP
  • netmask:掩码
  • gateway:子网掩码
  • dns:域名服务器

1.6.6 get_network_cfg()

返回五个参数,说明同上

例如:dhcp, ipaddr, netmask, gateway, dns = get_network_cfg()

1.6.7 save_network_cfg()

保存网络设置,并重连网络

注意:修改网络配置、服务器参数等需要调用此函数进行保存生效,如下所示

......
set_network_cfg(dhcp, ipaddr, netmask, gateway, dns)
save_network_cfg()
......

1.6.8 set_network_service_cfg(wificom, mode, port, server_addr)

设置网络服务参数

  • wificom:默认为0,为1时启用透传模式(即无线串口屏)

  • mode:0禁用网络服务,1客户端模式,2服务器模式

  • port :服务端口,默认5050

  • server_addr:服务器地址(屏作客户端时)

1.6.9 get_network_service_cfg()

返回4个参数,说明同上

wificom, mode, port, server_addr = get_network_service_cfg()

1.6.10 scan_ap()

扫描无线热点,返回热点数目,阻塞

ap_count = scan_ap()

1.6.11 get_ap_info(index)

获取指定热点的信息

  • index:WIFI的序号,如下所示
local ap_cnt = scan_ap()
for i = 1, ap_cnt 
do
    local ssid, security, quality = get_ap_info(i - 1)
    record_add(sc_scanwifi, 1, ssid..";"..quality..";")
end
  • index 热点索引,索引从0开始
  • ssid:热点名称
  • security:加密方式
  • quality:信号质量,EW为db值,W/PW为百分比

1.6.12 start_scan_ap()

异步扫描WIFI,EW系列支持,扫描过程不会阻塞等待返回,搭配扫描回调函数使用,on_scan_ap_finish(ap_count)

function on_scan_ap_finish(ap_count)
    for i = 1, ap_count 
    do
        local ssid, security, quality = get_ap_info(i - 1)
        record_add(sc_scanwifi, 1, ssid..";"..quality..";")--添加到数据记录控件
    end
end

--用户通过触摸修改控件后,执行此回调函数。
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
function on_control_notify(screen,control,value)
    if screen == sc_wifiset
    then
        if control == 3 and value == 1
        then
            record_clear(sc_scanwifi, 1) --清除数据记录控件
            start_scan_ap()
        end
    end
end

1.6.13 client_send_data(packet)

通过客户端SOCKET发送报文 到服务器

  • packet:发送字节数组packet,下标从0开始
function my_sendToserver()
    local send_buff = {}    
    send_buff[0] = 0x00
    send_buff[1] = 0x01
    send_buff[2] = 0x02
    send_buff[3] = 0x03
    send_buff[4] = 0x04
    send_buff[5] = 0x05
    send_buff[6] = 0x06
    send_buff[7] = 0x07
    send_buff[8] = 0x08
    send_buff[9] = 0x09
    client_send_data(send_buff)
end
--用户通过触摸修改控件后,执行此回调函数。
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
function on_control_notify(screen,control,value)
    ......
    if screen == sc_tcp
    then 
        if control == 3 and value == 0
        then
            my_sendToserver()
        end
    end
    ......
end

1.6.14 server_send_data(clinet_id,packet)

通过服务端SOCKET发送报文到客户端

  • clinet_id:目标客户端ID

  • packet:发送字节数组packet,下标从0开始

function my_sendToClien()
    local send_buff = {}    
    send_buff[0] = 0x00
    send_buff[1] = 0x01
    send_buff[2] = 0x02
    send_buff[3] = 0x03
    send_buff[4] = 0x04
    send_buff[5] = 0x05
    send_buff[6] = 0x06
    send_buff[7] = 0x07
    send_buff[8] = 0x08
    send_buff[9] = 0x09
    server_send_data(1,send_buff)
end
--用户通过触摸修改控件后,执行此回调函数。
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
function on_control_notify(screen,control,value)
    ......
    if screen == sc_tcp
    then 
        if control == 3 and value == 0
        then
            my_sendToClien()
        end
    end
    ......
end

1.6.15 on_client_recv_data(packet)

当客户端SOCKET接收到数据时,系统自动回调此函数。

  • packet:接收的字节数组packet,下标从0开始

PS:屏幕接收服务器的数据不一定是完整一帧报文数据,此处仍需要做粘包、分包,再提取完整一帧数据做处理

function on_client_recv_data(packet)
    local client_rec = ''
    for i= 1,#(packet) do
            client_rec = client_rec .." ".. string.format("%02X",packet[i])
    end

    --简单显示报文数据
    set_text(sc_tcp, 1, 'cnt('..recv_cnt..') = '..client_rec)
end

1.6.16 on_server_recv_data(clinet_id,packet)

当服务端SOCKET接收到数据时,系统自动回调此函数

  • clinet_id:客户端ID

  • packet:接收的字节数组packet,下标从0开始

PS:屏幕接收服务器的数据不一定是完整一帧报文数据,此处仍需要做粘包、分包,再提取完整一帧数据做处理

处理方法与on_client_recv_data类似。

1.6.17 http_request(taskid,uri,method,content_type,postdata)

发送HTTP请求到服务器

  • taskid:请求任务编号,任意设置

  • uri:资源路径

  • method:方法,0GET,1POST

以下参数POST方法才需要

  • content_type

    W系列(仅post生效):表示数据类型,支持 json,xml,text等。post操作如下所示

         http_request(10001, 
                     'http://192.168.1.20:8080/helloword.txt',
                     1,
                     'text/plain',
                     'helloword')
    

    EW系列(get、post均生效):表示HTTP HEAD请求头部配置。若有多个参数配置,用"\r\n"拼接,设置如下所示

    http_request(10002, 
                 pc_url..'/project/?nonce='..nonce..'&timestamp='..cur_unix..'&sign='..sign,
                    0, 
                'Content-Type:application/json'..'\r\n'..'sessionId:'..loginer_Info.data.id, 
                '')
    
  • postdata:POST数据

1.6.18 on_http_response(taskid,response)

HTTP响应

  • taskid:响应任务编号,与http_request匹配

  • response:响应数据

1.6.19 http_download (taskid,uri,savepath)

使用HTTP协议下载文件

  • taskid:请求任务编号,任意设置

  • uri:资源路径

  • savepath:存放位置

1.6.20 http_download_bigfile(taskid,uri ,savepath)

使用HTTP协议下载大文件

参数说明同上

1.6.21 on_http_download (taskid, status)

下载响应

taskid:响应任务编号,与http_download匹配

status:下载状态:0下载失败,1下载成功但存储失败,2下载并存储成功

1.6.22 udp_create(port)

  • port:端口号

创建UDP套接字,并绑定服务端口

例如:sockfd = udp_create(12345)

1.6.23 udp_close(sockfd)

关闭UDP套接字

  • sockfd:套接字,如udp_create(port)返回

1.6.24 udp_recvfrom(sockfd)

接收UDP数据报文

  • ret=-1:表示发生错误,ret=0表示无数据,其他值表示数据长度

  • ip,port:发送端的IP和端口

  • packet为数据报文,table类型,下标从0开始

ret,ip,port,packet = udp_recvfrom(sockfd)

1.6.25 udp_sendto(sockfd,ip,port,packet)

发送UDP数据报文

  • sockfd:UDP套接字

  • ip,port:接收端的IP和端口

  • packet:数据报文,table类型,下标从0开始

1.6.26 get_wifi_mac()

获取WIFI模块的mac地址,返回字符串

local mac_addr = get_wifi_mac()

1.6.27 get_ethernet_mac()

获取以太网的mac地址,返回字符串

local mac_addr = get_ethernet_mac()

1.6.28 reset_ethernet()

复位以太网

1.7 定时器

1.7.1 start_timer(timer_id, timeout, countdown, repeat)

启动定时器,超时后系统自动调用on_timer

  • timer_id:定时器ID,0~31
  • timeout:超时时间,单位毫秒
  • countdown:0顺计时,1倒计时
  • repeat:重复次数,0表示无限重复

1.7.2 stop_timer(timer_id)

停止定时器

  • timer_id:定时器ID,0~31

1.7.3 on_timer(timer_id)

定时器超时回调函数

  • timer_id:定时器ID,0~31

1.7.4 get_timer_value(timer_id)

获取定时器当前计时时间,单位毫秒

  • timer_id:定时器ID,0~31

1.8 串口

LUA脚本的串口API函数,更多应用于自由串口协议,详细DEMO,可参考LUA教程10-自定义串口指令.zip

1.8.1 uart_send_data(packet)

通过串口发送数据

  • packet:字节数组,下标从0开始
function uart_doorState(state)
    local door_buff = {}    
    door_buff[0] = 0x5A
    door_buff[1] = 0x5A
    door_buff[2] = 0x07
    door_buff[3] = 0x82
    door_buff[4] = 0x00
    door_buff[5] = 0x01
    door_buff[6] = state

    uart_send_data(door_buff)
end
--用户通过触摸修改控件后,执行此回调函数。
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
function on_control_notify(screen,control,value)
    ......
    if screen == sc_door
    then 
        if control == 1
        then
            uart_doorState(value)
        end
    end
    ......
end

1.8.2 uart_set_timeout(timeout, timeout_inter)

设置串口接收超时时间

  • timeout:接收总超时
  • timeout_inter:字节间隔超时
常用于自由串口协议(uart_free_protocol = 1),eg:uart_set_timeout(0, 0)

1.8.3 uart_set_baudrate(baudrate)

  • baudrate:波特率,支持2400bps ~ 961200bps
设置波特率,如uart_set_baudrate(9600)

1.8.4 uart_get_baudrate()

获取波特率,返回波特率值

local baudrate = uart_get_baudrate()

1.8.5 on_uart_recv_data(packet)

串口接收数据的回调函数,有两种方式可以触发此函数执行:

☆使用自定义串口指令:格式为EE B5【自定义数据】FF FC FF FF

☆使用自由串口协议:在LUA脚本中定义全局变量 uart_free_protocol = 1

  • packet:接收的字节数据

1.8.6 uart_setup(baudrate,parity,stopbit,databits)

串口参数设置

  • baudrate:波特率值
  • parity:0-无校验,1-ODD奇校验,2-EVEN 偶校验
  • stopbit:stopbit=0,1个停止位;stopbit=1,1.5个停止位
  • databits:数据位5~8

1.9 CAN 接口

1.9.1 canbus_open(index,baudrate,listen_mode,loop_back)

打开 CANBUS 接口

  • index:索引号 0~1

  • baudrate:波特率(单位 K), 可选 125,250,500,1000

  • listen_mode:只读模式
  • loop_back:自发自收(环回/自测)

1.9.2 canbus_close(index)

关闭 CANBUS 接口

  • index:索引号 0~1

1.9.3 canbus_write(index,identifier,dlc,rtr,ide,data)

发送 CAN 报文

  • index:索引号 0~1
  • identifier:报文 ID
  • dlc:数据长度
  • rtr:远程帧
  • ide:扩展帧
  • data:数据, table 格式

1.9.4 on_canbus_recv(index,identifier,dlc,rtr,ide,data)

CAN 报文回调函数, 收到报文后, 系统自动调用

  • index:索引号 0~1
  • identifier:报文 ID
  • dlc:数据长度
  • rtr:远程帧
  • ide:扩展帧
  • data:数据, table 格式

1.10 音视频

W系列、F系列、M系列均支持音频播放,W系列、M系列均支持视频播放、F型不支持

1.10.1 play_sound(filename)

播放指定的声音文件,例如播放屏内音频文件

  • filename:路径
屏内路径播放:
W系列:play_sound("a:/sounds/welcome.wav")
M、F系列:play_sound("3:/sounds/welcome.wav")

1.10.2 stop_sound()

停止播放

1.10.3 on_audio_callback (state)

声音播放结束回调通知

  • state保留未使用。

1.10.4 set_volume(level)

设置音量

  • level:音量等级0~100。0静音,100最大音量

1.10.5 get_volume()

获取音量,返回值0-100

1.10.6 play_video(pathname,repeat)

播放视频,不适用于M/F/X系列

pathname为视频路径

repeat为重复次数,0为无限制次,

播放屏内视频:play_ video(‘a:/Videos/1.mp4’,0)

1.10.7 pause_video()

暂停视频播放,F系列不支持

1.10.8 resume_video()

恢复视频播放,F系列不支持

1.10.9 stop_video()

停止视频播放,F系列不支持

1.10.10 play_video(file,left,top,width,height)

播放视频,M/X系列,F系列/物联型不支持

file:文件路径

left:起始坐标x

top:起始坐标y

width:视频显示的宽度

height:视频显示的高度

1.10.11 on_video_notify(msg,v1, v2)

视频播放回调函数

msg:1-播放中,0-播放完毕

v1:当前播放进度,当前已播时长,单位s

v2:播放总进度, 当前视频总时长,单位s

1.10.12 set_av_channel(channel)

切换AV通道,M系列,物联型、F系列不支持

channel = 0,切换到通道1

channel = 1,切换到通道2

1.11 FLASH存储器读写

屏幕提供128K用户FLASH,可用于存储配置参数,读写寿命为10W次

固件版本要求:W系列>=3.0.590。0,F系列>= 4.1.401.0,M系列>= V6.1.59.00

1.11.1 write_flash(addr,data)

写用户FLASH数据,addr写入地址,data字节数组,下标从0开始。

1.11.2 read_flash(addr,length)

读用户FLASH数据,addr写入地址,length读取字节数,返回类型为字节数组,下标从0开始

data = read_flash(addr,length)

1.11.3 write_flash_string(addr,str)

写字符串到指定FLASH地址

1.11.4 read_flash_string(addr)

从指定FLASH地址读取字符串,成功返回字符串,失败返回nil

str = read_flash_string(addr)

1.11.5 flush_flash()

系统会对FLASH写入操作进行缓存优化,以提高写入效率

flush_flash操作会立即把数据写入FLASH

1.12 文件系统操作

文件系统读写接口,M系列专用,个别函数适合物联型使用,没有提及部分均M系列专有

1.12.1 list_dir(path)

遍历指定目录下的文件和文件夹,成功返回true,失败返回false

  • path:文件路径
  • filename:文件名称
  • type:0-文件夹,1-文件
  • fsize:文件大小

通过以下回调函数返回文件夹的内容

on_list_dir(path,filename,type,fsize)

1.12.2 file_open(path,mode)

打开文件,成功返回true,失败false

  • path-文件路径
  • mode-打开模式,如下组合方式
FA_OPEN_EXISTING FA_READ FA_WRITE FA_CREATE_NEW FA_CREATE_ALWAYS FA_OPEN_ALWAYS
0x00 0x01 0x02 0x04 0x08 0x10

例如:

打开文件用于读取:file_open(path, 0x01)
创建文件用于写入:file_open(path, 0x02|0x08)

1.12.3 file_close()

关闭文件,成功返回true,失败false

1.12.4 file_size()

获取当前文件大小,返回字节数

local file_fd = file_open(path, 0x01)
local filesize = file_size()

1.12.5 file_seek(offset)

定位文件读取位置,成功返回true,失败false

  • offset:文件偏移位置

1.12.6 file_read(count)

读取文件内容,成功返回table数组,失败返回nil

  • count:读取字节数,最大读取2048个字节

1.12.7 file_write(data)

写文件内容,成功返回true,失败返回false

  • data-待写入的table数组,索引从0开始,最大一次性写2048个字节

1.12.8 file_delete(path)

  • path:待删除的文件路径

1.12.9 file_copy(src_path, dst_path)

  • src_path:源文件路径
  • dst_path:目标文件路径

1.12.10 start_copy_file (from,to)

注意:此函数仅物联型使用!!!

文件拷贝

  • from:源路径
  • to:目标路径

拷贝文件过程中,系统自动回调文件拷贝进度通知

on_copy_file_process(status,filesize,transfersize)

1.12.11 on_copy_file_process(status,filesize,transfersize)

注意:此函数物联型/M系列共用!!!

文件拷贝进度,配合 file_copy(src_path, dst_path)使用,当调用 file_copy,自动回调到on_copy_file_process函数

  • status:状态.0-失败,1-拷贝中,2-拷贝完成
  • filesize:被拷贝的文件大小
  • transfersize:当前回调拷贝的字节数

1.13 其他

1.13.1 set_backlight(level)

设置背光亮度

  • level:亮度等级0~100,0最暗,100最亮

1.13.2 get_backlight()

获取亮度百分比,返回数值,共100等级

如:level = get_backlight()

1.13.3 set_language(lang)

设置当前语言选项

  • lang:语言索引,从0开始。若使用英文提示键盘,或上0x80
例如:设置语言1(索引0)
中文提示键盘:set_language(0)
英文提示键盘:set_language(0x80|0)

1.13.4 get_language ()

获取当前语言选项

lang:返回语言索引,从0开始。若使用英文提示键盘,则得到语言项或上0x80

例如:假设当前语言1(索引0)cur_lang = get_language()
中文提示键盘:cur_lang  = 0
英文提示键盘:cur_lang  = 0x80

1.13.5 set_wakeup_mode (mode)

唤醒模式设置,可组合设置,W系列支持,M系列、F系列不支持

  • mode:0x1单击唤醒,0x2双击唤醒,0x4串口唤醒

1.13.6 sleepmode (on)

  • on:等于1进入

进入睡眠低功耗模式,睡眠后屏幕功能不再运行,只能使用触摸唤醒

1.13.7 standbymode (on)

进入待机低功耗模式,屏幕的串口可正常运行。W系列支持,M系列、F系列不支持

1.13.8 beep(time)

蜂鸣器鸣叫时长

  • time:单位毫秒

1.13.9 get_tick_count ()

获取上电以后运行时间,单位10ms。

32位计数器,大约49天后溢出归零重新计时。

1.13.10 get_date_time ()

获取当前日期时间,返回7个参数

year,mon,day,hour,min,sec,week = get_date_time()
  • year:年
  • mon:月
  • day:日
  • hour:时
  • min:分
  • sec:秒
  • week:星期x,星期日为0

1.13.11 set_date_time (year,mon,day,hour,min,sec)

设置当前日期时间

  • year:年
  • mon:月
  • day:日
  • hour:时
  • min:分
  • sec:秒
set_date_time(year,mon,day,hour,min,sec)

1.13.12 make_timestamp(year,mon,day,hour,min,sec)

将指定时间转换为时间戳

 local timestamp = make_timestamp(year,mon,day,hour,min,sec)

1.13.13 make_datetime(timestamp)

将时间戳转换为年、月、日、时、分、秒

 local year,mon,day,hour,min,sec,week = make_datetime(timestamp)

1.13.14 upgrade_logo (url)

通过U盘更新开机LOGO,W系列支持、F系列、M系列不支持

  • url:图片路径
function on_usb_inserted(driver)
    upgrade_logo(driver..'logo.jpeg')
end

1.13.15 gpio_set_in (pin)

PIN引脚设置为输入模式,W系列、M系列支持,F系列不支持

1.13.16 gpio_set_out (pin)

PIN引脚设置为输出模式,W系列、M系列支持,F系列不支持

1.13.17 gpio_set_value (pin,value)

设置输出PIN引脚为(高电平1/低电平0),W系列、M系列支持,F系列不支持

1.13.18 gpio_get_value (pin)

获取输入PIN引脚电平(高电平1/低电平0),W系列、M系列支持,F系列不支持

1.13.19 feed_dog ()

若在脚本内执行耗时超过5秒的操作,需要执行喂狗

W系列不支持,F系列、M系列支持。

1.13.20 init_watchdog(enable, timeout )

初始化喂狗,在lua脚本on_init里面执行,搭配feed_watchdog()api,执行喂狗动作

  • enable:使能喂狗
  • timeout :超时,单位秒
function on_init()
    init_watchdog(1,30) --30sec
end

--定时回调函数,系统每隔1秒钟自动调用。
function on_systick()
   feed_watchdog()
end

1.13.21 get_pixel(x,y)

获取对应坐标的RGB565值

W系列、M系列支持,F系列不支持。

1.13.22 refresh_screen()

刷新画面

1.13.23 get_version()

获取固件版本号,返回字符串

1.13.24 get_device_guid()

获取设备唯一ID,EW系列专用,返回长度为40的字符串。

local guid = get_device_guid()

1.13.25 get_device_uuid()

获取设备唯一ID,M系列专用,返回长度为20的字符串。

local uuid = get_device_uuid()
Copyright ©Dacai all right reserved,powered by Gitbook该文件修订时间: 2023-03-30 10:12:28

results matching ""

    No results matching ""