使用迪文24位色(H600内核)串口屏的几个开发技巧和大家分享一下:
1. 显示HEX参数
有一条0xC108的参数显示指令,可以不用再进行烦人的HEX到ASCII转换计算和显示格式转换,比如字体大小,显示几位小数点,无效的零显示不显示等,只要把显示的HEX数据发给迪文屏就可以了。
0xC108指令的另外一个用途就是特别多参数(比如一屏显示200个参数)显示时,可以同时显示出来,避免了一个个蹦出来的效果。
2. 指针表盘
做一个表盘的底图和一个指针的底图,利用0x9E图标旋转指令让(多个)指针在表盘底图上指定角度和中心旋转,可以设计出非常漂亮的指针表盘,比如汽车仪表板、时钟、旋转的马达等。
3. 曲线缩放
0xC106指令可以让用户指定X轴取样间隔、Y轴放大倍数和零点位置,而迪文屏自动对数据进行处理,实现曲线自动缩放,用户只需把A/D的结果传送给迪文屏就OK了。
0xC106指令的另外一个用途就是通过修改显示的指针,可以很方便实现历史记录回放,对RAM缓冲区小的单片机尤其适合。
4. 触摸屏界面自动切换
使用触控界面开发工具(集成在迪文串口调试助理里面),可以事先安排好触摸屏界面的操控逻辑,把生成的配置文件下载到迪文屏0x1E字库位置,并使用0xE0(0xE3)指令修改Para1.5=1启用触控模式,那么触摸屏界面间的切换将无须用户代码操心了。
在需要用户代码干涉的界面触发按钮下绑定一个“回传代码”,可以在界面切换需要用户代码干涉时自动回传预设的代码。
5. 触摸屏录入
凡是开发过GUI的大虾们都清楚,参数录入是个让大家头大的事情,尤其是当参数录入时,软件其它功能还要正常更不容易。迪文触摸屏有条0x7C指令让触摸屏录入非常简单。0x7C01是对ASCII字符(比如参数设定)的录入,0x7C02是ASCII和中文GBK拼音的混合录入。
发送0x7C指令告诉迪文屏启动指定参数录入后,用户代码就不用管了,录入结束后,迪文屏会自动上传指令告诉用户代码录入的是哪个参数,录入内容是什么。由于迪文屏按照多任务来处理0x7C指令,录入期间,用户代码可以正常操作迪文屏其它功能(比如曲线照常变化),不会因为录入而中断。
GBK拼音录入其实是基于预装在迪文屏0x01位置的词库实现,用户可以通过修改词库来实现对一些特殊符号的快速录入,比如迪文预装词库就设计了用"BD"来录入所有全角标点符号。
6. 需要经常重复执行的指令(比如动画显示)
使用0x9A自动指令组执行来实现。
7. 时钟的使用
0x9B指令可以把时钟按照指定的字体大小和颜色自动叠加显示在界面的指定位置;
0x9B指令还可以回读当前时钟,包括公历和阴历(农历)时间;
0xE7指令可以修改时钟。
8. 视角的调整
通过0xE0(0xE3)指令调整Para1.2和Para2.5,可以实现4种不同视角(0/90/180/270旋转)的软件调整,以适应不同的应用。
9. 不要高频度重复显示
尽管迪文屏的处理速度已经非常快(800×600分辨率,1秒可以全屏显示18幅图片或10万个16×16的汉字),但是由于指令集极其精简,致使通信时间远低于处理时间,高频度重复显示,可能还是会导致串口缓冲区溢出(迪文屏最多可缓冲24个未处理的串口数据帧)而丢帧,引起显示错误。
简单办法是检测硬件BUSY信号或者合理速度(比如100mS以上间隔)的全部刷新界面所有活动内容一次。
10. 一定要请专业美工设计界面
对于迪文屏真24位色显示(比一般DVI接口的显示器显示效果还棒),如果不请个专业美工帮助设计界面,那实在是浪费。有个大概轮廓,请专业美工帮忙的开销并不大(大约30-200人民币/页面,一般产品也就10来个页面),让产品的GUI超级炫,这个钱花得绝对值。