labview实现串口通信

通信模块

36人已加入

描述

点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程

  一、串口通信简介

  串口按位(bit)发送和接收字节。串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

  串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。

  二、LabVIEW简介

  LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。

  LabVIEW特点

  尽可能采用了通用的硬件,各种仪器的差异主要是软件。

  可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。

  用户可以根据自己的需要定义和制造各种仪器

  三、Labview实现串口通信步骤

  1.在程序面板上添加VISA配置接口

串口通信

  2.添加后,开启帮助文档的显示。菜单的Help-》show context help,如下图

串口通信

  鼠标选择目标则会显示帮助框。如下图所示。

串口通信

  3.创建相应的配置

  在程序面板中鼠标移动到对应的引脚上,点击鼠标右键-》create-》control,创建后,界面面板上会出现对应的控制框。如下图所示,创建个VISA resource name。

串口通信

  前面板显示如下:

串口通信

  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.安装虚拟串口,提供一个下载地址

  用虚拟串口配置两个端口,配置好后,这两个串口之间是自动连接上,模拟硬件上两个串口对接上的。

串口通信

  14运行串口工具

  15.运行串口工具,打开串口,运行VI,发送数据

  我的电脑配置的是COM12和COM13,vi选择COM12

串口通信

  运行VI,在write buffer里面填写test,点击OK发送。

串口通信

  每点击一次,发送一次

  16.建立接收模块

  添加个while循环,

串口通信

  创建while循环,用于接收。创建VISA Read,在Read buffer引脚上点击鼠标右键create-》indicator,建立个显示控件。

串口通信

  17 在VISA Enable Event的event type,创建个常量

串口通信

  然后在常量的下拉列表中选择Serial Character。这个表示串口接收到数据,可以进入帮助文档查看详细的说明。

  18.创建事件等待

串口通信

  19.连接事件,等待事件的类型直接连接在VISA Enable Event的Event type即可。

串口通信

  20.添加个属性节点,Visa Bytes at serial port,获取串口中的字节数

串口通信

  连接字节数,这样告诉需要读取的字节数。也能保证每次都把串口中的数据读完。

串口通信

  21.添加个case结构

串口通信

  22.运行效果

串口通信

  23.调整下界面

串口通信

  24程序无法结束

  按理说,点击两个stop按键,程序应该结束才对,但是事实不是这样的。点击之后会卡住哪?

  发送循环中,事件是一直等待按键的时间处理。即使点击stop后程序也会等待按键的处理,现象是:点击两个结束按钮后,还需要点击一次发送“ok按钮”才能结束程序。 处理办法:在发送按钮事件创建个超时处理。

  1. 如下图所示,中事件的超时时间设置1000ms的常量

  2. 将鼠标放置在图中的红框中,点击鼠标右键,选择Add Event Case.。

串口通信

  如果字节数大于0,那么读取数据并显示。事件的超时时间设置为1000ms。

  3. 添加应用超时判断,如下图所示。选择点击ok

串口通信

  添加后如下:

串口通信

  这样运行程序中,点击两个STOP按钮后就可以结束程序了。

  25.使用一个按钮来结束程序

  删除stop 和STOP2按钮,在界面面板上添加个结束按键,如下图所示。鼠标移动到按键上,右键,创建stop按钮的value属性节点,如下图所示。

串口通信

  创建两个结束按键的value属性节点,连接在循环条件上。

串口通信

  但是注意上面图中,连接线后,是错误的。处理办法如下:

  修改按键的行为,默认是第二排第二个,修改为上面第一个即可。

串口通信

  26优化1后的结果

  运行程序后,点击一下stop,程序就结束了。

串口通信

  27.优化显示框

  28将接收的字符追加显示

  添加一个移位寄存器,将鼠标移动到while循环的左右边界上,点击鼠标右键,选择addshift Register如下图所示。

串口通信

  添加一个字符串连接函数,如下图所示。

串口通信

  这样程序是错误的:点击下图所示,可以查看错误的地方,提示。问题是在,添加了移位寄存器,然后两边的值连接经过case结构,我们只连接了True情况,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结构,超了就赋值个空字符串,未超就追加。

  推荐阅读:

  labview实现can通讯

  labview实现16位的crc

  labview实现3d模型

  labview实现plc指令

  labview实现网络通信方法与实例

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
水为最善土生万物 2021-08-24
0 回复 举报
非常好,好人一生平安!太经典啦,楼主好人啊! 收起回复
xiehw1 2021-01-20
0 回复 举报
while loop内,type与time端如何与VISA write错误输入端相连接,为什么总是报错?求教高手 收起回复
全部评论

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分