重要
在usartGPU中,显示需要执行时间,且缓存区1K 只有一份,因此一个重要的编程要求就是在发送命令后需要延时,而在sHMIctrl中,这个要求依然存在,但是延时时间会明显减少,主要原因如下:
- CPU的执行速度明显加快,以3.5吋为例原先显示整幅图片需要100ms时间,现在30ms左右
- 模式发生变化,大多数的显示被协程隔离了,但是CPU执行仍然需要时间
- 双缓存区结构轮换使用,因此一般不会出现命令覆盖问题
因此:\r\n(0d 0a)之后务必要适度延时,最好不要小于100ms
常见问题:
1、避免 "语句1;\r\n语句2;\r\n语句3;\r\n"这样发送
因为这样\r\n之后没有延时;应该修改为 "语句1;语句2;语句3;\r\n",然后适度延时
2、避免使用“\r\n\r\n"
这样会使第二个buf存储为空,从而导致第一个buf被覆盖
3、数据绑定语句执行极快,但未必收到\r\n后就立即执行
系统受到\r\n之后,只是设置了有需要执行命令的标志,如果此时正在执行显示刷新,则需要等待显示刷新之后才会执行CMD传输来的语句,这样就导致了同样的语句可能从发送\r\n之后的执行时间不一致,因此延时的值应该给予充分时间;
4、请理解C语言的转义和ASC码的基本概念
我们要求的是语句结束标志是回车换行,也就是ASC码的0d 0a ,在C语言中引号内使用"\r\n"来描述,请正确理解C语言\这个转义字符,切勿理解为:\r\n是4个字符