LabVIEW串口通信入门教程

合集下载

LabVIEW中的串口通信和硬件控制

LabVIEW中的串口通信和硬件控制

LabVIEW中的串口通信和硬件控制LabVIEW是一种强大的编程环境和开发平台,广泛应用于控制系统、仪器测量、数据采集等领域。

在LabVIEW中,串口通信是一种常见且重要的功能,它能够实现计算机与外部硬件设备之间的数据传输和控制。

一、串口通信的基本原理串口通信是通过计算机的串行接口与外部设备进行数据交换。

LabVIEW中的串口通信主要通过VISA(Virtual Instrument Software Architecture)接口实现。

VISA是一套通用的I/O接口标准,可以方便地与各种硬件设备进行通信。

在进行串口通信时,首先需要配置串口的参数,包括波特率、数据位、停止位、校验位等。

LabVIEW提供了相应的函数和工具箱,可以方便地设置这些参数。

然后,通过VISA函数进行打开串口、读取数据、写入数据等操作,实现与外部设备的数据交互。

二、LabVIEW中的串口通信实例下面以一个简单的LabVIEW串口通信实例来介绍其基本操作步骤。

首先,在LabVIEW中创建一个新的VI(Virtual Instrument)文件。

然后,在Block Diagram中拖放VISA函数,并进行相应的配置,打开串口。

接下来,通过循环结构实现数据的读取和写入。

在循环中,可以使用VISA函数读取外部设备发送的数据,并将其显示在界面上;同时,也可以通过用户输入的数据,使用VISA函数发送给外部设备。

最后,关闭串口并释放资源。

通过VISA函数,可以方便地实现串口的关闭操作。

三、LabVIEW中的硬件控制除了串口通信,LabVIEW还可以结合硬件模块进行实时的硬件控制。

LabVIEW提供了丰富的工具箱和函数库,可以支持各种硬件设备的控制和监测。

在LabVIEW中,硬件控制主要通过DAQ(Data Acquisition)模块实现。

DAQ模块可以连接各种传感器和执行器,并将其与LabVIEW 程序进行连接。

通过LabVIEW提供的函数和工具箱,可以方便地读取传感器数据,控制执行器输出,并实现实时的硬件控制。

基于LABVIEW的串口通信实验

基于LABVIEW的串口通信实验

基于LABVIEW的串口通信实验一、实验目的1.了解LabVIEW串口通信基本方法2.通过LabVIEW串口获取数字温度传感器的数据二、实验器材1.计算机一台2.LabVIEW8.20软件一套3.串口线一根4.虚拟仪器实验平台一台5.分布式温度采集模块一块6.传感器控制模块一块三、实验原理串行通信是工业现场仪器或设备常用的通信方式,它是将一条信号的各位数据按顺序逐位传送。

计算机串行通信(简称串口)采用RS232协议,允许一个发送设备连接到一个接收设备以传送数据,最大速率为115200bps。

计算机串行口采用Intel8250异步串行通信组件构成,通常以COM1~COM4来表示。

bView串口节点LabView中提供了已封装好的串口通信节点,它们位于函数->数据通信->协议->串口。

这里主要介绍程序中使用到的串口配置、串口读取、串口写入和串口关闭,其他串口相关的节点使用方法查询LabView帮助。

(1)串口配置在进行串口通信时,首先要对串口进行初始化和配置。

这可以由VISA配置串口节点来完成,串口配置节点如下图所示。

使用该节点可以设置串口的VISA资源名称、波特率、数据位、校验位、超时时间、终止符以及流控制等参数。

VISA资源名称控件用于规定对VISA会话句柄开放的资源,并维持会话句柄和类。

VISA 会话句柄是VISA使用的唯一逻辑标识符,用于与资源进行通信。

VISA会话句柄由VISA 资源名称输入控件保持,用户不可见。

VISA资源名称输出是VISA函数中输出的VISA资源名称的副本。

通过将资源名称输出或输入函数和VI,并链接函数和VI,从而简化数据流编程。

这与文件I/O函数使用的文件引用句柄输出相似。

(2)串口写入串口写入是将写入缓冲区的数据写入VISA资源名称指定的设备或接口,可以选择同步或异步。

该操作仅当传输结束后才返回。

VISA写入的节点图标及端口定义如下图所示。

其中写入缓冲区包含要写入设备的数据。

LabVIEW串口通信详解

LabVIEW串口通信详解

LabVIEW串口通信详解串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。

