目录
研究背景
解决方法
原因分析
尝试的解决方法
本质原因
写在最后
研究背景
想实现LED显示屏数字、字母、汉字均能正常显示的效果(效果如下)。在将UTF-8改为GB2312 编码之前,数字和字母不乱,但是汉字会乱码。
解决方法
1.将编码方式改为GB2312编码环境,显示效果如下
原因分析
字符编码不匹配造成的。GB2312 编码使用双字节表示一个字符,而 sprintf 和 printf 函数默认使用单字节字符编码(如 ASCII 或 UTF-8)。因此,在将 GB2312 编码的字符串与 %d 占位符混合使用时,可能会导致字符解析错误。
尝试的解决方法
1.将数字转换为utf-8在GB2312的编码中封装发送,不行。
2.解析cjson时直接放在字符串中,不要放在数组中,省确过程中的麻烦,验证可行
本质原因
LED屏的中英文编码方式为:控制卡IP编码格式为中文为GB2312的编码格式,英文格式也为GB2312,但是协议为中文数据为GB2312编码,英文或符号为 ASCII编码,因此导致了错乱。通讯的编码协议要求如下
写在最后
最后,给大家提供几个小问题思考,这几个问题想通了,相信这个项目任务就能真正掌握,并且轻松拿下,好好思考!有助于培养全局观念噢
问题1:为什么要写2个函数,一个负责拼接显示字体,一个负责语音播报?
问题2:怎么让语音播报只发送一次,不需要循环发送,因为自动驾驶会一直存在,一路上不需要一直自动驾驶状态一直语音播报状态?
问题3:先显示后报语音会有不报语音的现象,如在屏蔽所有打印信息时会出现这一现象?
问题4:如何实现当显示收到左转或者右转时(转向过程),箭头要闪烁,同时语音要循环播报:车辆左/右转弯?
问题5:开发板掉电后,时间恢复到初始值,原因有哪些?