在LabVIEW中使用VISAVISA是仪器编程的标准I/OAPI。VISA的多种用途VISA可控制GPIB、串口、USB、以太网、PXI或VXI仪器,并根据使用仪器的类型调用相应的驱动程序,用户无需学习各种仪器的通信协议。VISA独立于操作系统、总线和编程环境。换言之,无论使用何种设备、操作系统和编程语言,均使用相同的API。开始使用VISA之前,应确保选择合适的仪器控制方法。GPIB、串口、USB、以太网和某些VXI仪器使用基于消息的通信方式。对基于消息的仪器进行编程,使用的是高层的ASCII字符串。仪器使用本地处理器解析命令字符串,设置合适的寄存器位,进行用户期望的操作。SCPI(可编程仪器标准命令)是用于仪器编程的ASCII命令字符串的标准。相似的仪器通常使用相似的命令。用户只需学习一组命令,而无需学习各个仪器生产厂商各种仪器的不同命令消息。最常用的基于消息的函数是:VISA读取、VISA写入、VISA置触发有效、VISA清空和VISA读取STB。PXI和许多VXI仪器使用基于寄存器的通信方式。对基于寄存器的仪器进行编程,使用的是将直接写入仪器控制寄存器的底层二进制信息。该通信方式的优点是速度快,因为仪器不需解析命令字符串,并将信息转换为寄存器层次的程序。基于寄存器的仪器实际上是在直接硬件操作层上进行通信。最常用的基于寄存器的函数是:VISA输入、VISA输出、VISA转入和VISA转出LabVIEWVISA与串口通讯的编程实现(2013-05-2511:25:52)VISA是虚拟仪器软件体系结构的缩写(即VirtualInstrumentsSoftwareArchitecture),实质上是一个I/O口软件库及其规范的总称。VISA是应用于仪器编程的标准I/0应用程序接口,是工业界通用的仪器驱动器标准API(应用程序接口),采用面向对象编程,具有很好的兼容性、扩展性和独立性。用户可用一个API控制包括VXI、GPIB及串口仪器在内的不同种类的仪器。它还支持多平台工作、多接口控制,是一个多类型的函数库。在LabVIEW中编写的VISA接口程序,当外部设备变更时,只需要更换几个程序模块即可使用,简单方便而且开发效率高。在LabVIEW中利用VISA节点进行串行通信编程。为了方便用户使用,LabVIEW将这些VISA节点单独组成一个子模块,共包含8个节点,分别实现初始化串口、串口写、串口读、中断以及关闭串口等功能。一、基本步骤在LabVIEW中,进行串口通信的基本步骤分为3步:第一:串口初始化,利用ⅥSAConfigureSerialPort.vi【VISA配置串口】节点设定串口的端口号、波特率、停止位、校验位、数据位。第二:读写串口,利用VISARead节点和VISAWrite节点对串口进行读写。第三:关闭串口,停止所有读写操作。二、主要节点介绍下面介绍一下VISA串口的主要节点及其功能:1、串口配置该节点主要用于串口的初始化,如图1所示。图1串口配置节点VISA资源名称:指PC的串口名,例:COMl,COM2等。波特率:串口速率,默认为9600bps。数据比特:一帧信息中的位数,LabVIEW中允许5~8位数据,默认为8。奇偶:奇偶校验位,可选为无校验、奇校验或偶校验,默认为无校验。停止位:一帧信息中的停止位的位数,可选为1位、1.5位或2位。流控制:设置传输机制使用的控制类型,可选为None、XON/XOFF软件流控或RTS/CTS硬件流控,默认为None。终止符:设置一帧数据的结束符,即当接收串口数据时,当收到终止符时,软件自动结束一帧数据接收。特别需要注意的是超时(TIMEOUT)和结束符号两个参数.TIMEOUT默认的10秒,结束符号默认是使能状态,默认的结束符是0X0A(\n),另外,回车0x0D(\r)也经常做为做为结束符号2、串口写入【从写缓冲区中写数据至visa资源名称指定的串口】该节点主要用于写入串口数据,如图2所示。图2串口写入节点写入缓冲区:串口发送的内容。3、串口读取【从visa资源名称指定的串口中读数据至读缓冲区】该节点主要用于读取串口中的数据,如图3所示。图3串口读取节点字节总数:要读取的字节数量。读取缓冲区:PC串口收到的数据。返回数:实际读取的字节数,字节总数应大于或等于返回数,否则会丢数。4、串口关闭该节点主要用于关闭已打开的串口,释放串口资源,以便串口被其他程序所调用,如图4所示。图4串口关闭节点三、典型串口程序框图按照串口编程的3个基本步骤,图5和图6给出了两个典型的串口读写程序框图。图5为读取的字节数为固定值,图中为4个字节,如果串口中数据字节数目不等于4个字节则会出错。图6则是先判断出串口中数据的字节数目,然后将其全部读取出来。相对而言,图6的通用性更好,但是出错的概率也会增大,因为不知道串口发来的数据是否与我们所需要的数据的字节数相等。图5典型串口读写程序框图1图6典型串口读写程序框图2参考文献:文献1:基于LabVIEW的串口通信应用(李晴)文献2:串口通信编辑串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。目录1定义2原理1定义串口通信程序框图串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口是计算机上一种非常通用的设备通信协议。大多数计算机(不包括笔记本电脑)包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。[1]2原理串行通信串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的位的个数。例如300波特表示每秒钟发送300个位。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。[2]c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。[1]串行通信是工业现场仪器或设备常用的通信方式,它是将一条信号的各位数据按顺序逐位传送。计算机串行通信(简称串口)采用RS232协议,允许一个发送设备连接到一个接收设备以传送数据,最大速率为115200bps。计算机串行口采用Intel8250异步串行通信组件构成,通常以COM1~COM4来表示。1.LabView串口节点LabView中提供了已封装好的串口通信节点,它们位于函数-数据通信-协议-串口。这里主要介绍程序中使用到的串口配置、串口读取、串口写入和串口关闭,其他串口相关的节点使用方法查询LabView帮助。串口配置在进行串口通信时,首先要对串口进行初始化和配置。这可以由VISA配置串口节点来完成,串口配置节点如下图所示。使用该节点可以设置串口的VISA资源名称、波特率、数据位、超时时间、终止符以及流控制等参数。VISA资源名称控件用于规定对VISA会话句柄开放的资源,并维持会话句柄和类。VISA会话句柄是VISA使用的唯一逻辑标识符,用于与资源进行通信。VISA会话句柄由VISA资源名称输入控件保持,用户不可见。VISA资源名称输出是VISA函数中输出的VISA资源名称的副本。通过将资源名称输出或输入至函数和VI,并链接函数和VI,从而简化数据流编程。这与文件I/O函数使用的文件引用句柄输出相似。【【【【句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。1概念句柄的由来[1]windows之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,简而言之数据的地址需要变动,变动以后就需要有人来记录管理变动,(就好像户籍管理一样),因此系统用句柄来记载数据地址的变更。数据对象加载进入内存中之后即获得了地址,但是这个地址并不是固定的,(至于为什么以及什么情况下变动具体需要大家研究虚拟地址的原理与机制我这里只提我确定知道的例子)数据对象会根据需要在内存与硬盘之间游弋移动(例如不常用的数据会为常用数据让出其占用的内存空间进而被淘汰进硬盘中的虚拟内存之中以优化配置整体系统的资源进而提升效率性能),因此其物理地址总是变动的,那么作为管理者则必须对管理对象所发生的变化了如指掌才行,因此系统为进程分配固定的地址(句柄)来存储进程下的数据对象变化后的地址也就是当前的地址,其实设计机制很简单:系统的某个部门移动了对象的地址后,同时上报给句柄所属部门管理者,管理者将改动写入句柄即可。该数据被重新起用时去其所属句柄内按内容存取即可。句柄,英文:HANDLE,在Windows编程中是一个很重要的概念,在许多地方都扮演着重要的角色。