labview实现串口通信 您所在的位置:网站首页 labview中随机数怎么改为0-99 labview实现串口通信

labview实现串口通信

2023-12-09 11:57| 来源: 网络整理| 查看: 265

点击学习>>《龙哥手把手教你学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实现网络通信方法与实例



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有