串口通信
上位机和下位机之间通过串口进行通信时,需要使用到两个缓冲区,一个是发送缓冲区,一个是接收缓冲区
上位机写入数据到发送缓冲区,下位机读取
下位机写入数据到接收缓冲区,上位机读取
本次实验没有硬件设备,通过虚拟串口软件虚拟出COM1和COM2进行通信,使用labview作为上位机使用COM1,串口工具模拟下位机使用COM2
labview的串口函数:仪器I/O --> 串口
VISA写入函数的使用
VISA配置串口参数:COM1,波特率9600(每秒传送9600个bit),timeout默认10s
VISA写入函数:往发送缓冲区写入hello world,并返回写入的字节数
串口工具模拟下位机接收:
VISA读取函数的使用
1. timeout 内读取固定字节数据
串口工具模拟下位机,每200ms发送一次 12345 共5个字节到接收缓冲区
VISA读取函数:设置字节总数为20,也就是在timeout时间内最多读20个字节数据,并返回读取到的字节数量
为避免读到的是无效缓冲区数据,在读取缓冲区前先清空缓冲区
下位机每200ms发送 12345 共5个字节,上位机读取20个字节,共需要800ms,时间小于timeout
2. timeout error
字节总数设定为20,timeout设定为10s,在10s内都没读到20字节数据的时候会报错
如何模拟?将串口工具的周期发送√去掉,改为手动发送,鼠标点击发送数据两次,只发送10个字节的数据
前面板现象:
3. 读取设定时间内的字节数据
串口工具模拟下位机每200ms发送 12345 共5个字节数据
上位机设定一个输入控件输入5000到定时函数ms,共5s,也就是接收缓冲区会有125个字节被读取
使用VISA串口字节数函数访问接收缓冲区的全部字节
4. 终止符的使用
VISA串口配置函数:启动终止符设为true,终止符设为#,按照ASCII码表以十进制35输入
串口工具设置如下:每200ms发送 12345#1234 共10个字节
上位机设置为读取5s内的数据,5s时间下位机可以传送250个字节数据,但是上位机只会读到 12345# 共6个字节,因为#是终止符