-------------------------欣瑞达 LUA 脚本 API 接口函数------------------------------------------

-- 适用范围 ： 文档仅适合新系列串口屏产品 - XH.S 系列
-- LUA脚本初学者可以通过下面链接进行学习: http://www.runoob.com/lua/lua-arrays.html
-- 注意：工程路径下的LUA脚本文件需命名为：main.lua
-------------------------------------------------------------------------------------------------

-- 以下9类为接口函数：
-- 1： 控件属性
-- 2： 常用回调函数
-- 3： 绘图函数
-- 4： 寄存器访问
-- 5： 定时器
-- 6： 单串口
-- 7： 多路通信
-- 8： 音视频
-- 9： 其他

-- 10： 运用扩展示例函数

-- uart_free_protocol = 0 -- 1：使用自由协议，将通过脚本功能实现收发指令

-------------------------1: 控件属性 ------------------------------------------------------------

function change_screen(screen)
	---- 切换到指定画面
	---- screen：目标画面 ID
end

function set_value(screen,control,value)
	---- 设置控件数值
	---- 按钮控件：value -0 按下，1 弹起
	---- 文本控件：value -整数或小数
	---- 也可以设置进度条、滑块、仪表等
end

function get_value(screen,control)
	---- 获取控件数值，按钮、文本、进度条、滑块、仪表等
end

function set_visiable(screen,control,visiable)
	---- 设置控件是否可见，visiable 为 0 隐藏，1 显示
	---- 欣瑞达 LUA 脚本 API 接口函数
end

function set_enable(screen,control,enable)
	---- 设置控件是否可触摸，enable 为 0 禁止触摸，1 启用触摸
end

function set_fore_color(screen,control,color)
---- 设置控件前景色，color 为 RGB565
---- 例如文本控件文字颜色，进度条显示颜色。
end

function set_back_color(screen,control,color)
---- 设置控件背景色，color 为 RGB565
---- 例如文本控件背景颜色，进度条背景颜色。
end

function set_text(screen,control,text)
	----  设置控件显示内容(字符串)，文本控件，二维码控件等
end

function get_text(screen,control)
	----  获取控件字符串内容(字符串)，文本控件，二维码控件等
end

-------------------- 2: 常用回调函数 ----------------------------------------------------------

function on_init()
	----  系统加载 LUA 脚本文件之后，立即调用此回调函数，通常用于执行初始化操作。
end

function on_systick()
	----  系统每隔 1 秒钟自动调用此回调函数。
	----  欣瑞达 LUA 脚本 API 接口函数
end

function on_control_notify(screen,control,value)
	----  用户触摸修改控件后，执行此回调函数。
	----  点击按钮控件，修改文本控件、修改滑动条都会触发此事件。
	----  value-为数值类型，如果需要获取文本控件的字符串值，使用
	----  get_text(screen,control)。
end

function on_screen_change(screen)
	----  当画面需要切换时，执行此回调函数，screen 切换到的画面。
	----  注意，此函数内部调用 change_screen,不会嵌套执行 on_screen_change。
end

function on_press(state,x,y)
	----  用户点击触摸屏时，执行此回调函数。
	----  state-0 松开，1 按下，2 持续按压
	----  x,y-为触摸坐标
end

function on_usb_inserted(driver)
	----  U 盘插入时，执行此回调函数，dirver 为 U 盘的盘符
end

function on_usb_removed()
	----  U 盘拔出时，执行此回调函数
end

----------------------- 3: 绘图函数 ------------------------------------------------------------

function on_draw(screen)
	----  重绘时执行此回调函数，通常所有绘图操作都在此函数中实现。
end

function redraw()
	----  发送重绘请求，触发 on_draw 的执行。
	----  欣瑞达 LUA 脚本 API 接口函数
end

function set_pen_color(color)
	----  设置画笔的颜色，RGB565，用于指定线、矩形、圆等的颜色。
end

function draw_line(x0,y0,x1,y1,width)
	----  绘制直线
	----  x0,y0 起始点坐标
	----  x1,y1 结束点坐标
	----  width 为线条的厚度，1~10
end

function draw_rect(x0,y0,x1,y1,fill)
	----  绘制矩形
	----  x0,y0 左上角坐标
	----  x1,y1 右下角坐标
	----  fill 为 0 不填充，1 填充
end

function draw_circle(x,y,r,fill)
	----  绘制圆形
	----  x,y 圆的中心坐标
	----  r 圆的半径
	----  fill 为 0 不填充，1 填充
end

function draw_ellipse(x0,y0,x1,y1,fill)
	----  绘制椭圆
	----  x0,y0 左上角坐标
	----  x1,y1 右下角坐标
	----  fill 为 0 不填充，1 填充
	----  欣瑞达 LUA 脚本 API 接口函数
end

function 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 坐标
end

function draw_image_file(filename,dstx,dsty,width,height,srcx,srcy)
	----  绘制图片，此方法不对图片进行缓存，效率较低
	----  filename 图片文件，支持 JPEG/PNG
	----  dstx 图片显示 X 坐标
	----  dsty 图片显示 Y 坐标
	----  width 图片显示宽度
	----  height 图片显示高度
	----  srcx 图片裁剪 X 坐标
	----  srcy 图片裁剪 Y 坐标
end

function load_surface (filename)
	----  加载图片到图层
	----  filename 图片文件，支持 JPEG/PNG
	----  例如：surface = load_surface (“c:/test.jpg”)
	----  图层不再使用时，需要调用 destroy_surface 进行销毁，否则会导致内存泄漏。
	----  欣瑞达 LUA 脚本 API 接口函数
end

function destroy_surface (surface)
	----  销毁图层
	----  surface 图层资源指针
end

function draw_surface (surface,dstx,dsty,width,height,srcx,srcy)
	----  绘制图层，相比于 draw_image_file，此方法效率较高
	----  Surface 图层资源指针
	----  dstx 图片显示 X 坐标
	----  dsty 图片显示 Y 坐标
	----  width 图片显示宽度[可选]
	----  height 图片显示高度[可选]
	----  srcx 图片裁剪 X 坐标[可选]
	----  srcy 图片裁剪 Y 坐标[可选]
	----  例如：
	----  平铺显示 draw_surface(surface, dstx, dsty)
	----  缩放显示 draw_surface(surface, dstx, dsty, width, height)
	----  裁剪显示 draw_surface(surface, dstx, dsty, width, height ,srcx, srcy)
end

function 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 下对齐

end

--------------------- 4: 寄存器访问 --------------------------------------------------------
----LUA 中访问 MODBUS/PLC 等协议中定义的变量，需要通过下面的变量访问接口

function get_variant(name)
	----  获取协议变量的数值，get_variant(“Variable1”)
end

function set_variant(name,value)
	----  设置协议变量的数值，set_variant(“Variable1”,12345)
end

---------------------- 5: 定时器 --------------------------------------------------------------

function start_timer(timer_id, timeout, countdown, repeat)
	----  启动定时器
	----  timer_id-定时器 ID，0~31
	----  timeout-超时时间，单位毫秒
	----  countdown-0 顺计时，1 倒计时
	----  repeat-重复次数，0 表示无限重复
end

function stop_timer(timer_id)
	----  停止定时器
end

function on_timer(timer_id)
	----  定时器超时回调函数，timer_id 超时的定时器号
end

function get_timer_value(timer_id)
	----  获取定时器当前计时时间
end

---------------------- 6: 单串口 ----------------------------------------------------------------

function uart_send_data(packet)
	---- 通过串口发送数据
	---- 欣瑞达 LUA 脚本 API 接口函数
end

function uart_set_timeout(timeout, timeout_inter)
	---- 设置串口接收超时时间
	---- timeout-接收总超时
	---- timeout_inter-字节间隔超时
end

function uart_set_baudrate(baudrate)
	----  设置波特率
end

function uart_get_baudrate()
	----  获取波特率
end

function on_uart_recv_data(packet)
	----  串口接收数据的回调函数，有两种方式可以触发此函数执行：
	----  使用自定义串口指令：格式为 EE B5【自定义数据】FF FC FF FF
	----  使用自由串口协议：在 LUA 脚本中定义全局变量 uart_free_protocol = 1
end

------------------------------ 7: 多路通信 ------------------------------------------------------

function dev_send_data(port, packet)
	---- 通过通信设备接口发送数据 (port: 设备逻辑接口号，设备接口类型可为串口、
	---- CAN 总线、网络端口等)
end

function dev_set_timeout(port,timeout, timeout_inter)
	---- 设置端口接收超时时间
	---- timeout-接收总超时
	---- timeout_inter-字节间隔超时
end

function dev_set_bitrate(port, bitrate)
	---- 设置设备通信速率
	---- 欣瑞达 LUA 脚本 API 接口函数
end

function dev_get_bitrate(port)
	---- 获取设备通信速率
end

function on_dev_recv_data(port, packet)
	---- 端口接收数据的回调函数，有两种方式可以触发此函数执行：
	---- 使用自定义串口指令：格式为 EE B5【自定义数据】FF FC FF FF
	---- 使用自由串口协议：在 LUA 脚本中定义全局变量 uart_free_protocol = 1
end

----------------------- 8: 音视频 ----------------------------------------------------------------

function play_sound(filename)
	---- 播放指定的声音文件，例如 play_sound("a:/sounds/welcome.wav")
end

function on_audio_callback (state)
	---- 声音播放结束回调通知，state 保留未使用。
end

function set_volume(level)
	---- 设置音量 0~100
end

function get_volume()
	---- 获取音量
end

---------------------- 9: 其他 ---------------------------------------------------------------------

function internal_lua_cmd(cmd)
	---- 对内指令(帧头：EE；帧尾：FF FC FF FF)，例如： EE XX XX FF FC FF FF
end

function set_systime(year,month,day,hour,minute,second) 
	---- 设置系统时间	
end

function get_systime() 
	---- 获取系统时间
	---- 返回： 年月日时分秒
	---- 例如，获取时间数组：
	---- local time_vals = { 2020, 11, 20, 10, 0, 0}
	---- time_vals[1],time_vals[2],time_vals[3],time_vals[4],time_vals[5],time_vals[6] = get_systime()
end

function set_backlight(level)
	---- 设置背光亮度 0~100
	---- 欣瑞达 LUA 脚本 API 接口函数
end

function get_backlight()
	---- 获取背光亮度
	---- level = get_backlight
end

function beep(time)
	---- 蜂鸣器叫，单位毫秒
end