论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友,文章请勿转载到其它地论坛上早先发布过一个贴子,叫《串口WORD资料》,里面有一些中英文的串口的资料,这个文章是对那个资料的补充,如果是初接触串口的朋友建议先看一下上一个贴子先。

上一个贴子中提到过的内容这里不再进行补充。

首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA这个驱动,然后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。

的驱动可以在NI网站上下载到:串口扩展的问题先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应:在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。

PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。

PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。

转接线和扩展卡一般是要装驱动的。

2,串口功能的确认在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。

检查的方法很简单,就是将串口的2、3脚短接起来脚是发送数据,2脚接收数据,就是这个串口自发自收。

电脑上的串口软件一般是用串口调试助手,很出名的,也好用。

如下图所示:2010-1-2 18:50 上传下载附件(30.39 KB)图1 串口调试助手一打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接收框里看到接收的数据就是发送的数据。

LabVIEW串口通信

LabVIEW串口通信

LabVIEW串⼝通信Instrument I/O 利⽤LabVIEW内置的驱动程序库和具有⼯业标准的设备驱动软件,可对 GPIB(通⽤接⼝总线)、Ethernet(以太⽹)接⼝、RS-232(标准串⾏接⼝总线)/RS-485 等 I/O 仪器设备进⾏控制。

在LabVIEW的仪器I/O⼦模板上提供了多种图标可对各种I/O仪器设备进⾏驱动。

在LabVIEW功能模板的Instrument I/O→Serial中包含进⾏串⾏通信操作的多个功能模块,如下图所⽰,分别可实现串⼝缓存检测、串⼝写、串⼝读、中断、串⼝设置、关闭串⼝驱动等功能。

利⽤计算机的RS-232串⾏⼝,实现双机通信的硬件连接线路如下图所⽰,图中采⽤的是最简单的三线制连接⽅式。

TxD 为发送数据端,RxD 为接收数据端,GND 为接地端。

VISA  VISA是Virtual Instrument Software Architecture的简称,是由组成 VXI plug & play 系统联盟的 35 家最⼤的仪器仪表公司所统⼀制定的 I/O 接⼝软件标准及其相关规范的总称。

⼀般称这个 I/O 函数库为 VISA 库(⽤于仪器编程的标准 I/O 函数库)。

VISA 函数库是计算机与仪器之间的标准软件通信接⼝,⽤以实现对仪器的程控。

VISA对于测试软件开发者来说是⼀个可调⽤的操作函数集,本⾝并不提供仪器编程能⼒,它只是⼀个⾼层 API,通过调⽤低层的驱动程序来控制仪器。

NI-VISA 的层次结构如下图所⽰: VISA是整个仪器⾏业⽤于仪器驱动程序的标准 API ,⽤户可以⽤⼀个 API 控制包括 VXI、GPIB、RS-232 串⼝、USB(通⽤串⾏通信总线)串⼝等不同类型的仪器(根据所使⽤的仪器类型调⽤相应的驱动程序)。

使⽤ VISA 有许多优点,它⽅便⽤户在不同的平台对不同类型的仪器进⾏开发移植及升级测控系统。

1. ⼤多数的VISA功能模块使⽤了VISA resource name控制参数,该参数标识了与之通信的设备名称以及进⾏I/O操作必须的配置信息。

在LabVIEW中使用串口

在LabVIEW中使用串口

第一部分使用LabVIEW系统VI一、串口VI介绍LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:VI名称 VI功能VISA Configure Serial Port 初始化VISA resource name指定的串口通讯参数VISA Write 将输出缓冲区中的数据发送到VISA resource name指定的串口VISA Read 将VISA resource name指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中 VISA Serial Break 向VISA resource name指定的串口发送一个暂停信号VISA Bytes at Serial Port 查询VISA resource name指定的串口接收缓冲区中的数据字节数 VISA Close 结束与VISA resource name指定的串口资源之间的会话VISA Set I/O Buffer Size 设置VISA resource name指定的串口的输入输出缓冲区大小VISA Flush I/O Buffer 清空VISA resource name指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。

图1、串口操作数据流图首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。

图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。

发送数据使用VISA Write,接收数据使用VISA Read。

在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。

Labview与C51单片机实现串口通信

Labview与C51单片机实现串口通信

Labview与C51单片机实现串口通信
Labview 串口通信学会两种方法,一种是利用visa(虚拟仪器软件构架),另一种是调用activeX 控件。

第一种方法(VISA)程序如图
首先,设置串口参数,串口初始化,循环内利用VISA WITE 实现对串口的写操作,延时200 毫秒,用VISA READ 实现读操作,中间有个端口属性节点的作用是计算端口的总的字节数。

