本帖最后由 慈俭不敢为人先 于 2022-3-16 12:35 编辑
一、背景
串口屏的应用涉及很多工业领域,功能设计要求更加灵活。
在拓普微提供的HMT070ETD-1D模块中,支持的Lua脚本功能。
模块可以独立开发,设计实现复杂功能,非常灵活。
二、目标
基于HMT070ETD-1D,通过Lua脚本设计,实现圆周率使用。
通过环形滑动调节输入圆形的半径 “r” ;Lua脚本计算得出圆形的直径 “d” ;与周长“C”。并在屏幕是实时显示出来。
同时抛砖引玉,拓宽大家对串口屏设计开发的思维。
三、设计实现
①通过(拓普微)官方提供的开发工具SGTools,创建一个1024x600高分辨的工程
②在开发工具SGTools中导入此次设计需要UI背景图,并关联到显示页面
③建立字符串控件并设置控件属性如表格,
ID
|
0
|
1
|
2
|
图中标志
|
r
|
d
|
C
|
透明
|
是
|
是
|
是
|
对齐方式
|
左对齐
|
左对齐
|
左对齐
|
小数位数
|
0
|
0
|
7
|
VP类型
|
VP_N32
|
VP_N32
|
VP_N32
|
地址
|
0x020000
|
0x020004
|
0x020008
|
数据类型
|
有符号整型
|
有符号整型
|
浮点型
|
效果如图:
④建立环形调节控件,用以输入半径 "r",属性设置如下:
ID |
图中标志 |
外环半径 |
内环半径 |
起始角度
|
扫描角度 |
VP类型
|
VP地址 |
最小值
|
最大值 |
0 |
马蹄形圆环 |
173 |
105 |
227
|
266 |
VP_32
|
0x020000 |
1
|
100 |
效果如图:
⑤添加Lua脚本程序 "luamain.lua"
--主循环--
luamain = function (void)
--do nothing
end
--触摸回调函数--
tpkhook = function (page,id,state)
--debug--
--print("luaTPKhandleHook")
--print("page=",page,"id=",id,"state",state)
--check TP state--
if (state==1 or state ==2 or state == 3)then
--check Touch element--
if(id==0) then
local w
local h
local r
if(id==0)then
h = hmt.readvp32(0x20000)
end
w = 2*h
r = 2*3.1415926*h
hmt.writevp32(0x20000,h)
hmt.writevp32(0x20004,w)
hmt.writevp32(0x20008,r)
end
end
return 0
end
四、功能测试
备注:触摸蹄形圆环最左边时输入半径r=1
备注:触摸蹄形圆环中间部分时输入半径r=49
备注:触摸蹄形圆环最右边时输入半径r=100
|