开机画面
开机画面跳转-lua脚本
1:创建定时器
function on_screen_change(screen)
if screen == Bootanimation_id then
start_timer(2,1000,0,4)
set_value(screen,3,CatTime)
end
end
2:定时器回调
function on_timer(timer_id)
if timer_id == 2 then
if get_current_screen() == Bootanimation_id then
CatTime = CatTime - 1
set_value(Bootanimation_id,3,CatTime)
if CatTime == 0 then
change_screen(0)
end
end
end
end
控件之间关联
说点废话:看到出厂demo 滑动控件与文本显示控件数值相关联,我的第一想法是控件属性中间可以相互发指令(原因是看到按键属性有对内、对外指令),我找了老半天了就是找到对内对外指令,点击帮助也没提到这块,看官方文档,才提到这个关联的介绍,但是最后的MCU代码竟然有个小BUG。
这时候才确定,控件间没有指令传输,再去看出厂代码,原来是通过lua脚本实现的
if screen == Slider_screendid then
if control == 2 then
set_value(screen,3,value)
set_backlight(value)
end
if control == 5 then
set_value(screen,6,value)
end
end
开机屏幕发出的指令
第一条:00 00 ,不解释了,大彩指令集没提到。
第二条:
第三条:
FLASH JSON
这里要注意的就是地址越界问题,查看json数组尺寸的语法
print("size of w json ", #json_data)
实际使用的时候要在这个尺寸上+5
比如#json_data 的尺寸是98,实际上占用的尺寸是98+5 = 103;
MCU获取串口屏数据的方法
官方给的MCU代码已经给了各种事件回调接口,最直接的方式是事件后回调获取,但是有的时候串口屏使用的是lua给的一些数值,这时候是没有回调接口响应的,我的处理方法是
UpdateUI()
/*!
* \brief 获取控件值
* \param screen_id 画面ID
* \param control_id 控件ID
*/
void GetControlValue(uint16 screen_id,uint16 control_id)
在UpdateUI内调用GetControlValue接口,这样就会出现事件回调了。要注意的是如果有多个GetControlValue要分时get,防止粘包。
其实在MCU端,用用代码都可以写在这个UpdateUI内实现,UpdateUI是100ms回调。