非常简单,但我花了一天时间搞懂。

第二种方法调用active X 程序图如下所示
ACTIVE X 串口通信的最大优点是可以利用中断实现数据的传送或对下位机的控制,MSCOMM32 控件实现串口通信主要是通过对其属性节点的设置来实现的。

并利用到了事件回调方法实现中断程序。

tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

labview,串口通信实现过程

labview,串口通信实现过程

Labview实现串口通信步骤1.在程序面板上添加VISA配置接口2.添加后,开启帮助文档的显示。

菜单的Help->showcontexthelp,如下图鼠标选择目标则会显示帮助框。

如下图所示。

3.创建相应的配置在程序面板中鼠标移动到对应的引脚上,点击鼠标右键->create->control,创建后,界面面板上会出现对应的控制框。

如下图所示,创建个VISAresourcename。

图-创建窗口选择控件前面板显示如下:图-前面板显示控件选择4依次创建,波特率、停止位、数据位等如下图所示。

5.创建个while循环,用于放置发送的程序鼠标移动到循环条件控制的引脚上,创建个control。

用于调试,不对条件处理,会报错。

6前面板放置个按钮,用于控制数据的发送7.创建个事件,用于响应发送按钮鼠标移动到timeout的位置,鼠标右键选择editevents…如下图所示。

操作上面后,出现如下界面:选择需要响应的控件,这里选择“okbutton”,选择鼠标按下。

点击ok后,事件的名称也变化了。

如下图所示。

如果鼠标点击按键,则会进入事件处理。

8创建VISA写函数9连接端口和写函数10添加个关闭函数11.创建字符串控件,传递给写函数,用于发送选中VISAWrite的writebuffer,右键create->control,12界面如下所示13.安装虚拟串口,提供一个下载地址用虚拟串口配置两个端口,配置好后,这两个串口之间是自动连接上,模拟硬件上两个串口对接上的。

如上图,指定好端口,点击Addpair。

14运行串口工具,提供一个下载地址15.运行串口工具,打开串口,运行VI,发送数据我的电脑配置的是COM12和COM13,vi选择COM12.运行VI,在writebuffer里面填写test,点击OK发送。

每点击一次,发送一次。

16.建立接收模块添加个while循环,创建while循环,用于接收。

串口的使用(labview系列教程之十三)

串口的使用(labview系列教程之十三)

13、串口的使用串行通讯终端与计算机之间或者计算机与计算机之间进行交换信息时,除了采用并行通讯方式之外,还经常采用串行通讯方式。

并行通讯是指数据的各位同时进行传送,其有点是传送数据速度快,缺点是有多少位数据就需要多少根传输线,这在数据位数较多,传送距离较远时就不宜采用。

串行通讯是指数据一位一位地按顺序传送,其突出优点是只需一根传输线,特别适应于远距离传输,缺点是传送速度较慢。

在微机测量,控制系统中,目前串行数据的传输大多采用异步通讯的方式。

1.同步通讯和异步通讯串行通讯分为同步传送和异步传送两种方式。

●同步传送方式要求通信双方以相同的速率进行,而且要准确地协调。

它通过共享一个单个时钟或定时脉冲源以保证发送方和接受方准确同步。

其特点是允许连续发送一组字符序列(而非单个字符),每个字符数据位数相同,没有起始位和停止位,效率高。

●异步传送方式不要求通信双方同步,发送方和接受方可以有各自的时钟源。

为了能够实现通信,双方必须都遵循异步通信协议。

在异步通信中,通信双方必须规定两件事:一是字符格式,即规定字符各部分所占的位数,是否采用奇偶校验,以及校验的方式;二是采用的波特率,以及时钟率与波特率之间的比例关系。

由此可见,异步通信方式的传输效率比同步通信方式低,但它对通信双方的同步要求大大降低,因而成本也比同步通信方式低。

2.DTE和DCE在串行通讯中,用于发送和接收数据的设备称为数据终端设备(Data Terminal Equipment 简写为DTE)。

DTE既可以是一台计算机,也可以是一台只接收数据的打印机。

用于连接DTE与数据通信网络的设备称为数据通信设备(Data Communications Equipment 简写为DCE),或称为数据电路终接设备。

DCE既可以是一个调制解调器,也可以是简单的线路驱动器。

3.波特率在串行通讯中还有一个重要的指标——波特率(又称调制速率)。

波特率定义为每秒钟传送二进制数码的位数,以位/秒(bit/s)为单位,亦称“波特”。

Labview串口通信开发实例(值得拥有)

