Stm32 serial port screen application-SIM900A (on)

1. Serial port screen debugging (from the MCU perspective)

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. Communication between serial port screen and single-chip microcomputer (from the perspective of serial port screen)

1)发送:
      串口屏串口发送数据是使用get prints printh指令。同一个事件里分行
      写发送指令,实质是同一行发送的。发送变量只能使用prints,get指令,发
      送16进制数据只能使用printh指令。屏幕可通过printh指令,配合prints指令
      实现任何通信协议。
      三个指令如图所示:

Insert picture description here
Insert picture description here
Insert picture description here

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. Format and send

 我做的是SIM900A,通过串口拼控制SIM900A打电话发短信上云等,这是我做的
 界面照片。

Insert picture description here

 实物图以及 部分功能展示

Insert picture description here
Insert picture description here
Insert picture description here

由于加了串口屏幕和SIM900A,printf是单独调试使用的。所以在使用其他串口
发送指令的时候很麻烦,需要进行格式化输出,也就是变参函数
大体步骤:
(1)定义一个变参函数(可以将第一个参数设置为个数,也可以不设置)
(2)声明va_list变量用来存储参数
 (3) 用va_start初始化参数列表
(4)用va_arg访问参数列表(vprintf)
		注意:如果需要返回值,那么va_arg(1,2)参数2就是你填入返回值的类型
(5)用va_end完成清理工作
			
对于我们格式化输出,则如图所示

Insert picture description here

Guess you like

Origin blog.csdn.net/qq_45604814/article/details/110439619