当前位置: 首页 > 乐球直播在线
返回
列表

一个关于串口显示屏出现异常复位和不完全显示的问题的调试和解决

发表时间: 2024-03-09 作者: 乐球直播在线

  好久没有更新微信公众号“永珂在线”的文档,说声sorry,因为最近卑职实在太忙了,因为被一个小问题卡住了。其实在单片机系统、电路板、控制器、电子科技类产品、工控测控传感自动化系统、仪器仪表、装置设备、软件EXE编程、安卓APP开发设计定制技术上我们已很有实力和信心了,但是也不能回避的一个事实,以为做得很完美的设计、毫无瑕疵的电路图、精准简洁的程序设计,在最后调试的时候总会出现一些意想不到的问题,这样一些问题很简单,但是也非常容易在设计的时候疏忽。

  最近研制设备的之前一个版本是采用液晶屏进行参数显示,因客户真正的需求更改为串口显示屏进行显示,这个串口屏可以用格外的简单的指令进行显示,例如使用串口数据发送指令 “SendString(DS16(0,0,端午节安康,1); );”,就能在串口屏的左上角(0,0)的位置处显示16*16像素大小的汉字“端午节安康”,如此简单的直接显示操作是没有一点问题的,但是问题就出现在我使用了一个变量进行显示的时候。

  这个变量在程序中记录了运作时的状态中的各种参数,例如运行模式、压力信号、流量、温度数据等,采用ASCII码格式保存。在显示子程序中调用指令“SendString(DIS);”发送数据到串口屏显示时,却出现了意想不到的问题,串口屏不能完整显示一共4行的信息,而且隔段时间串口屏复位到初始化的界面并出现闪烁。

  反复检查了多次,并完全移植厂家提供的程序段到我的程序,但是问题依然存在。

  最后的最后,使用串口助手commix进行查看,发现在串口数据的结尾多了一个字符“/SOH”,至今也没想到为何会出现这个字符,只有检查串口字符串发送的程序段:

  发现在串口数据发送的时候,只有在遇到空字符NUL(0x00)的时候发送操作才会结束,但是显示变量DIS在16个字符后面并不一定会出现空字符,所以有时会出现字符“/SOH”,这会导致串口屏执行返回标题开始步入启动画面的操作。

  并将第17个元素赋值为空字符NUL(0x00),修改程序后再测试,一切OK。