Labview串口通信开发实例(值得拥有)

串口通信的基本概念串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。

大多数计算机包含两个基于RS232的串口。

串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。

同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。

尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

它很简单并且能够实现远距离通信。

比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

典型地,串口用于ASCII码字符的传输。

通信使用3根线完成:(1)地线,(2)发送,(3)接收。

由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手,但是不是必须的。

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。

对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。

它表示每秒钟传送的bit的个数。

例如300波特表示每秒钟发送300个bit。

当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。

这意味着串口通信在数据线上的采样率为4800Hz。

通常电话线的波特率为14400,28800和36600。

波特率可以远远大于这些值,但是波特率和距离成反比。

高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

b,数据位:这是衡量通信中实际数据位的参数。

当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。

[训练]LabVIEW串口通信详解

[训练]LabVIEW串口通信详解

LabVIEW串口通信详解串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。

论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友,文章请勿转载到其它地方,谢谢。

论坛上早先发布过一个贴子,叫《串口WORD资料》,里面有一些中英文的串口的资料,这个文章是对那个资料的补充,如果是初接触串口的朋友建议先看一下上一个贴子先。

上一个贴子中提到过的内容这里不再进行补充。

首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA这个驱动,然后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。

VISA的驱动可以在NI网站上下载到:/nidu/cds/view/p/id/1605/lang/zhs1,串口扩展的问题先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。

PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。

PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。

转接线和扩展卡一般是要装驱动的。

2,串口功能的确认在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。

检查的方法很简单,就是将串口的2、3脚短接起来,脚是发送数据,2脚接收数据,就是这个串口自发自收。

labview 入门 与RS-232 通讯简例

labview 入门 与RS-232 通讯简例
Lab View编程的简单介绍

第一节 虚拟仪器(VI)的概念
使用Lab VIEW开发平台编制的程序称为虚拟仪器程序,简称为VI。 VI包括三个部分:程序前面板、框图程序和图标/连接器。 程序前面 板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板。在 程序前面板上,输入量被称为控制(Controls),输出量被称为显示 (Indicators)。控制和显示是以各种图标形式出现在前面板上,如旋 钮、开关、按钮、图表、图形等,这使这得前面板直观易懂。


仪器控制--串行通讯
串行通讯是一种常用的数据传输方法,它用于计算机与外设,例如一 台可编程仪器,或者与另外一台计算机之间的通讯。串行通讯中发送 方通过一条通讯线,一次一个字节,把数据传送到接收方。
图例 1.先定义好串口资源 2.进行写操作 3.进行读操作 (缺少关闭串口的 操作)


我们把前面创建的温度计程序作为一个子程序用在当前新建程序 里,当前程序的前面板如下图所示,先前的温度计子程序用于采集数 据,而当前的程序用于显示温度曲线,并在前面板上设定测量次数和 每次测量间隔的延时。Lab VIEW这种创建和调用子程序的方法,使创 建的程序结构模块化,更易于调试、理解和维护。
端点是只有单输入/输出,且方向固定的节点。Lab VIEW有三类 端点----前面板对象端点、全局与局部变量端点和常量端点。 图框是Lab VIEW实现程序结构控制命令的图形表示。如循环控制、 条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执 行方式。 连线是端口间的数据通道。它们类似于普通程序中的变量。数据 是单向流动的,从源端口向一个或多个目的端口流动。不同的线型代 表不同的数据类型。每种数据类型还以不同的颜色予以强调。

在labview中使用串口进行通讯

在labview中使用串口进行通讯

设为首页加入收藏联系站长今天是: 2005年11月25日 星期五 | 首页 | 技术文章 | 资源下载|您现在的位置: LabVIEW和虚拟仪器协作同盟 >> 技术文章 >> 原创文章 >> 正文 用户登录新用户注册[图文]串口常识(三)热 荐 ★★★★在LabVIEW中使用串口进行通讯副标题:第三部分作者:测试工程师 文章来源:本站原创 点击数:1308 更新时间:2005-5-18在LabVIEW 中应用串口第一部分使用LabVIEW 系统VI一、串口VI 介绍LabVIEW 的串口通讯VI 位于Instrument I/O Platte 的Serial 中,包括:二、使用说明在LabVIEW 环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。

首先需要调用VISA Configure Serial Port 完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控VI 名称VI 功能VISA Configure Serial Port初始化VISA resource name 指定的串口通讯参数VISA Write 将输出缓冲区中的数据发送到VISA resource name 指定的串口VISA Read将VISA resource name 指定的串口接收缓冲区中的数据读取指定字节数的数据到计算中VISA Serial Break向VISA resource name 指定的串口发送一个暂停信号VISA Bytes at Serial Port 查询VISA resource name 指定的串口接收缓冲区中的数据字节数 VISA Close结束与VISA resource name 指定的串口资源之间的会话 VISA Set I/O Buffer Size 设置VISA resource name 指定的串口的输入输出缓冲区大小 VISA Flush I/O Buffer清空VISA resource name 指定的串口的输入输出缓冲区图1、串口操作数据流图如果初始化没有问题,就可以使用这个串口进行数据收发。

LabVIEW中MSComm实现串口通信编程学习

LabVIEW中MSComm实现串口通信编程学习

LabVIEW中MSComm实现串口通信编程学习问题描述:对于一般的应用,LabVIEW 中直接用VISA 串口API 函数就可以实现,方便快捷,但是对于需要使用中断方式进行串口通信的,就得使用MSComm 控件来实现了。

MSComm 控件:操作ActiveX 控件,最主要的就是要使用好它的属性、方法函数,并做好中断事件的回调处理。

LabVIEW 针对ActiveX 设置的控件在互连接口的ActiveX 中提供了8 个功能函数:Automation Open, Close Reference, To Variant, Variant to Data, Invoke Node, Property Node, Register Event Callback, UnRegister Event Callback。

在LabVIEW 中使用MSComm 控件:首先需要在LabVIEW 中加入MSComm,在工具--导入-- ActiveX 至选板中将MSComm 添加到LabVIEW 环境,选择默认路径。

然后可以在前面板的”.Net与ActiveX”中找到mscomm 然后拖拽到前面板中。

也可以先在前面板放置ActiveX 容器,然后右键选择mscomm 控件:调用ActiveX 控件创建客户端应用程序:主要用到互连接口--ActiveX 中的8 个函数:ActiveX 事件注册相关:即使用事件回调处理中断事件等,编程注意事项:对于MSComm 控件,编程时使用的都是其自动化引用,即LabVIEW将ActiveX 控件作为对象来处理。

连接属性节点到控件,可以查看所有属性,连接调用节点时,MSComm 没有提供方法,所以会显示没有方法。

以下是LabVIEW 中看到的MSComm 的属性:另外,回调事件注册首先要确定好需要传输什么样的数据,如果包含多种数据类型,可以使用簇来解决,回调函数中会自动创建与该数据类型相同的事件参数,并提供ActiveX 控件的引用。

LabVIEW串口基础 串口接收

LabVIEW串口基础  串口接收

LabVIEW 串口接收串口发送一次数据的步骤为:打开串口-->发送数据-->关闭串口。

参照串口发送的思路,串口接收一次数据的步骤为:打开串口-->接收数据-->关闭串口。

但是这里有一个问题,数据的接收方是不知道数据会在什么时刻发送过来的,这是一个被动接收的过程。

对应的有两种情况:1、接收方提前知道将接收多少数量的数据对于这种情况,处理起来比较简单,直接在读取函数处进行设置即可。

图中所示为接收5字节数据的情况。

注意在进行测试的时候,要提前让数据发送端保持持续发送,然后运行接收程序才可以收到数据。

2、接收方不知道将接收多少数量的数据既然不知道有多少数据,那创建一个while循环一直读取就好了。

但是数据可能是断断续续传来的,而我们在进行读取的时候又必须得告诉读取函数需要接收数据的数量,这时候可以利用属性节点的方式获取串口缓冲区的数据数量,缓冲区有多少数据就读多少。

读取函数的输出端显示的是本次读取的结果,所以当断续的数据传来,显示的结果每次都会刷新,而我们想看到的应该是每一次的结果累计,这里可以使用连接字符串的方式将字符串上一次的值与这一次的值累加起来并作为新的值进行显示。

在获取到串口缓冲区的字节数之后,还进行了一个判断,当缓冲区不为空的时候再进行数据读取。

上面这个程序,可以说是一个最简单的串口接收程序了,里面用到的函数组件都是进行串口数据接收所必不可少的。

但是很多时候,用LabVIEW编写串口程序是拿来跟下位机进行交互的,下位机有可能是单片机,也有可能是别的什么设备。

在调试这些下位机串口设备的时候,用的最多的调试工具就是串口助手了。

作为一个调试工具,XCOM已经做的很好了,没有必要重复造轮子。

但从另一个方面来说,XCOM是拥有很多个性化的功能的,比如自动发送、多条发送等,这些功能可以为调试带来极大的便捷。

