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
直接数据通信

小广播

独家专题更多

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