论文部分内容阅读
摘要: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所示。
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也可以实现同样的功能。
图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。正确的转换程序如下。
图6 串口设置及通信参数设置程序简图
图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年毕业于解放军理工大学通信工程学院,现主要从事通信装备维修工作。
关键词: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所示。
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也可以实现同样的功能。
图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。正确的转换程序如下。
图6 串口设置及通信参数设置程序简图
图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年毕业于解放军理工大学通信工程学院,现主要从事通信装备维修工作。