当我们想要更多,当现有的工具无法满足我们的需求,最快的方式就是自己去编写一些调试工具,或者说根据自己当前的需求快速定制化一个调试工具。

在LabVIEW中应用串口使用LabVIEW系统VI串口VI介绍

在LabVIEW中应用串口使用LabVIEW系统VI串口VI介绍

在LabVIEW 中应用串口第一部分使用 LabVIEW 系统VI、串口 VI 介绍LabVIEW 的串口通讯 VI 位于 Instrument I/O Platte 的 Serial 中,包括:数据位、停止位、校验位和流控等等。

在LabVIEW 环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下读取字节数发送接收 :]接收数据Errormi■IR呵关闭波特率VISA图1、串口操作数据流图首先需要调用 VISA Con figure Serial Port 完成串口参数的设置,包括串口资源分配、 波特率、在某些特殊情况下, 需要设置串口接收/发送缓冲区的大小,此时可以使用 VISA Set I/O Buffer具体的例子可以参考: examples'i nstr'smplserl.llb第二部分使用MSCOMM 控件在LabVIEW 中使用MSCOMM 控件,与在 VC 、VB 中使用一样。

同样可以使用中断方式进行 接收。

具体的例子可以发 劇索取。

Resource NameEl波特率|»3—SEfelALdupliVISA resource 九卯e b~>f7ol图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。

发送数据使用 VISA Write ,接收数据使用 VISA Read 。

在接收数据之前需要使用 VISA Bytes at Serial Port 查询当前串口接收缓冲区中的数据字节数,如果VISA Read 要读取的字节数大于缓冲区中的数据字节数, VISARead 操作将一直等待,直至Timeout 或者缓冲区中的数据字节数达到要求的字节数。

当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。

