LabVIEW是美国国家仪器公司(National Instruments,简称NI)的创新产品,它允许编程人员使用图形方式来进行编程,摒弃了艰涩难懂的代码,只需要拖动相应图形控件然后连线,进行简单的配置即可完成一个应用程序的开发。让更多的相关人员加入到编程的行列中。
虚拟仪器软件架构(VISA,Virtual Instruments Software Architecture)是对包含GPIB、VXI、PXI、串口(RS232/485)、以太网、USB和/或IEEE 1394接口的仪器系统进行配置、编程和故障排除的标准。NI-VISA是NI贯彻执行的VISA I/O标准。VISA提供了硬件与NI LabVIEW、LabWindows/CVI和Measurement Studio(用于Microsoft Visual Studio)等应用开发环境之间的编程界面。在LabVIEW中编写的VISA接口程序,当外部设备变更时,只需要更换几个程序模块即可使用,简单方便而且开发效率高。
串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。由于其开发难度相对于其他接口相对较低,且成本低受到许多工程师的青睐,对于一些速度要求不高的数据交换业物来说,串口适信是非常不错的一个选择。
本文主要介绍如何利用VISA(虚拟仪器架构,以下直接用VISA)在LabVIEW中开发串口应用程序,在开发之前请确保你的电脑安装了NI公司的LabVIEW软件(推荐使用2013版本)和VISA软件,如果需要请到http://china.ni.com/搜索下载。
1. 相关资源介绍
在LabVIEW 中利用VISA节点进行串行通信编程。为了方便用户使用,LabVIEW将这些VISA节点单独组成一个子模块,共包含8个节点,分别实现初始化串口、串口写、串口读、中断以及关闭串口等功能,具体如下图所示(在程序框图界面中右键然后依次鼠标放在相应的图标上即可得到如下图菜单,左键点击任意一个VI即可到框图界面中放置):
1.1 VISA配置串口
该VI用于配置串口传输时的参数:
VISA资源名称:指PC的串口名,例:COMl,COM2等。
错误输入:表明节点运行前发生的错误。该输入将提供标准错误输入功能。
波特率:串口速率,默认为9600bps。
数据比特:一帧信息中的位数,LabVIEW 中允许5~8位数据,默认为8。
奇偶:奇偶校验位,可选为无校验、奇校验或偶校验,默认为无校验。
停止位:一帧信息中的停止位的位数,可选为1位、1.5位或2位。
流控制:设置传输机制使用的控制类型,可选为None、XON/XOFF软件流控或RTS/CTS硬件流控,默认为None。
终止符:设置一帧数据的结束符,即当接收串口数据时,当收到终止符时,软件自动结束一帧数据接收。
这里做一点说明,对于第一次使用LabVIEW串口的开发人员,对于属性的配置最好是右键创建输入控件,这样不空易出现输入类型和输入范围上的错误。
1.2 VISA写入
该节点主要用于向串口的发送缓冲写入数据,主要的参数有“VISA资源名称”和“写入缓冲区”。“VISA资源名称”接1.1中配置好的串口VI的“VI资源名称输出”(在串口应用中使用同一串口的VI中“VISA资源名称”应该相同,且具有传导性)。“写入缓冲区”则可以直接连接字符串,这样就可以直接将该字符串写入串口发送缓冲区进行数据输出操作。VISA资源名称输出用于和其他相关VI共享VISA资源。返回数用于返回发送成功的字节数。
1.3 VISA读取
字节总数:要读取的字节数量(可以直接用“VISA串口字节数”节点的输出来一次性将数据全部读出,参见1.5)。
读取缓冲区:PC串口收到的数据。
返回数:实际读取的字节数,字节总数应大于或等于返回数,否则会丢数。
1.4 VISA关闭
该节点主要用于关闭已打开的串口,释放串口资源,以便串口被其他程序所调用,如上图所示。
1.5 VISA串口字节数
该节点用于返回串口输入缓冲区中的字节数,可以将其输出结果送给VISA读取节点的“字节总数”参数,这样可以一次性将串口输入缓冲区中的数据全部读出。
1.6 VISA串口中断
该节点用于发送指定端口上的中断。通过连线数据至VISA资源名称输入端可确定要使用的多态实例,也可手动选择实例。
1.7 VISA设置I/O缓冲区大小
该节点用于设置I/O缓冲区大小。如需设置串口缓冲区大小,须先运行VISA配置串口VI。
1.8 VISA清空I/O缓冲区
该节点用于清空由屏蔽指定的I/O缓冲区。
2. 编程
在LabVIEW 中,进行串口通信的基本步骤分为3步:
第一:串口初始化,利用ⅥSA Configure Serial Port.vi节点设定串口的端口号、波特率、停止位、校验位、数据位。
第二:读写串口,利用VISA Read节点和VISA Write节点对串口进行读写。
第三:关闭串口,停止所有读写操作。