本帖最后由 杨为民 于 2022-11-24 12:35 编辑
(13)通常在C语言中向串口发送字符串的函数是“puts”,这个函数的功能是从指定的字符串开始地址起按字节不停地读取数据和发送字节数据,如果读到的字节数据是0,则停止发送,退出函数。 按照这个规定,“STDIO”函数库中的“puts”函数不能发送含有0数据的字符串,因为发到该处就退出了。同时如果用户给的字符串忘记了写入结束符0,则“puts”发完给定的字符串后将不停地继续发送内存中的数据,直到碰到一个0数据才结束。 (14)根据前面的7段数码管接口协议,本文程序用一个字母“C”表示点亮的LED灯,在7段数码管虚拟显示设备上也显示了一个跑马灯效果,具体见前面视频中右下角的部分。下图是这部分功能的实现程序: (15)这段程序的思路是在输出缓冲区“TX_Buf”中先填一个背景显示字符串“01234567”的指令,然后再将对应发光LED位置的字符替换为字符“C”(第83行)。 从程序中可以看到该指令的第9~11个字符数据为0,从本质上说这条指令属于“二进制序列”,如果像第61行一样用发送“文本序列”的“puts”函数发送指令,则只会发送出头5个字符,不能发送完整的指令。
(16)本程序专门为发送含有数据0的指令编写了串口定长发送数据函数“UART1_SendData”,在第84行使用它来发送7段数码管显示指令,实现跑马灯功能。下图是该发送函数的程序: 在这个发送函数中,要发送的字符串长度用函数参数指定,用STDIO函数库中的“putchar”函数来发送单个的字符,包括发送数据0。 STC-ISP上还有其他多种图形图像虚拟显示设备接口协议指令属于二进制序列,也应该用这种方式发送来传输。 (17)总结。STCISP上提供的串口虚拟人机交互设备是一款实用性很强的软件工具,除了作为模拟硬件设备进行学习和展示外,在进行产品开发时,也可以作为虚拟板上设备参与的程序开发。使用虚拟设备进行程序开发不仅可以降低研发成本,还可以避免硬件故障,让程序员专注于程序框架和关键技术编程研究,是一种很好的数字模拟研发技术。 目前STC-ISP版本的不足之处如视频左边显示的STC-ISP界面那样,在进行串口虚拟设备显示时,所有的传输数据都在串口助手中不停地显示出来,这时如果想在串口助手中显示其他信息,就会混在一起了。
|