duplicateVISA resource name发送数据wfWfl1[jibeWSA占be 、图4、从串口接收数据Size ;而使用 VISA Flush I/O Buffer 则可以清空接收与发送缓冲区。

LabVIEW中的串口通信和数据解析

LabVIEW中的串口通信和数据解析

LabVIEW中的串口通信和数据解析一、引言在LabVIEW中,串口通信是一种常见的用于与外部设备进行数据交互的方式。

通过串口通信,我们可以与各类传感器、仪器、控制器等设备进行数据的传输与控制。

本文将介绍LabVIEW中如何进行串口通信和数据解析的方法和技巧。

二、LabVIEW中的串口通信1. 准备工作在进行串口通信之前,首先需要准备好相应的硬件设备和驱动程序。

一般来说,我们需要一台计算机、一个串口转USB转接器以及相关的串口设备。

另外,还需要安装相应的串口驱动程序,以便在LabVIEW中进行串口通信。

2. 配置串口通信在LabVIEW中,配置串口通信需要使用到“VISA”(Virtual Instrument Software Architecture)工具。

通过VISA,我们可以对串口进行打开、设置波特率、校验位、数据位等参数,并进行数据的发送和接收。

3. 打开串口在LabVIEW的程序中,使用“VISA Open”函数来打开串口。

我们需要指定对应的串口号以及串口的配置参数。

通过这一步,LabVIEW就可以与串口建立通信连接。

4. 配置串口参数在串口打开之后,需要进行串口参数的配置,包括波特率、校验位、数据位等。

这些参数需要与外部设备的参数保持一致,才能正确地进行数据的传输和解析。

5. 读取和发送数据在LabVIEW中,可以使用“VISA Read”和“VISA Write”函数来进行数据的读取和发送。

通过这两个函数,我们可以实现与外部设备的数据交互。

读取到的数据可以在LabVIEW中进行进一步处理和解析。

三、LabVIEW中的数据解析1. 数据格式在进行数据解析之前,首先需要了解数据的格式。

不同的外部设备会使用不同的数据格式进行数据的传输。

常见的数据格式包括二进制、十六进制、ASCII等。

根据实际情况,选择合适的数据格式进行解析。

2. 数据解析方法在LabVIEW中,可以使用字符串相关的函数来进行数据的解析。

LABview 串口应用讲解

LABview 串口应用讲解

首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。

如果初始化没有问题,就可以使用这个串口进行数据收发。

发送数据使用VISA Write,接收数据使用VISA Read。

在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。

当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据
在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O Buffer Size;而使用VISA Flush I/O Buffer则可以清空接收与发送缓冲区。

在串口使用结束后,使用VISA Close结束与VISA resource name指定的串口之间的会话。

具体的例子可以参考labview目录下的:examples\instr\smplserl.llb。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。

论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友方便使用。

首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA这个驱动,然后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。

1.串口扩展的问题:先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。

PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。

PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。

转接线和扩展卡一般是要装驱动的。

2.串口功能的确认:在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。

检查的方法很简单,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。

电脑上的串口软件一般是用串口调试助手,很出名的,也好用。

如下图所示:图1串口调试助手打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接收框里看到接收的数据就是发送的数据。

稍微要注意一下的是有些电脑的COM1和COM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,如果COM1没接收到,可以再先COM2再发一次看一下。

3.串口线的检查:检查好串口后,一般也要注意一下使用的串口线,标准的串口线是9根线都是用上的,但有一些是只使用了三根线的:2、3、5。

第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的串口线,简化的串口线能用上的地方,标准的串口线也肯定能用上,因为标准线的9根线已经包括了简化串口线中的3根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。

G串口线还有一个地方需要注意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭了一下,所以叫交叉线,因为正常使用时,这边第二脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常使用。

但是有些情况下,2、3是直连的,即这边的第2脚连接另一边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用于延长串口的,比如需要将工控机的串口接头引到机柜表面上时,就使用这种线,这样机柜表面的串口线的定义还是跟电脑接出来的一样,外面的那一根串口线再使用交叉线。

从电脑主板上将串口引到主机后面板上的线就是这样的直连线。

购买串口线的时候一般也会问你买直连的还是交叉的,要区别对待。

串口线还有一个要稍微注意一下的就是DB头,因为电脑上接出来的一般是公头(针),要跟电脑接的话要母头(孔),一般仪器的串口也是公头,所以二边都是母头的串口线比较常见。

串口的接头一般是DB9的,也有DB25的,但比较少用,有些比较BT的仪器厂家居然用RJ11(水晶头那种)作为串口头,让人不爽!总之,使用串口前一定要先确定好硬件没问题,不然很浪费时间的。

4.串口参数设置:在LabVIEW中使用串口时,有几个参数比较重要,需要先说明一下的。

一个是串口初始化这个节点的“终止符”和“禁用终止符?”这二个输入端,这二个输入端是相互作用的,“终止符”默认值为10,它的十六进制是“0x0A”,这是一个ASCII 码,是一个换行符,可以从LabVIEW中的字符串的不同显示形式看出来,如下图:图2串口消息终止符左边是字符串的正常显示,中间是十六进制显示,右边是“\代码显示”,这三个字符串的值都是一样的。

终止符是10,表示在接收数据时,遇到ASCII码为10的字符(即换行符)时就停止接收数据,后面会有例子进行说明。

而“禁用终止符?”的默认值是FALSE,即启用终止符,启用终止符会有什么效果呢?终止符的意思就是当程序接收到这个字符时,就认为已经到了所有数据的未端了,从而停止接收,不管后面还有没有数据。

终止符是10,表示在接收数据时,遇到ASCII码为10的字符(即换行符)时就停止接收数据。

可以做一个很简单的试验,先短接串口2、3脚,然后将终止符设置为“0x33”,0x33是字符“3”的ASCII码,然后发送字符串可以看到接收回来的数据中只有“12”,即“3”被认为是字符串的未端了,它后面的数据就不再接收了。

很多朋友就是因为这里设置错误,导致接收数据时有时候只收到一半就没有了,特别是在连续接收数据时,但又不是每次都只能收到一半,有时候也能接收齐全的,就是因为发送的数据中可能包含了终止符而使串口认为到了最后一个字符了。

一般是将这个终止符禁用掉,即将“启用终止符?(Enable terminator?)”这一端输入为False即可。

另外还有一个比较重要的设置,就是VISA READ的“读取字节数”这个输入,由于在串口通信中,如果指定读取100个串口缓冲区的字节数,如果当前缓冲区的数据量不足100个时,程序会一直停在VISA READ这个节点上,如果在超时的时间(默认是10秒)内还没有凑足100个数据的话,程序就会报“Time out”的错误,如果超时时间设置得太长,有可能导致程序很长时间停止在VISA READ这个节点上。

解决的办法是使用“Bytes at Port”这个串口的属性节点,在VISA>>Serial>>advance下,也可以在VISA资源线上右键>>创建>>属性节点>>串口设置>>Bytes at Port,如下图:图3 Bytes at Port这个属性节点读取当前串口缓冲区有字节数,然后将它的输出连接到VISA READ的“读取字节数”这个输入端上即可,这样当前缓冲区中有多少个字节就读回多少个,不会有任何等待。

图4使用Bytes at Port5.在LabVIEW中使用串口目前串口的应用一般有二种类型的(以我接触到的来分类,不严格),一种是仪器控制类型的,一般是上位机发送一个指令,然后下位机作出响应,返回数据给上位机,上位机再读取出来,完成一次通信,即一问一答;另一类是被动接收形的,即下位机会一直发送数据上来。

这二种类型的串口通信在处理上会不太一样。

5.1仪器控制类型由于在仪器控制时一般都是这种一问一答的方式,所以叫它仪器控制类型。

以仪器控制为例来说一下需要注意的事项。

首先是要确认仪器选择的通信模式是串口通信模式。

现在的仪器一般都至少有二种通信模式,一种是RS232,一种是GPIB,如果仪器是设置为GPIB通信的话,RS232是不可能通信上的,所以要先确认一下,方法一般是在仪器面板上选择设置>>远程控制>>GPIB/RS232,各个仪器稍微不同,可以查仪器手册看一下。

然后就是确认串口的通信参数的配置,包括波特率、数据长度、校验方法等,有些仪器的某些参数是固定的,比如校验方法固定为奇校验,不能修改,只能在电脑上跟仪器设置为一样的。

波特率一般是可以修改的。

这些参数的配置一定要根据仪器手册上的来设置。

如果参数设置不正确,也能收到一些数据,但一般是乱码,如果收到的数据都是乱码的话,就要先检查一下串口参数设置是否正确了。

只有电脑和仪器边的串口参数完全一致时才能收到正确的数据。

接着是要注意发送指令和读回数据之间要有一定的延时,即VISA WRITE和VISA READ之间要有一定的延时,一般200毫秒即可,因为串口是底层硬件,数据从软件到串口上要一点点时间,然后仪器对指令作出响应也要一点点时间,这些时间加起来肯定比软件运行二个节点的时间要短,所以延时是一定要加的。

在调试时如果发现正常运行时不能收到数据,但高亮运行就能收到数据,就很有可能是没有加延时的原因!或者是发一个查询指令,但返回的是上一条查询指令的结果,也可能是因为没有延时或延时不够。

5.2被动接收类型被动接收形的串口通信稍微麻烦一点,由于上位机是被动接收的,上位机不知道什么时候开始下位机就已经有数据上来了,很有可能下位机发送到一半时,上位机刚好开始接收数据,这时只能接收到后面一半的数据了,所以对于这种通信,一般是采用数据帧的方式进行通信。

这种数据帧的通信方式至少由三部分数据组成:帧头、数据、帧尾(如果数据是固定长度的话,似乎帧尾也可以省掉)。

帧头是为了告诉上位机:从这以后的数据就是有用的数据了,相当于约定好的暗号,一般帧头至少会用二个以上字节,如果只用一个字节的话,万一数据中的数据跟这个帧头一样了就会误以为这个数据是帧头从而导致解析数据出错,帧尾的作用也差不多,告诉上位机从这之前的数据才是有用的数据。

但实际上一般的数据帧远不止这几个部分,还会加上一些校验字节、时间信息、帧计数器之类的东东在上面。

其中校验字节是为了检查数据在传输过程中有没有出错的,跟串口的校验位要区分清楚,校验位也是检查数据传输时有没有出错的,但由底层硬件来实现,校验方法由标准规定好,但有几种可以选择,只有一个位(Bit,只能是0或1)。

校验字节是由软件层来实现的,至少有一个字节(Byte,有8个位),而且校验方式由用户定义,非常灵活。

由于被动方式中串口的缓冲区中一直会有数据在,为了保持数据的连续性,在读取数据时跟第一种仪器控制类型不一样。

而是采取将读取的所有的串口数据都保存在移位寄存器中,在软件上处理完这些数据后再将它们从移位寄存器中删除。

由于VISA READ的输出是字符串,所以一般使用“连接字符串”这个函数将它们连接起来,然后接到循环结构中的移位寄存器中进行保存,当移位寄存器中的数据量达到一定时或满足数据处理的条件时,才停止这个循环输出读取到的数据。

一般如下图所示:图5被动接收类型中的数据接收在接收下位机发送的帧数据时,一定要先了解帧格式,这样才能正确解析出帧里面的数据来。

下面以例子来说明数据帧格式的通信。

设定通信数据帧每7个字节为一帧数据,其中以0xAC、0x96二个字节作为数据帧头,第三、四个帧头为帧计数器,最大值为0xFFFF,到达最大值后重新从0开始计数,第4、5、6三个字节是数据信息,分别代表数据的高中低位,第7位为状态标志字节,它的第一位为1时表示下位机出错,为0时表示功能正常。

相关文档
最新文档