基于LabView开发的串口助手

目录

1.串口的打开与关闭实现

2.发送和接收功能实现

3.添加接收区自动清空功能

4.添加接收区滚动条实时显示功能

5.添加停止运行功能

6.清空接收区,清空发送区,清空计数功能实现

7.接收/发送16进制显示

8.连续发送功能实现


1.串口的打开与关闭实现

我们首先来实现串口助手的最基本的功能,打开与关闭。具体步骤如下:

首先创建一个while结构,然后在里面创建两个布尔类型的确定按钮作为我们的打开串口按钮,和关闭串口按钮。

 

在while结构中添加事件结构,并且将事件设置成如下。

 我们在打开串口事件中配置串口端口输入控件,波特率输入,禁止终止符。

 

接着再继续配置清空缓冲区,避免接收数据错误。

下面这里是实现点击开串口按钮之后,如果打卡成功该按钮变为灰色,并且指示灯亮起。通过判断是否输出错误信号,如果没有错误则输出非,加一个非门取反后为真,然后再添加条件判断来控制按钮的使能与失能。

 

然后这边再进入“关闭串口”事件,在关闭串口事件中就只需要调用visa关闭和改变按钮颜色即可。

2.发送和接收功能实现

首先我们调用两个字符串组件,用来显示我们发送和接收的字符串。这里我们把接收字符串的滚动条打开,避免接收到的数据放不下。

 

定义一个发送按钮,然后在之前的事件结构中新建一个“发送事件”。

 

在发送事件中,调用visa写入,将发送内容控件与其相连,再通过一个布尔指示灯判断发送错误状态。

接着我们还可以实现一下观察发送的数目和发送的总数。调用字符串长度控件用来计算所发送的字符串大小 ,再创建两个数值显示控件。

发送数目很容易就显示出来了,然后我们调用发送总数的属性节点值,用这个值和计算出来的字符串长度值相加就是我们总共的发送总数。

 

 

接下来开始编写接收数据部分,首先我们需要搞清楚,接收的前提是什么?接收的前提是当打开串口没有错误的情况下我们才可以接收,因此我们需要调用这里错误判断的输出值,再配合条件结构一起使用。

 ​

然后我们就简单实现了一个串口接收的程序,但是下面的这个代码运行的话串口接收区的内容会不断的被覆盖掉,接收区总会显示最新的数据,旧的内容会不断地被覆盖掉。

 

因此我们需要做一些修改,调用连接字符串的组件将我们之前接收到的数据和新接收到的数据拼在一起。 

 

这里还需要注意一点,这个前面用于判断是否发送接收的这个状态值需要再程序开头初始化成非,不然一打开串口没有任何判断就直接进入发送与接收阶段,而且在关闭串口里也需要置非。

整理后如下:

“打开串口事件”

“关闭串口事件” 

 “发送”事件

 

3.添加接收区自动清空功能

调用大于控件和字符串长度控件,通过比较接收缓冲区的数值和我们自己设定的数值大小进而进行清空操作。

 

调用与门,当开关打开和大于的信号同时存在时,将接收内容写为空。

4.添加接收区滚动条实时显示功能

 调用滚动条位置控件

 

将接收内容的字符串长度与其相连即可。

 

5.添加停止运行功能

创建布尔类型按钮。

 在事件结构中添加“停止运行”事件。

 在停止运行前首先要保证串口处于关闭状态,因此添加平铺式顺序结构,确保串口关闭。

打开应用程序控制,调用停止控件。

 

6.清空接收区,清空发送区,清空计数功能实现

创建布尔类型按钮。 

 

 在事件结构中分别添加这三个事件。

 

清空接收区和清空发送区都一样,都是直接调用属性节点值然后赋一个空的字符串。 

 清空计数事件中,调用属性节点值改为0即可。

7.接收/发送16进制显示

创建布尔类型按钮。 

 

添加事件。 

创建显示样式属性节点值,并且转化为写入。

 当条件为真时,赋值一个3的常量(右下角的图解释了为什么是3)。

 

 条件为假时,赋值为0。

8.连续发送功能实现

 创建布尔类型按键和数值输入控件。

 再次新建一个while循环

延时这里就给一个毫秒延时控件即可。 

 

下面就需要判断循环发送的几个条件, 当按钮按下、串口打开、发送内容不为零同时满足时采符合循环发送的条件,因此这里用一个与门进行连接。

发送内容的代码和手动发送是大同小异的。

 

最后进行整理即可

生成可执行文件(exe)可以参考:LabVIEW生成应用程序(exe)和安装程序(installer)_LabVIEW_不脱发的程序猿_InfoQ写作社区

猜你喜欢

转载自blog.csdn.net/aaaaaaaa123345/article/details/127240400
今日推荐