转载 B站 up:不烧板子
地址:https://www.bilibili.com/read/cv9435378
原博图片不清楚,自己重新跟学截图自留,侵删
文章目录
- 一、串口基础
- 1.串口发送
- (1)简单发送
- (2)循环发送
- (3)按键控制发送
- 2.串口接收
- (1)已知接收数据量
- (2)未知接收数据量
- 二、
- 1.
- 2.
- 总结
一、串口基础
1.串口发送
跟串口相关的函数都位于下图所示的位置。官方的帮助文档对每个函数有详细介绍,大家有不懂的地方首先查看帮助文档,配合搜索引擎深化理解。
(1)简单发送
串口发送一次数据过程的可以分为三个步骤:打开串口–>发送数据–>关闭串口。分别对应Confugure Port,Write,Close这三个函数。用这三个函数在LabVIEW中搭建如下程序
一个最简单的串口发送程序已经编写完毕,接下来用XCOM对我们的程序进行验证。
首先用虚拟串口连接两个COM口(本文用COM2与COM3)
在运行LabVIEW程序前,需要先在XCOM软件中打开串口,这样才能接收到数据。选择串口,并在发送缓冲区中填入“你好”,然后运行程序,可以看到在XCOM中收到了相同的文字。
测试已经完成,回过头来看看编写的程序,看起来最复杂的好像就是“串口配置”这个函数了。不过虽然它有好多接线端,这里只接了一个,其它接线端不接时会有一个默认值,没有特别要求一般都不用修改。一般情况下关注两个接口即可,即“串口资源名称”跟“波特率”。关于波特率,大家暂时理解为数据的发送速度就好了,数据的接收方要以跟发送方相同的速度接收数据才可以接收到正确的数据。可以看到XCOM中选择的波特率是9600,而我们的程序中是没有设定的,因为LabVIEW中默认的波特率就是9600。如果我们要用到其它波特率,就需要对其进行更改,可以通过“创建常量”或“创建输入控件”的方式进行更改。如果没有特别说明,后面的演示中使用的波特率都是9600。
(2)循环发送
接下来我们增加难度,让LabVIEW发送0、1、2、3……的数字,每隔1秒发送一次。 对程序做出如下修改:
在原来的程序基础上添加while循环,并加入1000ms等待,让发送程序每隔1s执行一次。并且将循环次数发送出去,实现了刚才的需求。这里要注意串口写入函数接收的数据类型为字符串,而循环次数为一个数值,所以用到了“十进制数据至字符串转换”这个函数,该函数位于字符串选板“数值/字符串转化”中。还通过“连接字符串”在数据后面追加了回车和换行,让数据不会连在一起,方便我们查看。
到这里我们貌似已经实现了刚才提出的要求,但其实还有一些不妥。我们思考一下,假如房间里有5个人要出去,顺序应该是 开门–>5人依次出去–>关门,而不是 开门–>出去1人–>关门 循环5次。发现问题了吧,打开串口、关闭串口的操作一直在循环执行!这两个步骤放在循环外面就好了,所以正确的程序应该是下面这样。
结果如下:
(3)按键控制发送
好,现在我的需求又变了,我想通过一个按键来控制什么时候发送数据,即我可以在文本框输好内容,然后按下发送按键,数据被发送出去。
应该怎么办呢?我们可以添加一个事件结构,添加一个按键按下的事件,然后在事件中发送数据。最终完成的程序如下:
运行结果如下:
按 send 发送数据,按 stop 停止程序
2.串口接收
参照串口发送的思路,串口接收一次数据的步骤为:打开串口–>接收数据–>关闭串口。但是这里有一个问题,数据的接收方是不知道数据会在什么时刻发送过来的,这是一个被动接收的过程。对应的有两种情况:
(1)已知接收数据量
对于这种情况,处理起来比较简单,直接在读取函数处进行设置即可。图中所示为接收5字节数据的情况。
接收结果如下:
(2)未知接收数据量
既然不知道有多少数据,那创建一个while循环一直读取就好了。但是数据可能是断断续续传来的,而我们在进行读取的时候又必须得告诉读取函数需要接收数据的数量,这时候可以利用属性节点的方式获取串口缓冲区的数据数量,缓冲区有多少数据就读多少。读取函数的输出端显示的是本次读取的结果,所以当断续的数据传来,显示的结果每次都会刷新,而我们想看到的应该是每一次的结果累计,这里可以使用连接字符串的方式将字符串上一次的值与这一次的值累加起来并作为新的值进行显示。
在获取到串口缓冲区的字节数之后,还进行了一个判断,当缓冲区不为空的时候再进行数据读取。
上面这个程序,可以说是一个最简单的串口接收程序了,里面用到的函数组件都是进行串口数据接收所必不可少的。
注: “Bytes at Port” 这个串口的属性节点,在仪器I/O子面板下,如下图:
也可以在 VISA 资源线上右键 >> 创建 >> Instr类的属性 >> Serial Settings >> Number of Bytes at Serial Port,如下图所示:
二、
内容
1.
2.
⚠️内容内容
总结
以上就是本文要讲的内容。