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与通信技术实现数据传输与网络通信随着科技的不断发展,数据传输与网络通信在现代社会中起着至关重要的作用。

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)作为一种基于图形化编程的开发环境,已经成为许多工程领域中的首选工具。

LabVIEW与通信技术的结合,为实现高效的数据传输和稳定的网络通信提供了一种可行的解决方案。

一、LabVIEW在数据传输中的应用在大规模的数据传输过程中,快速而可靠地传输数据是至关重要的。

LabVIEW提供了丰富的功能和工具,可以帮助用户轻松实现数据传输。

以下是LabVIEW在数据传输中的几个主要应用:1. 串口通信:通过串口通信,LabVIEW可以与各种设备进行连接,并实现数据的相互传输。

通过LabVIEW的串口通信模块,用户可以方便地编写程序,实现与串口设备的数据交互。

2. 数据采集:LabVIEW作为一种虚拟仪器工作环境,可以通过各种传感器和测量设备,对实时数据进行采集和监控。

LabVIEW提供了丰富的数据采集工具和函数库,可以帮助用户完成数据采集的任务。

3. 数据处理:通过LabVIEW强大的图形化编程能力,用户可以对采集到的数据进行处理和分析。

LabVIEW提供了多种数学和信号处理函数,可以帮助用户完成各种数据处理任务。

4. 数据存储:LabVIEW可以将采集到的数据保存在本地或者远程的数据库中,以便后续的分析和处理。

LabVIEW提供了与各种数据库系统集成的功能,可以方便地将数据存储到数据库中。

二、LabVIEW在网络通信中的应用随着互联网的普及和发展,网络通信已经成为人们日常生活中不可或缺的一部分。

LabVIEW通过与各种通信协议的集成,为实现稳定快速的网络通信提供了强大的支持。

以下是LabVIEW在网络通信中的几个主要应用:1. TCP/IP通信:LabVIEW可以通过TCP/IP协议与其他设备或者远程服务器进行通信。

使用LabVIEW进行串口通信

使用LabVIEW进行串口通信

使用LabVIEW进行串口通信LabVIEW是一种流行的集成开发环境(IDE),用于编写和执行控制、测量和数据采集应用程序。

它可以非常方便地与硬件设备进行通信,其中包括通过串口进行通信。

本文将介绍如何使用LabVIEW进行串口通信。

一、LabVIEW介绍LabVIEW是一款图形化编程语言,以可视化编程为特点。

用户可以使用LabVIEW快速开发有效的控制和数据采集系统,而无需深入理解底层的编程语言。

二、串口通信原理串口是一种用于将数据传输到计算机或其他设备的接口。

在串口通信中,数据以字节的形式通过传输线路进行传输,其中利用的是一对称为TX和RX的引脚。

发送数据时,数据通过TX引脚发送到接收方;接收数据时,数据则通过RX引脚接收。

三、配置串口通信在LabVIEW中,可以使用VISA(Virtual Instrument Software Architecture)函数库来实现串口通信。

通过配置相关参数,可以指定通信的波特率、数据位数、校验位等。

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

然后,在Front Panel界面中,双击空白处,打开Block Diagram界面。

在Block Diagram界面中,拖拽VISA Serial和VISA Close VIs到界面上。

接下来,双击VISA Serial VIs,打开参数设置面板。

在面板上,可以设置串口号、波特率、数据位数、校验位等。

根据具体需求进行配置。

四、数据的发送和接收在LabVIEW中,使用串口进行数据发送和接收非常简单。

可以使用VISA Write和VISA Read VIs来分别执行发送和接收操作。

在Block Diagram界面中,从VISA Serial VIs中拖拽VISA Write VI,将其连接到VISA Serial VIs和VISA Close VIs之间。

然后,从VISA Serial VIs中拖拽VISA Read VI,将其连接到VISA Write VI的右侧。

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串口通信开发实例

串口通信的基本概念串口通信的基本概念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串口通信开发实例(值得拥有)

串口通信的基本概念串口通信的基本概念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与C51单片机实现串口通信

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

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

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

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

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

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

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

仅供参阅!。

LabVIEW中的串口通信和硬件连接

LabVIEW中的串口通信和硬件连接

LabVIEW中的串口通信和硬件连接概述:LabVIEW是一款功能强大的图形化编程软件,广泛用于各种科学实验和工程应用中。

本文将讨论LabVIEW中的串口通信和硬件连接,包括串口通信的原理、LabVIEW中串口通信的配置方法以及如何通过硬件连接实现串口通信。

一、串口通信原理串口通信是一种通过串行数据传输来实现设备之间通信的方式。

它将数据按照位的顺序逐位传输,并利用起始位、停止位、数据位和校验位等信息来保证数据的可靠传输。

常见的串口通信协议有RS232、RS485等。

二、LabVIEW中的串口通信配置在LabVIEW中,使用VISA(Virtual Instrument Software Architecture)库来实现串口通信。

下面是配置串口通信的步骤:1. 打开LabVIEW软件,创建一个新的VI(Virtual Instrument)。

2. 在VI中添加VISA组件,可在工具栏中选择"Functions",然后在弹出的菜单中选择"Measurement I/O",再选择"VISA"。

3. 在VISA组件中,选择"Configurations",然后点击鼠标右键,选择"Create New VISA Resource"。

4. 在弹出的对话框中,选择要使用的串口资源,如COM1。

点击"OK"完成串口资源的配置。

5. 在VISA组件中选择"VISA Resource Name",将刚才配置的串口资源名称输入。

6. 现在可以通过VISA组件的其他函数实现对串口的读写操作,如"VISA Read"和"VISA Write"。

三、通过硬件连接实现串口通信除了LabVIEW软件中的配置,还需要通过硬件连接来实现串口通信。

一般情况下,需要使用串口转USB转接器、串口线等硬件设备来连接计算机和目标设备。

LabVIEW串口通信浮点小数转四个字节和数据打包

LabVIEW串口通信浮点小数转四个字节和数据打包

LabVIEW串口通信浮点小数转四个字节和数据打包LabVIEW编程的虚拟仪器,作为PC与单片机的上位机,十分直观方便。

LabVIEW中控制串口使用VISA十分方便。

串口通信都是发送的一个一个字节,字节中包含需要的信息,有些需要多个字节的组合才能传递一个完整的信息。

一般的数据通信都是通过数据包来传递信息的,现在我们要用LabVIEW向单片机发送单精度浮点小数。

现在遇到一些问题:1.串口发送的都是字节,怎样把浮点小数转换成字节?bVIEW中VISA串口的写入传送的字符串,如果直接发字符串,单片机得到是字符的ASCII码,单片机无法解析成需要的浮点小数。

如何把字符串转换成相应的字节?3.数据一直向串口传输,为便于单片机解析出想要的数据,如何进行打包?问题1:浮点小数在计算机中的存储遵循ieee754协议,实际上一般情况下,各种仪器发送的数据都是按照ieee754协议转换成的字节数据包。

我们传递浮点小数,可以按照ieee754协议转换成字节数组。

例如单精度浮点小数8.25转换成字节数组用十六进制表示为41 04 00 00,为四个字节。

那么如何通过LabVIEW实现呢,我这儿有个程序利用强制转换来实现,不知是哪位大神写的,反正是十分方便、有效,确实很NB。

因为关于强制转换,LabVIEW帮助和网上根本查不到资料,尤其是其上端的连线--类型,根本不知道连接什么量。

程序框图主要利用强制转换和数据拆分来实现ieee754协议转换为四个字符串。

单精度数字SGL(单精度浮点型)类型,经过强制转换,变成I32(32位长整形)类型,再经过两次拆分,得到四个U8(无符号字节,8位整型)类型的数据,再经过数值至十六进制字符串转换,字符宽度为2,得到十六进制整型字符串,再将4个字符连接起来。

8.25转换得到41040000。

前面板如下:问题2:问题1解决了,把单精度浮点小数转换为四个字节,并连接起来。

但是当我们将它们发送到串口,在串口调试助手上用十六进制显示,发现原来我们发送的是它们的ASCII码。

在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串口通信详解

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串口基础 串口接收

LabVIEW串口基础  串口接收

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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中的串口通信协议示例与分析

标签:虚拟仪器labview中的串口通信协议示例与分析变频器与个人电脑使用RS-232/RS-485 串行总线连接,如下所示:在通讯操作中,通过个人电脑以命令方式控制仪器。

通讯数据格式:l 起始位: 1 位l 数据位: 8 位l 奇偶位:无l 停止位: 1 位应答及命令格式:l 命令模式::-数据头,只有以::开头的数据包才认为有效。

AD -设备号,当前通讯的设备ID。

?-指明该数据是PC发出的指令。

RI -响应时间,从PC发出命令到仪器应答的时间。

SC -和检验码,等于图中“和校验范围”所示各位相加。

l 应答模式# -指明该数据是仪器发回的应答数据。

其它同上。

l 故障模式% -指明该数据是仪器发回的故障数据。

其它同上。

协议说明:无论是控制仪器还是查看仪器数据都需要PC发出相应的命令;只要PC发出命令(前提是与仪器正常通讯),仪器都会返回数据(应答或故障)。

使用LabVIEW编写通信模块:1. 主要节点:Functions->Instrument I/O->VISA Resource Name Constant, Functions->Instrument I/O->Serial->VISA Config Serail Port, VISA Read, VISA Write, VISA Close2. 串口设置:根据仪器说明设置如波特率等等串口参数。

超时设置根据上述RI。

3. 写串口指令:根据上述“命令模式”的格式包装命令数据,和校验由“和校验范围”中数位相加而得,所以之前应该写一子VI用来计算和校验。

建议使用以下变量来包装数据:l prefix:前缀,这里是::l devID:设备号l type:通讯类型(这里是?),可以与RI合并l cmdNum:命令号l cmdValue:命令号对应的命令值l sumVerify:和校验码l end:结束字符注意:一般协议要求“命令内容”满足一定的位数,所以应该做一个子VI,专门在那些数位不够的命令前补足空格或0。

LabVIEW串口通信接收四个字节转浮点小数和数据解包

LabVIEW串口通信接收四个字节转浮点小数和数据解包

LabVIEW串口通信接收四个字节转浮点小数和数据解包
--smile跃日少年LabVIEW编程的虚拟仪器,作为PC与单片机的上位机,十分直观方便。

LabVIEW中控制串口使用VISA十分方便。

串口通信都是发送的一个一个字节,字节中包含需要的信息,有些需要多个字节的组合才能传递一个完整的信息。

一般的数据通信都是通过数据包来传递信息的,现在我们要用LabVIEW从单片机接收单精度浮点小数。

我在《LabVIEW串口通信浮点小数转四个字节和数据打包》一文中详细介绍了浮点小数如何转化为四个字节字符串,把字节字符串从常规显示转化为十六进制显示,并进行数据的简单打包,可以形成完整的数据帧。

本文主要解决的问题是前一文章的逆过程。

单片机通过串口不断发送一帧一帧的数据帧,我们要对它进行数据解包,转换为浮点小数,并显示。

第一步:
将接收到的十六进制字节数组转化为正常显示的字符串数组,便于下一步拆分。

十六进制显示的字符串,强制转换为正常显示。

第二步:
进行数据拆分,将帧头AC96和帧尾0D去掉,得到四个字节数组。

将第一步得到的正常显示的字符串利用“搜索/拆分字符串”,将帧头帧尾去掉。

第三步:
将得到的字符串数组转换为浮点小数。

输入为第二步得到的字符串数组,输出为浮点小数。

By smile跃日少年。

LabVIEW串口通信

LabVIEW串口通信

LabVIEW串口通信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根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。

教你如何使用Labview与单片机通信(串口)

教你如何使用Labview与单片机通信(串口)
– 284 –
第 13 章 LabVIEW 串口通信程序设计
环结构的条件端子 设置为“真时停止(Stop if True)” ,则不需要添加非(Not)函数。 (11)添加两个条件结构:编程(Programming)→结构(Structures)→ 条件结构(Case
Structure)。添加理由:发送字符时,需要单击按钮“发送字符”,因此需要判断是否单击了 发送按钮;接收数据时,需要判断串口接收缓冲区的数据个数是否不为 0。
(2)添加 4 个数值常量:编程(Programming)→数值(Numeric)→ 数值常量(数值常量 (Numeric Constant),值分别为 9600(波特率)、8(数据位)、0(校验位,无)、1(停止位)。
(3)添加两个关闭串口函数:编程(Programming)→仪器 I/O(Instrument I/O)→串口 (Serial)→VISA 关闭(VISA Close)。
(2)将数值常量 9600、8、0、1 分别与串口配置(VISA Configure Serial Port)函数的输 入端口波特率(baud rate)、数据比特(data bits)、奇偶(parity)、停止位(stop bits)相连。
(3)将数值常量(值为 500)与等待下一个整数倍毫秒(Wait Until Next ms Multiple)函 数的输入端口毫秒倍数(millisecond multiple)相连。
第 13 章 LabVIEW串口通信程序设计
以 PC 作为上位机,以调制解调器(Modem)、串行打印机、各种监控模块、PLC、摄像 头云台、数控机床、单片机及智能设备等作为下位机广泛应用于测控领域。本章举几个典型 实例,详细介绍利用 LabVIEW 实现 PC 与各种下位机设备串口通信的程序设计方法。

labview与单片机串口通信

labview与单片机串口通信

串口,VISA和MSComm控件,与单片机通信visa编写串口程序时是不是必须要安装MSComm控件?首先是labview有自带的串口资源,即visa控件,不需要安装MSComm控件。

MSComm控件也可以被labview调用来实现对串口的编程。

但是,visa控件的图标在安装labview之后虽然在控件库里可以显示但是不能用,必须安装visa 驱动,这个驱动可以在官网下载。

win7 winvista的系统和低版本的labview最好安装最新的visa驱动,不然可能会出现错误。

其次我用labview做的上位机,但是用的笔记本没有串口,这时候,用一条 usb转串口线(安装合适的驱动)直接虚拟串口,visa可以对这个虚拟串口操作。

最后,labview和单片机通信,由于labview的visa控件只可对字符写出或者读上来的显示为ascii字符,而单片机的通信协议的命令帧和数据帧可能是由十六进制定义的,最开始的想法是,将输入数值型数据(十进制的)转成为十六进制数,再将此十六进制转为相对应的ascii码(网上也有相应的labview函数),最后将ascii码下传给单片机;一个简单的办法:---------------------字符型的数据(输入字符串,输出字符串,常量字符等等)的属性里有一个选项,将显示样式由正常改为十六进制显示即可,这时就可以直接输入十六进制了。

以下使用NI-VISA与USB设备eZ430-RF2500进行通信,是在使用LabVIEW2010和NI-VISA503full的开发环境通过的。

1、USB与VISA背景VISA是一个高级API用来与仪器控制总线进行通信。

它是平台独立、总线独立、环境独立的。

USB是一个基于消息的通信总线。

这意味着PC和USB设备通过在总线上以文本或二进制数据格式发送指令和数据进行通信。

每个USB设备都有自己的指令集。

可以使用NI-VISA读函数与写函数,将这些指令发送到仪器上,并从这些仪器上读取响应。

关于rs485以及labview讲解

关于rs485以及labview讲解
四,RS485总线
在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。RS-485 采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵 敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。 市场上一般 RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须 由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用 RS-485 可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。
二,RS485接口
RS485接口组成的半双工网络,一般是两线制(以前有四线制接法,只能实现点 对点的通信方式,现很少采用),多采用屏蔽双绞线传输。这种接线方式为总线式拓 朴结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从 通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地 用一对双绞线将各个接口的“A”、“B”端连接起来。【RS485接口连接器采用DB-9 的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口 RS485采用DB-9(针)。】
字节总数:要读取的字节数量。
读取缓冲区:PC串口收到的数据。
返回数:实际读取的字节数,字 节总数应大于或等于返回数,否则会 丢 数。
采用LABVIEW实现串口通信
• 串口通讯程序框图示例
上位机编写——前面板
前面板的设计过程:
前面板的设计过程:
前面板的设计过程:
上位机编写——程序框图
关于RS232以及RS485
采用LABVIEW实现串口通信
• 2、串口写入【从写缓冲区中写数据至visa资源名称指定的串口】
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1.串口扩展的问题: (2)2.串口功能的确认: (2)3.串口线的检查: (3)4.串口参数设置: (4)5.在LabVIEW中使用串口 (5)5.2被动接收类型 (6)6.串口数据类型的转换 (9)6.1LabVIEW从串口接收数据 (9)① (9)② (10)6.2使用LabVIEW发送数据 (10)① (10)② (10)7.串口问题汇总: (11)7.1串口资源被占用: (11)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脚短接起来,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)。

相关文档
最新文档