1.串口屏调试(从mcu角度)
1)发送:
在进行通信测试的时候默认串口屏默认波特率是9600,数据位8,1停止位,
无校验(通用默认配置)
上电后无论串口助手还是单片机,首先发送一次 0xff 0xff 0xff给屏,MCU完
成初始化以后延时一段时间再发数据给串口屏,对于T0和K0系列我们建议延时250MS,对于X3和X5系列建议延时
1.5S。如果用户对串口屏启动时间要求比较精准,串口屏启动成功后会发0x88+结束符,这是说明串口屏已成功启动,用户单片机可以发数据给屏。
发送指令控制串口屏:(page main:返回主界面)
串口助手基本配置完毕后,取消发送新行,将指令page main用十六进制表示后
,加上ff ff ff,如图所示
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201201170330221.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NjA0ODE0,size_16,color_FFFFFF,t_70#pic_center)
2)接收:
设备返回数据的结束符为”0XFF 0XFF 0XFF”三个字节
1A FF FF FF:变量名称无效
1C FF FF FF:赋值操作失败等
2.串口屏与单片机通讯(从串口屏角度)
1)发送:
串口屏串口发送数据是使用get prints printh指令。同一个事件里分行
写发送指令,实质是同一行发送的。发送变量只能使用prints,get指令,发
送16进制数据只能使用printh指令。屏幕可通过printh指令,配合prints指令
实现任何通信协议。
三个指令如图所示:
2)接收: 在通常情况下单片机是很少发送一个常量给屏赋值的,大多数情况
都是单片机赋值一个变量到屏幕上的。下面代码以C语言为例
printf("n0.val=666"); 发送命令
printf("\xff\xff\xff"); 发送结束符
printf("n0.val=666\xff\xff\xff");
printf("n0.val=%d\xff\xff\xff",MyData); 一次性发完命令和结束符
printf("t0.txt=\"%d\"\xff\xff\xff",MyTxt); 一次性发完命令和结束符
注:这里发送16进制是用\xff,若不明白"\"使用法,自行百度"c语言转义字符"
3.格式化发送
我做的是SIM900A,通过串口拼控制SIM900A打电话发短信上云等,这是我做的
界面照片。
实物图以及 部分功能展示
由于加了串口屏幕和SIM900A,printf是单独调试使用的。所以在使用其他串口
发送指令的时候很麻烦,需要进行格式化输出,也就是变参函数
大体步骤:
(1)定义一个变参函数(可以将第一个参数设置为个数,也可以不设置)
(2)声明va_list变量用来存储参数
(3) 用va_start初始化参数列表
(4)用va_arg访问参数列表(vprintf)
注意:如果需要返回值,那么va_arg(1,2)参数2就是你填入返回值的类型
(5)用va_end完成清理工作
对于我们格式化输出,则如图所示