基于VISA的串口通信程序设计

时间:2022-04-13 09:04:36

基于VISA的串口通信程序设计

摘要:Labview是虚拟仪器、远程测控等领域的通用编程环境,其基于VISA的编程机理得到广泛应用,VISA支持的接口种类多、功能强大、技术成熟,是目前虚拟仪器及测控编程使用最为广泛的工具之一。串行口是仪表、数据采集、远程测控应用较多的接口,也是最为成熟的接口技术,目前在数据量不大的仪表控制、数据采集、远程测控等领域普遍使用。研究基于VISA的串口通信程序,对于开发串口仪表控制程序、数据采集、远程测控应用具有较通用的参考意义。

关键词:VISA;串口;虚拟仪器;数据采集

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)06-10ppp-0c

Design of the General Purpose Serial Communication Program Based on VISA

DONG Zhi-qiang,XU Shi-Rong,YU Ya-min

(UNIT 69046,URUMQI 830002,China)

Abstract: Labview is the general IDE for Virtual Instrument(VI),its program theory on VISA is widely used,VISA supports many kind of interfaces,has much function and is perfect,it is the popular tool to program the VI and measurement.Serial port is the popular interface of Instrument,DAQ,remote measurement.it is used widely in the no much data area such as Instrument control,DAQ,remote measurement.The research of Serial program baed on VISA has the importance for programming on Instrument control,DAQ and remote measurement.

Key words: VISA; serial port; VI(Virtual Instrument); DAQ(Data Acquisition)

1 VISA简介

LabVIEW提供了功能强大的VISA库。VISA(Virtual Instrument Software Architecture)――虚拟仪器软件规范,是用于仪器编程的标准I/O函数库及其相关规范的总称。VISA库驻留于计算机系统中,完成计算机与仪器或外部装置之间的连接,用以实现对仪器或外部装置的程序控制,其实质是虚拟仪器系统标准API。VISA本身不具备编程能力,它是一个高层API,通过调用底层驱动程序来实现对仪器的编程,其层次结构如图1所示。

图1 LabVIEW程序设计层次结构图

与其他现存的I/O接口软件相比,VISA的I/O控制功能具有如下几个特点:适用于各种仪器类型(如VXI仪器、GPIB仪器、RS-232串行仪器、消息基器件、寄存器器件、存储器器件等仪器);适用于多种硬件接口类型;适用于多处理器结构或分布式网络结构;适用于多种网络机制;VISA的I/O软件库的源程序是唯一的,其与操作系统及编程语言无关,跨平台移植性好。

2 VISA库串口通讯函数

VISA串口通讯函数调用路径为:FunctionsInstrument I/O VISAVISA AdvancedInterface SpecificSerial中。(1)VISA Configure Serial Port节点。该节点主要用于串口的初始化。主要参数意义如下:VISA resource name:VISA资源名称,即串口号;baud rate:波特率,默认为9600;data bits:一帧信息的位数,LabVIEW中允许5~8位数据,默认值为8位;stop bits:一帧信息停止位位数,可为1位、1.5位或2位;Parity:奇偶校验设置。可为无校验、奇校验或偶校验;flow control:流量控制方式,硬件方式或软件方式(Xon/Xoff)。(2)VISA Read节点。读串口数据子VI,VISA串口通信主要节点之一,用于将串口中的数据读出,然后利用LabVIEW的强大数据处理功能对其进行分析处理。主要参数意义如下:VISA resource name:串口号;byte count:用于设置所要读的字符数。(3) VISA Write节点。写数据到串口子VI,VISA串口通信主要节点之一,用于将数据写入串口。参数类似于VISA Read子VI。(4)VISA Close节点。关闭串口。(5)还有VISA Serial Break、VISA Bytes at Serial Port、VISA Set I/O Buffer Size、VISA Flush I/O Buffer等几个串口通信辅助子VI,结合串口通信主VI,共同完成串口通信任务,其功能分述于下表:

表1 VISA串口通信子VI功能描述表

3 VISA串口通讯编程基本流程

在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如图2。

图2 基于VISA串口通信编程基本流程图

首先需要调用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指定串口之间的会话。

4 数值型数据的处理方法

4.1 如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISA Write的write buffer的显示属性为Hex Display,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。

4.2 数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋给VISA Write发送。将这些数据构成一个数组,用Byte Array To String进行转换,转换的结果就是对应数组数值的字符串,可以提交VISA Write发送。或者使用Type Cast也可以实现同样的功能。

图3 串口发送数值型数据处理方法

图4 串口接收数值型数据处理方法

5 字符串型数据的处理方法

通常传输数据具有一定格式或协议,一个完整的数据帧可能包括起始段、数据段、校验段,而每一段有几个部分组成,几个部分的类型和长度不尽相同,数值型、字符型或布尔型,单字节或多字节。在处理方法上,采用统一的字符形式处理数据,字符是LabVIEW里最方便的数据类型。

经过打包的字符数据经过串口发送时需要进行必要的转换,否则传输将出错。如打包过后需要发送的的字符串为:34 12 56 78 94(空格为了区分),如果直接将其赋给VISA Write发送,串口上的数据是:33 34 31 32 35 36 37 38 39 34,每个字符前增加一个字符‘3’。数据接收时,从串口接收到的数据是16进制的ASCII码,要转换成对应的数值型数据,使用String To Byte Array或者Type Cast。正确的转换程序如下。

图5 字符串型数据处理方法

6 串口通信程序实现及效果

以上分析了基于VISA串口通信程序设计的基础知识和使用中需要注意的数据转换问题,在此基础上,利用VISA,配合适当的Labview控制结构,可以编制出界面友好、功能完善、通用性强的串口通信终端程序,试用结果表明,该软件界面简洁、性能可靠、通用性强,既可以独立使用,也可以作为子VI为其他应用程序调用,其程序主要结构及运行软件界面如下图所示:

图6 串口设置及通信参数设置程序简图

图7 数据接收、发送部分程序简图

图8 软件运行效果图

参考文献:

[1]L abVIEW8.2 User Manual.USA:National Instruments Corporation,2006.

[2]杨乐平.LabVIEW程序设计与应用.电子工业出版社,2001.

[3]刘君华.虚拟仪器图形化编程语言LabVIEW教程[M].西安:电子科技大学出版社,2001.

[4]邓华.MATLAB 通信仿真及应用[M].人民邮电出版社 2000

[5]楼顺天,陈生潭,雷虎民.MATLAB 5.x程序设计语言[M].西安:电子科技大学出版社,2000

收稿日期:2008-01-12

作者简介:董智强(1974-),学士,1997年毕业于理工大学通信工程学院,现主要从事通信装备维修工作。

上一篇:基于高职院校校园网的研究与实现 下一篇:一种基于P2P的视频共享系统的研究与实现