LabVIEW与USB的直接数据通信

2011-05-27 18:02:56来源: 互联网

引 言

    LabVIEW是一种基于图形程序的虚拟仪器编程语言,在测试与测量、数据采集、仪器控制、数字信号分析、工厂自动化等领域获得了广泛的应用。LabVIEW程序采用方框图编程,具有友好的人机界面,在前面板中有用于模拟真实仪器面板的控件可供调用,可用于设置输入数值、观察输出值以及实现图表、文本等显示。实现LabVIEW对数据的采集和处理,传统的是采用数据采集卡,但是这些数据采集设备存在安装不便、价格昂贵、受计算机插槽数量、地址、中断资源的限制,可扩展性差,同时在一些电磁干扰性强的测试现场,可能无法专门对其做电磁屏蔽,从而导致采集的数据失真。在LabVIEW下使用USB总线,可以同样实现数据采集,并且弥补了采集卡的不足。

    传统的用LabVIEW读写USB设备的方法是:先用VC++或Delphi编写动态链接库DLL文件,在DLL中通过调用WIN API函数读写USB设备的数据,并存在缓冲区中,在LabVIEW中通过对DLL文件的调用提取缓冲区中的数据。介绍了在LabVIEW下,通过调用NI-VISA子程序控件,实现与USB设备的直接通信,避免了二次编程的麻烦和数据的中转。

2 USB底层驱动程序设计

    USB底层驱动开发工具有Windows DDK和第三方开发工具,如Driver studio和 Win driver等,但是使用这些工具开发驱动难度大、效率底。在这里,介绍如何借用LabVIEW的NI-VISA子程序控件作为USB的底层驱动。

    VISA(Virtual Instrument Software Architecture,ni.corn/visa)是一个用来与各种仪器总线进行通讯的高级应用编程接口(API)。他不受平台、总线和环境的限制。通用串行总线(USB)是一个基于信息的通讯总线。这表示PC机与USB设备通过发送指令和数据进行通讯,而这些指令和数据是通过总线以文本或二进制数据的形式发送的。每个USB设备都有各自的指令集。可以使用NI-VISA的读写功能向仪器发送这些指令,并读取仪器的反馈。

    NI-VISA从3.0版开始支持USB通讯,他有2种VISA类函数(Resource Class),可以控制2类USB设备:USB INSTR设备与USB RAW设备。符合USB测试和测量类(USBTMC)协议的USB设备可以通过使用USB INSTR类函数控制,他们使用488.2标准通讯。对于这些设备,只需以与GPIB仪器通讯同样的方式,使用"VISA Open","VISA Close","VISA Read"和"VISAWrite"功能。USBTMC设备符合VISA USB INSTR类函数能够理解的协议。USBTMC设备相对来说控制较为复杂,因为每个设备可以使用各自的通信协议,而这些通信协议一般都是由设备的生产厂家自定的。

    为了使用NI-VISA,必须先让Windows将NI-VI-SA作为设备的缺省驱动程序使用。在Windows环境中,可以通过INF文档做到这一点。INF文件是系统硬件设备配置文件,USB驱动程序通过INF文件中的PID(产品识别号)和VID(厂商识别号)识别USB设备。NI-VISA 3.0中包含的VISA Driver Development Wizard(DDW)可以为USB设备创建一个INF文档。下面简单介绍创建INF文档的过程:

    (1)在安装了NI-VISA后,启动VISA Driver Devel-opment Wizard程序,出现了为PXI/PCI或USB设备创建一个INF文档的向导,选择USB设备,点NEXT,出现VI-SA DDW基本设备信息窗口。

    (2)进行这一步时,需要清楚USB的PID和VID。这些数字可以在安装USB设备的时候对其进行确认,并在想要与设备通讯的时候,寻找他的地址。依据USB的规格,两个数字都是16位16进制数字,并应该由设备制造商提供。例如在后面介绍基于USB的虚拟示波器用到USB接口芯片PDIUSBD12的PID和VID分别是0x0471和0x0666;这一步设置完成后,点击NEXT,进行最后一步的设置。

    (3)USB Instrument Prefix(USB仪器前缀)只是一个描述符,可以用他来识别本设备所用的相关文档。在USB Instrument Prefix中输入相应信息,并在"output file directory"中选择存放这些文档的目录,然后点击Finish。INF文档就被建好并保存至指定的位置。

    这时候,只要复制生成的INF文件夹到系统盘Win-dows文件夹下INF文件夹,点击右键,安装即可。这时,插上USB设备,Windows系统就能探测到,并根据INF硬件配置文件选择NI-VISA作为底层驱动程序。在Lab-VIEW中,只需调用NI-VISA的相关控件,即可实现对USB设备的读写操作。

3 LabVIEW驱动程序编写

    强大、灵活的仪器控制功能是LabVIEW区别于其他编程语言的主要特点。LabVIEW不仅提供数百种不同接口测试仪器的驱动程序,而且还支持VISA,SCPI和IVI等最新的程控软件标准,为用户设计开发先进的测试系统提供了软件支持。VISA是用于仪器编程的标准I/O函数库及相关规范的总称,一般称之为VISA库。VISA库驻留于计算机系统中,是计算机与仪器之间的软件层连接,用以实现对仪器的程控。对软件开发者来说,他是一个可调用的操作函数集,他本身不提供仪器编程能力,只是一个高层API(应用程序接口),通过调用底层的驱动程序来控制仪器设备。

    NI-VISA支持3种类型的USB管道:控制、批量和中断。NI-VISA探测到USB仪器时,他会对仪器进行自动扫描,寻找各种类型的最低可用端点。如使用NI-VI-SA中的VISA USB Control In和VISA USB Control Out来通过控制型管道传输数据,使用VISA Read和VISAWrite来通过批量型管道传输数据。

    作为仪器I/O函数库,VISA编程与传统的I/O软件编程基本相同,主要通过设备I/O端口的读写操作和属性控制,实现与仪器的命令与数据交换。LabVIEW中所有的VISA节点均在Function模板→All Functions子模板→Instrument I/O子模板→VISA子模板中。在这里,只用到了VISA Open,VISA Close,VISA Write和VISARead四个节点即可实现和USB设备的双向通信。当完成对USB设备的INF硬件配置后,就可以用VISA Open节点打开该资源,建立计算机与这些VISA资源的通信管道;与VISA Open节点相反,VISA Close节点用于将打开的VISA资源关闭;VISA Write节点的功能是将writebuffer端口输入字符串数据发送到仪器中;VISA Read节点的功能是从仪器中读出数据;

[1] [2]

关键字:LabVIEW  USB  直接数据通信

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/wltx/2011/0527/article_5927.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LabVIEW
USB
直接数据通信

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved