写在最前面
屏幕型号 DC10600M070
IDE VisualTFT(官方) VSCode(lua编程)
用之前看一下官方那个1小时的视频教程就大概懂控件怎么用了,用官方的软件VisualTFT很简单
本文只是简单记录遇到的一些坑
lua编辑器
VisualTFT是有lua编辑器的,在【工具】那里点开【lua编辑器】就可以进入,使用其他编辑器之前也好好看一下官方的这段注释。
官方编辑器打字有种奇妙的卡顿感,我用的vscode不会。
VisualTFT生成工程的lua脚本的编码是 GB2312,使用其他编辑器的时候注意以这个编码打开这样中文注释就不会乱码了。
顺便如果要编写一些简单的LUA测试小脚本推荐使用在线工具,https://c.runoob.com/compile/66/ 菜鸟教程的这个很好用。vscode好像我试过print输出有问题,查了下要改配置还挺麻烦遂放弃。
Lua数组 如何从0开始索引
因为屏幕脚本用Lua脚本写的,写的就现学了lua脚本语言,很简单,和python差不多,但是lua最大的一个坑是他的默认数组索引是从1开始的不是从0开始,然后屏幕厂商给的api要用到的数组索引全是从0开始的。刚开始学的时候没注意以为数组都是0开始,坑死我了(讨厌lua)
默认创建的数组 索引从1开始(以下测试脚本使用在线工具编写)
print("Hello World!")
local a = {1, 2}
for i=0, 3, 1 do
print(i)
print(a[i])
end
-- 输出
Hello World!
0
nil
1
1
2
2
创建从0开始的数组
print("Hello World!")
local a = {[0]=1, 2}
for i=0, 2, 1 do
print(i)
print(a[i])
end
-- 输出
Hello World!
0
1
1
2
2
nil
通用列表控件显示彩色文字
官方的叫法是数据记录控件,我这边通称列表了
因为项目需要记录报警信息,但是官方提供的告警记录控件不符合需求,给的列表控件文字只能显示为1个颜色,就是说你改成红色文字列表里所有文字都是红的,不能像告警一样一行显示红色,一行显示蓝色。但是告警记录控件可记录的内容受到的限制很大。
告警控件如下图,选择列表控件然后更改【记录类型】就可以
最后想出来的解决办法(也没完全解决)是使用列表显示ICON图标【详见官方的】,图标使用官方VisualTFT的图标生成工具生成的。而且图标显示的内容是固定的(就是在列表里显示图片),所以只用来显示内容不变的文本,比如“xx事件”,像数值这种动态变化的文本就还是只能使用列表默认的颜色来显示。
效果如下(样例数据随便写的)
列表控件的上限
咨询屏幕厂商得到的数据,列表预留的空间不能超过131072【型号 DC10600M070】,否则列表内容将不能正常在屏幕上显示(在电脑上模拟没问题,用屏幕的时候会直接列表为空)。
单个表的预留空间 = 单条记录大小*最大记录数
我基本上使用record_add这个api添加列表记录 ,该API的格式是record_add(screen_id, control_id, str)
,str使用英文分号分隔开表示为不同列的内容。测试后发现单条记录大小大概等于这个str字符串的长度(不确定),如果你单条记录大小设置的太小的话,小于str的长度,可能会出现最后几列内容为空的情况。
串口通信测试/虚拟串口
使用虚拟串口Virtual Serial Port Driver可以在本机上对虚拟串口屏的通信进行测试,官方有提供这个软件的安装包。
打开选择想要用的两个串口号点【Add pair】就可以添加了,添加成功在左边列表可以看到(上面的是真实的物理串口),这里使用给的是COM2和COM5两个端口号。
用visualTFT运行虚拟串口,然后进行串口配置并且点击【打开串口】,串口号选择刚刚配置的端口号的其中一个(COM2)就可以了。
另外开一个串口软件,这里使用sscom,串口号选择配置的另外一个虚拟串口(COM5),波特率与刚刚配置的虚拟串口屏的波特率一致就可以。
关于曲线
官方给了两种曲线控件都不符合需求(。。。
然后自己画了,就用两点间直线连接的老方法,就用draw_line这个接口函数。
这个功能折磨了我一个月,最后效果还不错。
曲线测试(没啥好看的)