Labview实现串口通信步骤
1.在程序面板上添加VISA配置接口
2.添加后,开启帮助文档的显示。
菜单的Help->show context help,如下图
鼠标选择目标则会显示帮助框。
如下图所示。
3.创建相应的配置
在程序面板中鼠标移动到对应的引脚上,点击鼠标右键->create->control,创建后,界面面板上会出现对应的控制框。
如下图所示,创建个VISA resource name。
图0-1 创建窗口选择控件
前面板显示如下:
图0-2 前面板显示控件选择
4依次创建,波特率、停止位、数据位等如下图所示。
5.创建个while循环,用于放置发送的程序
鼠标移动到循环条件控制的引脚上,创建个control。
用于调试,不对条件处理,会报错。
6前面板放置个按钮,用于控制数据的发送
7.创建个事件,用于响应发送按钮
鼠标移动到timeout的位置,鼠标右键选择edit events…如下图所示。
操作上面后,出现如下界面:选择需要响应的控件,这里选择“ok button”,选择鼠标按下。
点击ok后,事件的名称也变化了。
如下图所示。
如果鼠标点击按键,则会进入事件处理。
8创建VISA写函数
9连接端口和写函数
10添加个关闭函数
11.创建字符串控件,传递给写函数,用于发送
选中VISA Write的write buffer,右键create->control,
12界面如下所示
13.安装虚拟串口,提供一个下载地址
/soft/47470.html
用虚拟串口配置两个端口,配置好后,这两个串口之间是自动连接上,模拟硬件上两个串口对接上的。
如上图,指定好端口,点击Add pair。
14运行串口工具,提供一个下载地址
/softview/SoftView_77355.html
15.运行串口工具,打开串口,运行VI,发送数据
我的电脑配置的是COM12和COM13,vi选择COM12.
运行VI,在write buffer里面填写test,点击OK发送。
每点击一次,发送一次。
16.建立接收模块
添加个while循环,
创建while循环,用于接收。
创建VISA Read,在Read buffer引脚上点击鼠标右键create->indicator,建立个显示控件。
使能串口事件,添加个VISA Enable Event.
17 在VISA Enable Event的event type,创建个常量
然后在常量的下拉列表中选择Serial Character。
这个表示串口接收到数据,可以进入帮助文档查看详细的说明。
18.创建事件等待
19.连接事件,等待事件的类型直接连接在VISA Enable Event的Event type即可。
20.添加个属性节点,Visa Bytes at serial port,获取串口中的字节数
连接字节数,这样告诉需要读取的字节数。
也能保证每次都把串口中的数据读完。
21.添加个case结构
如果字节数大于0,那么读取数据并显示。
事件的超时时间设置为1000ms。
22.运行效果
23.调整下界面
24程序无法结束
按理说,点击两个stop按键,程序应该结束才对,但是事实不是这样的。
点击之后会卡住哪?
发送循环中,事件是一直等待按键的时间处理。
即使点击stop后程序也会等待按键的处理,现象是:点击两个结束按钮后,还需要点击一次发送“ok按钮”才能结束程序。
处理办法:在发送按钮事件创建个超时处理。
1.如下图所示,中事件的超时时间设置1000ms的常量
2.将鼠标放置在图中的红框中,点击鼠标右键,选择Add Event Case..
3.添加应用超时判断,如下图所示。
选择点击ok
添加后如下:
这样运行程序中,点击两个STOP按钮后就可以结束程序了。
25.使用一个按钮来结束程序
删除stop 和STOP2按钮,在界面面板上添加个结束按键,如下图所示。
鼠标移动到按键上,右键,创建stop按钮的value属性节点,如下图所示。
创建两个结束按键的value属性节点,连接在循环条件上。
但是注意上面图中,连接线后,是错误的。
处理办法如下:
修改按键的行为,默认是第二排第二个,修改为上面第一个即可。
26优化1后的结果
运行程序后,点击一下stop,程序就结束了。
27.优化显示框
28将接收的字符追加显示
添加一个移位寄存器,将鼠标移动到while循环的左右边界上,点击鼠标右键,选择addshift Register如下图所示。
添加一个字符串连接函数,如下图所示。
连接线路,如下图所示:
这样程序是错误的:点击下图所示,可以查看错误的地方,提示。
问题是在,添加了移位寄存器,然后两边的值连接经过case结构,我们只连接了True情况,False情况还没处理。
连接false下面的线路,如下图所示。
29优化2运行效果
30.添加滚动条
鼠标移动到显示框上右键,选择属性。
界面如下。
选中Show Vertical scroll bar,显示框的滚动条就出来了,点击ok。
31还有一问题,接收数据中,滚动条不会跟着动
处理办法是,设置滚动条的位置。
创建滚动条位置属性节点,Scroll Position.
鼠标移动到属性节点上,右键,选择Change to Write。
那么控制的引脚方向转到前面了。
然后创建个常量1000,如下图所示。
这样呢,接收的字符显示的行数在1000以内,那么都会定位刚接收的字符位置。
32 点击stop后,再运行程序的时候,stop 还是那个状态
处理办法是在初始化过程中,对stop的按键值进行初始化。
创建stop的value属性节点。
如下图所示。
33.累加接收的字符数并显示
创建个移位寄存器,连接VISA Read 的Return count,与上一次的值相加,再传给移位寄存器,作下一次使用,并显示相加的数字。
34优化3后
35 可以对接收字符数判断,超过多少字符数后就清空显示框,重新开始显示
处理办法是:对字符数做个判断,如果超过多少,加个case结构,超了就赋值个空字符
串,未超就追加。
这个是初学做的记录,也希望能帮助到大家。
有疑问或建议可以发送到,大家交流下。
tangbinjob@.。