ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

迪文DMG80480C070屏开发全流程:图片、字库与CFG配置实战

迪文DMG80480C070屏开发全流程:图片、字库与CFG配置实战 1. 这块屏到底能干什么先搞清楚DMG80480C070的定位DMG80480C070这个型号拆开看就是迪文DGUS系列的7寸屏480×800分辨率竖屏原生也可以横过来用带电阻触摸T5L内核支持DGUS II开发模式。我第一次拿到这块屏的时候第一反应是这不就是个带触摸的显示器吗但实际用下来发现它更像是一个独立运行的小电脑——你不需要给它配主机它自己就能跑界面逻辑、响应触摸、读写变量、甚至做简单的数据运算。这块屏最核心的价值在于把UI从主控MCU上彻底剥离。以前做产品界面刷新、触摸响应、页面切换全压在STM32或者ESP32上主控既要跑业务逻辑又要刷屏稍微复杂点的界面就卡得不行。用DMG80480C070之后主控只需要通过串口发几条指令告诉屏把温度值显示到某个位置剩下的渲染、触摸、动画全由屏自己搞定。主控的负担一下子轻了开发周期也短了。适合谁看这篇内容如果你手上有这块屏或者正在选型阶段想了解迪文屏的开发流程又或者你已经买了屏但卡在图片怎么进去字库怎么配CFG文件到底改什么这些环节那这篇就是写给你的。我会从工程建立、图片处理、字库生成、CFG配置到SD卡下载把整个链路走一遍顺带把踩过的坑和容易忽略的细节都摊开讲。注意迪文屏的型号命名有规律DMG80480C070中80480代表分辨率480×800C代表T5L内核070代表7寸。买屏的时候一定要确认内核版本T5L和之前的T5UID系列在CFG配置上有差异别拿错文档。2. 开发前的整体思路为什么是图片字库CFG三件套2.1 迪文屏的显示逻辑和传统屏有什么不同传统串口屏或者RGB屏你要显示一个按钮通常是在代码里画矩形、填颜色、写文字。迪文DGUS II的逻辑完全不一样它把每一个界面元素都当成一张图片来处理。按钮是图片背景是图片图标是图片文字则是通过字库索引从字库文件中取模显示。这意味着什么意味着你的UI设计稿在Photoshop或者Figma里长什么样最终屏上显示就长什么样不需要在代码里一点点调坐标和颜色。对于做产品的人来说这省掉了大量调UI的时间。但代价是你得提前把图片处理好尺寸、格式、命名都有讲究不然下载进去要么不显示要么花屏。2.2 为什么CFG文件是绕不过去的坎CFG文件是迪文屏的系统配置文件它决定了屏的底层行为波特率、触摸模式、背光亮度、页面切换方式、变量地址映射等等。很多人第一次用迪文屏图片下载进去了字库也放了但屏就是没反应十有八九是CFG没配对。我见过最常见的错误是CFG里波特率设的是115200但主控代码里写的是9600两边对不上屏当然不理你。还有就是触摸模式选错了电阻屏配了电容屏的配置触摸完全失灵。CFG文件不大通常就几十个字节但每一个字节都对应一个功能改错一个位就可能出问题。2.3 SD卡下载为什么不用串口下载迪文屏支持串口下载和SD卡下载两种方式。串口下载适合小文件调试但速度慢而且一旦CFG配错导致串口通信异常你就没法通过串口再下载了形成死锁。SD卡下载则是离线烧录把文件放到SD卡根目录插上屏上电自动下载下载完拔卡重启就行。这种方式不依赖串口通信即使CFG配错了也能强制覆盖是量产和调试的首选。提示SD卡下载时屏会先读取卡里的文件如果检测到有更新会自动烧录到屏的Flash里。烧录完成后一定要把SD卡拔掉再重启否则每次上电都会重新烧录浪费时间不说还可能缩短Flash寿命。3. 图片处理从设计稿到屏能识别的格式3.1 图片的尺寸和格式要求DMG80480C070的原生分辨率是480×800。你做的背景图、按钮图、图标全部要按这个尺寸来。如果是横屏使用就是800×480。图片格式只支持BMP和JPEG但实际用下来BMP最稳JPEG偶尔会有解码问题尤其是压缩率高的图片。图片的色深要注意迪文屏支持16位色RGB565和24位色RGB888。16位色文件小显示效果对于大多数工业界面够用24位色色彩更细腻但文件大下载慢。我的建议是背景图用24位色保证渐变过渡自然按钮和图标用16位色节省空间。3.2 图片命名规则数字编号不是随便起的迪文屏通过图片的数字编号来识别页面和元素。比如背景图命名为00.bmp对应页面001.bmp对应页面1。按钮图标通常命名为00_01.bmp这种格式前面是页面号后面是元素序号。这里有个坑编号必须是连续的且从00开始。如果你跳过了某个编号比如有00、01、03没有02屏在切换页面时可能会找不到对应图片导致黑屏或者显示错乱。我一般会在工程目录里建一个表格记录每个编号对应的图片内容避免后期混乱。3.3 图片压缩怎么在保证质量的前提下减小体积480×800的24位BMP一张图大约1.1MB。如果你有20个页面那就是22MB屏的Flash通常只有几十MB放不下太多。这时候就需要压缩。迪文官方提供了一个图片转换工具可以把BMP转成专用的压缩格式。压缩率通常在50%到70%之间具体取决于图片内容。纯色背景压缩率很高复杂照片压缩率低。我实测下来一个工业控制界面20张图压缩后大约8MB完全放得下。注意压缩后的图片不能再直接用图片查看器打开必须通过迪文工具解压查看。所以原始BMP文件一定要保留好后期改图的时候要用原图重新压缩不要试图修改压缩后的文件。3.4 图标和按钮的透明处理迪文的按钮图标支持透明色。什么意思就是你可以做一个圆角按钮的PNG背景透明放到屏上之后按钮下面的背景图会透出来。但迪文不直接支持PNG你需要把透明区域填充成某个特定颜色通常是品红FF00FF然后在CFG或者控件属性里把这个颜色设为透明色。这个功能做出来的效果很自然尤其是做异形按钮的时候。但要注意透明色填充的区域边缘可能会有锯齿因为图片本身没有Alpha通道。解决办法是做图的时候把边缘羽化一下或者用稍大一点的尺寸再缩放。4. 字库配置文字显示的底层逻辑4.1 迪文字库的两种类型点阵字库和矢量字库迪文屏支持两种字库点阵字库和矢量字库。点阵字库是固定大小的比如16×16、24×24、32×32每个字号都要单独生成一个字库文件。矢量字库则是可缩放的一个文件支持多种字号。点阵字库的优点是显示速度快资源占用小适合固定字号的界面。矢量字库的优点是灵活但渲染速度稍慢且文件体积大。我的经验是如果界面文字大小固定用点阵字库如果需要在运行时动态调整字号或者支持多语言用矢量字库。4.2 字库生成工具的使用要点迪文官方提供了字库生成工具操作不复杂但有几个关键点容易出错。第一字符集选择。如果你只需要显示ASCII字符和常用汉字选择GB2312就够了。如果需要显示生僻字或者多语言选Unicode。选错了字符集字库文件会很大而且可能找不到你要的字。第二取模方式。迪文屏用的是纵向取模、字节倒序。这个设置如果错了显示出来的字会是乱码或者镜像的。工具里默认就是正确的但如果你用第三方工具生成字库一定要确认这个参数。第三字库编号。迪文屏支持多个字库文件每个字库有一个编号。在CFG文件里要指定默认字库编号在显示文字的时候也要指定用哪个字库。我一般把常用汉字放在字库0特殊符号放在字库1方便管理。4.3 字库文件的大小估算以16×16点阵的GB2312字库为例GB2312有6763个汉字和682个符号总共约7445个字符。每个字符16×16点阵需要32字节。所以字库大小约为7445×32≈238KB。24×24点阵则是7445×72≈536KB。32×32点阵约953KB。如果你只需要显示少量汉字比如只用到几百个字可以用工具裁剪字库只保留用到的字符。这样字库文件可以缩小到几十KB下载速度更快Flash占用更少。4.4 文字显示时的编码问题迪文屏显示文字时发送的是字符的编码。GB2312编码的汉字是两个字节ASCII字符是一个字节。在写主控代码时要注意字符串的编码格式。如果你在代码里用UTF-8编码发送汉字屏上会显示乱码因为字库是按GB2312生成的。解决办法有两个一是把代码里的字符串转成GB2312编码再发送二是生成Unicode字库代码里用Unicode编码发送。我一般用第一种因为GB2312字库文件小转换也简单。5. CFG文件详解每一个字节都影响屏的行为5.1 CFG文件的结构CFG文件是迪文屏的配置文件通常命名为T5LCFG.CFG或者类似的名字放在SD卡根目录。文件大小一般是32字节或者64字节具体取决于屏的型号和固件版本。CFG文件的每一个字节或者每一个位都有特定含义。比如第0字节可能是波特率设置第1字节可能是触摸模式第2字节可能是背光亮度。不同固件版本的CFG定义可能不同所以一定要用对应版本的CFG说明文档。5.2 波特率配置主控和屏必须一致波特率是CFG里最关键的配置之一。迪文屏支持多种波特率从9600到921600都有。CFG里通常用一个字节的低4位或者整个字节来表示波特率档位。我一般用115200这个速率在大多数主控上都能稳定运行而且速度够用。如果你的主控是低速MCU比如51单片机可能要用9600或者19200。配置的时候主控代码里的波特率要和CFG里完全一致否则通信不上。提示如果不确定CFG里波特率设的是多少可以把屏接上串口用示波器或者逻辑分析仪抓一下上电时的通信波形反推波特率。或者直接重新生成一个CFG文件用SD卡下载覆盖。5.3 触摸模式配置电阻屏和电容屏不能混DMG80480C070是电阻触摸屏CFG里要选电阻屏模式。如果错选了电容屏模式触摸会完全失灵或者坐标偏移严重。电阻屏还需要校准。迪文屏支持触摸校准功能通常在CFG里使能校准然后上电时按提示点击几个点完成校准。校准参数会保存在屏的Flash里下次上电不用重新校准。5.4 页面切换和变量地址映射CFG里还可以配置页面切换方式。迪文屏支持两种页面切换一种是直接切换一种是带过渡动画的切换。直接切换速度快适合工业界面过渡动画好看适合消费类产品。变量地址映射是另一个重要配置。迪文屏的变量存储区分为多个区域比如VP变量区、数据变量区等。CFG里可以指定主控访问的变量地址范围以及掉电保存的变量范围。这个配置要和主控代码里的地址定义一致否则读写数据会出错。5.5 CFG文件的生成和修改迪文官方提供了CFG生成工具图形化界面勾选选项就能生成CFG文件。但有时候你需要手动修改某个字节这时候就要用十六进制编辑器。我一般先用工具生成一个基础CFG然后用十六进制编辑器打开对照CFG说明文档逐个字节确认。改完之后一定要用校验工具验证一下确保没有改错位。6. SD卡下载全流程从准备到验证6.1 SD卡的格式要求迪文屏对SD卡有要求必须是FAT32格式容量不超过32GB。我试过用exFAT和NTFS格式的卡屏都不认。容量方面8GB或者16GB的卡最稳32GB也可以但再大就可能有问题。SD卡的质量也很重要。有些杂牌卡读写速度慢或者有坏块会导致下载失败。我一般用闪迪或者金士顿的Class 10卡稳定可靠。6.2 下载文件的目录结构SD卡根目录下需要放以下文件T5LCFG.CFG配置文件DWIN_SET文件夹里面放图片、字库、图标等资源文件如果有OS内核或者固件升级文件也放在根目录DWIN_SET文件夹里的文件命名要符合迪文规则。图片是00.bmp、01.bmp这种字库是0_DWIN_ASC.HZK这种。具体命名规则参考迪文文档。6.3 下载过程的操作步骤第一步把SD卡格式化成FAT32。 第二步把CFG文件和DWIN_SET文件夹拷贝到SD卡根目录。 第三步屏断电插入SD卡。 第四步屏上电等待下载完成。下载过程中屏上会显示进度条或者蓝屏。 第五步下载完成后屏断电拔出SD卡。 第六步屏重新上电验证显示和触摸是否正常。注意下载过程中绝对不能断电或者拔卡否则可能导致Flash数据损坏屏变砖。如果下载失败重新格式化SD卡重新拷贝文件再试一次。6.4 下载失败的常见原因下载失败最常见的原因是SD卡格式不对或者文件命名错误。其次是CFG文件配置错误导致屏无法识别SD卡。还有就是SD卡本身有问题换一张卡试试。如果屏上电后没有任何反应先检查背光是否亮。背光不亮可能是电源问题背光亮但无显示可能是CFG里背光亮度设成了0或者图片文件损坏。7. 常见问题与排查技巧实录7.1 屏上电后白屏或者花屏白屏通常是CFG里背光亮度配置错误或者图片文件没有正确下载。花屏则可能是图片格式不对或者图片编号不连续。排查步骤先确认CFG里背光亮度不是0然后检查DWIN_SET文件夹里的图片文件是否完整编号是否从00开始连续最后用迪文工具重新压缩图片重新下载。7.2 触摸无反应或者坐标偏移触摸无反应先检查CFG里触摸模式是否选对。电阻屏选电阻模式电容屏选电容模式。如果模式对了但还是没反应可能是触摸校准数据丢失重新校准一次。坐标偏移通常是校准不准确或者触摸屏硬件有问题。重新校准后如果还是偏移检查触摸屏的排线是否插紧。7.3 串口通信不上串口通信不上先检查波特率是否一致。然后检查接线主控的TX接屏的RX主控的RX接屏的TXGND要共地。如果接线对了还是不通用示波器看一下屏的TX是否有波形输出判断屏是否正常工作。7.4 字库显示乱码字库乱码通常是编码不匹配。检查字库生成时选的字符集和代码里发送的编码是否一致。GB2312字库要发GB2312编码Unicode字库要发Unicode编码。还有就是字库编号配置错误。CFG里指定的默认字库编号要和实际字库文件编号一致显示文字时指定的字库编号也要对。7.5 SD卡下载后屏没变化SD卡下载后屏没变化可能是下载没有真正执行。检查SD卡根目录是否有CFG文件DWIN_SET文件夹是否在根目录。还有就是屏可能没有检测到SD卡换一张卡试试。如果确认下载执行了但屏还是老样子可能是CFG文件里的配置没有生效。有些配置需要断电重启才能生效下载完成后一定要断电再上电。8. 一些实操心得和避坑建议8.1 工程文件管理版本控制很重要迪文屏的工程文件包括图片、字库、CFG、OS代码等文件多且杂。我建议用Git或者SVN做版本控制每次修改都提交一次方便回滚。尤其是CFG文件改错一个字节就可能出问题有版本控制就能快速对比。8.2 调试顺序先通串口再调UI很多人一上来就搞UI图片下载了一堆结果串口通信没通屏根本不响应。正确的顺序是先用最简单的CFG和一张测试图确认串口通信正常然后再逐步添加UI元素和字库。8.3 备份原始CFG拿到新屏的第一件事就是把原厂的CFG文件备份出来。后期如果改乱了可以恢复到出厂状态。原厂CFG通常在屏的Flash里可以通过串口读出来或者从迪文官网下载对应型号的默认CFG。8.4 SD卡下载的替代方案如果SD卡下载一直失败可以尝试串口下载。迪文提供了串口下载工具通过串口把文件传到屏里。但串口下载速度慢而且需要屏的串口通信正常。如果CFG配错导致串口也不通那就只能返厂或者用仿真器强制擦除Flash了。8.5 关于变量地址的规划迪文屏的变量地址空间有限规划的时候要留有余地。我一般把变量分成几类系统变量、页面变量、数据变量每类分配一段连续的地址。这样后期扩展的时候不会冲突。变量地址一旦确定就不要轻易改动因为主控代码和屏的OS代码都要对应修改。改地址的成本很高前期规划好能省很多事。8.6 屏的散热和电源DMG80480C070的功耗不算大但长时间运行还是会发热。如果装在密闭外壳里要注意散热。电源方面建议用稳定的5V电源电流至少1A。电源不稳会导致屏重启或者触摸失灵。8.7 关于CFG文件的备份和恢复CFG文件改错了导致屏不工作最直接的恢复方法是用SD卡重新下载一个正确的CFG。但如果屏连SD卡都不认了那就需要用迪文的PC工具通过串口强制写入CFG。这个操作需要屏的串口通信正常所以平时不要随意改波特率除非你确定能改回来。8.8 图片压缩的取舍图片压缩率越高文件越小但显示质量越差。工业界面通常以清晰为主压缩率不要太高。我一般用中等压缩率肉眼看不出明显失真就行。如果是消费类产品对美观要求高可以用低压缩率甚至不压缩。8.9 字库裁剪的技巧如果只需要显示少量汉字可以用字库工具裁剪。裁剪的时候要注意保留常用符号和数字不然显示数字的时候会找不到字。我一般保留ASCII全部字符加上项目用到的汉字这样字库文件最小。8.10 关于屏的固件升级迪文会不定期发布固件更新修复bug或者增加功能。升级固件通常也是通过SD卡把固件文件放到根目录上电自动升级。升级前一定要确认固件版本和屏的型号匹配刷错固件可能导致屏变砖。8.11 触摸屏的日常维护电阻触摸屏表面是塑料膜容易被划伤。使用时避免用尖锐物体触碰清洁时用软布蘸少量水擦拭不要用酒精或者腐蚀性清洁剂。如果触摸膜损坏可以单独更换触摸膜不需要换整块屏。8.12 关于迪文屏的选型建议如果你正在选型DMG80480C070适合中等复杂度的工业界面。如果界面更复杂需要更高的分辨率或者更快的刷新率可以考虑迪文的更高端型号。如果只是简单的显示需求迪文的低端型号也能满足。选型的时候主要看分辨率、触摸类型、内核版本和接口类型。8.13 串口通信的稳定性串口通信的稳定性受线缆长度和电磁环境影响。如果主控和屏距离较远建议用屏蔽线并且加磁环。通信协议上建议加校验和重传机制避免数据丢失。8.14 关于屏的显示方向DMG80480C070原生是竖屏但可以通过CFG配置成横屏。横屏的时候图片要按800×480做触摸坐标也要相应旋转。配置的时候注意CFG里的显示方向设置改错了会导致显示和触摸方向不一致。8.15 最后再分享一个小技巧如果你不确定CFG里某个字节的含义可以用迪文的CFG生成工具生成两个不同的CFG然后用十六进制编辑器对比差异的字节就是对应你改动的配置项。这个方法比翻文档快而且准确。这个内容后续还可以这样扩展比如结合主控MCU的代码讲一下怎么通过串口发送指令控制屏的页面切换和变量更新或者讲一下怎么用迪文的OS内核做更复杂的逻辑处理再或者讲一下多屏级联的方案。这些都是在实际项目中会用到的有机会再展开聊。
返回列表