添加时间:2019年05月31日 作者:工业视频模块 来源:工业视频模块
工业串口屏串口显示屏出现异常复位-工业视频模块
其实在单片机系统、电路板、控制器、电子产品、工控测控传感自动化系统、仪器仪表、装置设备、软件EXE编程、安卓APP开发设计定制技术上我们已经很有实力和信心了,但是也不能回避的一个事实,以为做得很完美的设计、毫无瑕疵的电路图、精准简洁的程序设计,在最后调试的时候总会出现一些意想不到的问题,这些问题很简单,但是也很容易在设计的时候疏忽。
工业串口屏串口显示屏出现异常复位-工业视频模块
最近研制设备的之前一个版本是采用液晶屏进行参数显示,因客户要求更改为串口显示屏进行显示,这个串口屏可以用非常简单的指令进行显示,例如使用串口数据发送指令 “SendString("DS16(0,0,'端午节安康',1); ");”,就能在串口屏的左上角(0,0)的位置处显示1616像素大小的汉字“端午节安康”,如此简单的直接显示操作是没有任何问题的,但是问题就出现在我使用了一个变量进行显示的时候。
工业串口屏串口显示屏出现异常复位-工业视频模块
首先我定义了一个16位的显示变量:unsigned char xdata DIS[16];
这个变量在程序中记录了运行状态中的各种参数,例如运行模式、压力信号、流量、温度数据等,采用ASCII码格式保存。在显示子程序中调用指令“SendString(DIS);”发送数据到串口屏显示时,却出现了意想不到的问题,串口屏不能完整显示一共4行的信息,而且隔段时间串口屏复位到初始化的界面并出现闪烁。
工业串口屏串口显示屏出现异常复位-工业视频模块
反复检查了多次,并完全移植厂家提供的程序段到我的程序,但是问题依然存在。
最后的最后,使用串口助手commix进行查看,发现在串口数据的结尾多了一个字符“/SOH”,至今也没有想到为什么会出现这个字符,只有检查串口字符串发送的程序段:
工业串口屏串口显示屏出现异常复位-工业视频模块
void SendString(unsigned char s) //发送字符串
{
while(s)
{
SendData(s++);
}
}
工业串口屏串口显示屏出现异常复位-工业视频模块
发现在串口数据发送的时候,只有在遇到空字符NUL(0x00)的时候发送操作才会结束,但
是显示变量DIS在16个字符后面并不一定会出现空字符,所以有时会出现字符“/SOH”,这会导致串口屏执行返回标题开始进入启动画面的操作。
工业串口屏串口显示屏出现异常复位-工业视频模块
所以,解决的方案是重新定义显示变量为unsigned char xdata DIS[17];
并将第17个元素赋值为空字符NUL(0x00),修改程序后再测试,一切OK。
工业串口屏,单片机接口模块,HDMI触控屏,LVDS视频模块
如何使用RS232串口通信-RS485串口模块-SPI串口模块