使用NI-VISA软件控制USB设备

使用NI-VISA控制USB 设备

这一用户指南为您提供一个入门材料,旨在帮您学习如何使用NI-VISA 与USB设备进行通讯,并非学习USB 构架或USB通讯中使用的各种协议的材料。阅读本用户指南以后,只要您已经理解了设备通讯协议,您应该就能够安装USB设备,并使用NI-VISA 与该设备进行通讯。

目录:

? 1. USB 与 VISA 的背景知识

? 2. 配置 NI-VISA 来控制USB 设备

? 3. 用 NI-VISA 与USB设备进行通讯

1. USB 与VISA 的背景知识

VISA (Virtual Instrument Software Architecture) 是一个用来与各种仪器总线进行通讯的高级应用编程接口(API)。它不受平台、总线和环境的限制。换言之,与GPIB 设备进行通讯的程序,无论是在运行Windows 2000的机器上用LabVIEW开发出来的,还是在运行 Mac OS X的机器上用C语言编写的,都可以使用同一个API。

通用串行总线(USB)是一个基于信息的通讯总线。这表示PC机与USB设备通过发送指令和数据进行通讯,而这些指令和数据是通过总线以文本或二进制数据的形式发送的。每个USB设备都有各自的指令集。您可以使用NI-VISA 的读写功能向仪器发送这些指令,并读取仪器的反馈。可向仪器制造商索要仪器的有效指令清单。

NI-VISA 从3.0版开始支持USB通讯,它有两种VISA类函数 (Resource Class) ,可以控制两类USB设备:USB INSTR设备与USB RAW设备。

符合USB测试和测量类 (USBTMC)协议的USB设备可以通过使用USB INSTR类函数控制。USBTMC设备符合VISA USB INSTR类函数能够理解的协议。与USBTMC设备进行通讯不需要进行配置。与USBTMC仪器的通讯,请参看第3节。如果要了解更多有关USBTMC 规格的信息,请参看下面链接的USB应用者论坛(USB Imlementers Forum)网页。

USB RAW 仪器是指除了明确符合USBTMC 规格的仪器之外的任何USB仪器。如果您正在使用USB RAW 设备,请按照第2节的说明来配置NI-VISA 以控制您的设备。请与仪器制造商联系,以获取通讯协议与仪器所用指令集的详细资料。

如果要了解有关NI-VISA API的具体信息,请参考《NI-VISA 用户手册》与《NI-VISA程序员参考手册》。NI-VISA 中附有这两个文件,通过本指南最后的链接也可以获得这两个文件。

2.配置 NI-VISA 来控制USB设备

本节将逐步介绍如何在基于Windows的计算机上用NI-VISA 3.0来控制USB RAW设备。如果您使用的是USBTMC兼容设备,就请连接设备,然后跳到2.3节。

此时,NI-VISA 应该已经安装在您的计算机上,而您的USB设备还没有接上。此外,您也不要安装该USB设备的驱动程序。我们分三个步骤来配置您的USB设备以便用NI-VISA来对其进行控制:

1. 使用Driver Development Wizard (驱动程序开发向导) 创建INF文档。

2. 安装INF文档,并安装使用INF文档的USB设备。

3. 使用NI-VISA Interactive Control (NI-VISA互动控制工具)对设备进行测试。

本指南将以安装在 Windows XP 操作系统中的NI DAQPad-6020E型USB设备为例。由于本指南旨在说明一般USB设备的配置,因此将不会就 DAQPad-6020E的具体细节进行探讨。请记住,对于DAQPad-6020E来说,NI-DAQ是唯一受支持的驱动程序。

2.1.使用Driver Development Wizard创建INF 文档

为了使用NI-VISA,您必须先让Windows将NI-VISA作为设备的缺省驱动程序使用。在Windows 环境中,您可以通过INF文档做到这一点。NI-VISA 3.0 中包含的VISA Driver Development Wizard(DDW)将为您的USB 设备创建一个INF 文档。

1. 选择Start?Programs?National Instruments?VISA?VISA Driver Developer Wizard,打开DDW。出现图1所示的窗口。

图 1. VISA DDW 硬件总线窗口

您可以用这个向导为PXI/PCI或USB设备创建一个INF文档。由于您是在为USB设备创建驱动程序,因此选择USB,并点击Next。此时出现图2所示的VISA DDW 基本设备信息窗口。

图2. VISA DDW 基本设备信息窗口

2. 进行这一步时,您需要清楚USB仪器的USB供应商ID和产品ID。这些数字可以在您安装USB设备的时候对其进行确认,并在您想要与设备通讯的时候,寻找它的地址。依据USB 的规格,两个数字都是16位十六进制数字,并应该由设备制造商提供。

在相应栏内输入设备的供应商ID、产品ID、制造商名称和型号名称。

对于DAQPad-6020E,供应商ID 和产品ID则分别是0x3923 和0x12C0。如果您的设备不是NI DAQPad-6020E,它们则会有不同的供应商ID 和产品ID。请与设备供应商联系以获取这些信息。

然后请点击Next。出现如图3所示的输出文档属性窗口(Output Files Properties Window)。

图3. VISA DDW 输出文档属性窗口

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

2.2安装INF文档和USB设备。

在各个版本的Windows中,INF文档的安装方式各不相同。DDW 创建INF文档时,INF文档顶部的标题中会包含安装指导。因为INF文档是ASCII文本文件,所以可以通过诸如记事本之类的任何文本编辑器进行阅读。如果要了解有关安装INF文档的详细信息,就请在文本编辑器中打开您的INF文档,然后遵照文档顶部的指导行事。本指南假定您使用的是Windows XP操作系统。

1. 复制INF文档并将其放入INF文件夹。在Windows XP中,这个文件夹的位置通常是:

“C:\WINDOWS\INF”。这个文件夹可能是隐藏的,因此您也许需要将文件夹选项改成显示隐藏文件。

2. 右击C:\WINDOWS\INF文件夹中的INF文件,然后点击Install。这个过程为您的设备创建了PNF文

档。您现在就可以准备安装USB 设备了。

3. 连接USB设备。因为USB具有热拔插功能,所以Windows应该能够探测到您的USB 设备,设备接上

USB端口之后,立即会打开“添加新硬件向导”(Add New Hardware Wizard)。遵照屏幕上有关向导程序的指导行事。如果您准备为该设备选择驱动程序,就请浏览INF文件夹,并选择您使用DDW创建的INF文档。

2.3使用VISA Interactive Control测试通讯情况

1. 打开Measurement & Automation Explorer(MAX)。选择Tools?Refresh刷新界面。您的USB设备应该

如图4所示,您的USB设备出现在Devices and Interfaces栏目下面。现在您的USB设备已经安装和设置完毕,可以使用NI-VISA了。

如果您点击选择您的USB设备,“属性”窗口中就会显示设备的相关信息。使用这个窗口,您可以访问诸如制造商ID、型号代码以及设备序列号之类的信息。

图4.Measurement & Automation Explorer中显示的USB设备

2. 使用您的USB设备的VISA 仪器描述符,通过VISA与设备进行通讯。USB INSTR 设备的仪器描述符格式

是USB[主板]::制造商ID::型号代码::序列号[:: USB接口编号]::INSTR。USB RAW 设备的仪器描述符格式是USB[主板]::制造商ID::型号代码::序列号[:: USB接口编号]::RAW。

根据USBTMC的规格要求,所有 USBTMC设备都必须具备序列号。一些 USB RAW 设备可能没有序列号。如果您的设备没有序列号,NI-VISA 会为该设备自动分配一个VISA专用的序列号。该序列号的格式是NI-VISA-#,这里的 # 是一个自动生成的数字。

一些USB设备拥有多个接口。这与PCI 设备可以拥有多个功能的方式很相似。如果您的设备仅仅支持一个接口,就不必输入USB接口编号。

DAQPad-6020E 使用RAW类函数,而制造商代码与型号代码则分别为0x3923 和0x12C0。对于DAQPad-6020E,仪器描述符则是:USB0::0x3923::0x12C0::00B50DAE::RAW。

打开Measurement & Automation Explorer,以测试与该设备的通讯情况。选择Tools?NI-VISA?VISA Interactive Control,应出现与图5所示窗口相似的窗口。

图5. VISA交互控制(VISA Interactive Control)

3. VISA交互控制(VISAIC)是一个实用程序,可用来轻而易举地与任何VISA 资源进行通讯。做好使用VISA

的配置之后,您的USB设备就会被列入USB分项之中。双击您的设备,打开设备的VISA对话框。应出现如图6所示的窗口。

图6. “VISA交互控制”打开VISA 对话框

当您使用VISAIC打开VISA Session时,会自动选择“Template(模板)”表格与“Property Node (Read)”(属性节点(只读))表格。选择想要读取的属性并点击Execute,以读取此项属性。“ Current Value”(当前值)指示栏中即显示“Attribute Name”(属性名称)中指定属性的当前值。图6中,可以看到Resource Name (资源名称)的属性。

如果想要了解有关使用VISAIC的更多信息,请参考Developer Zone Tutorial: VISA Interactive Control (VISAIC)(参照文章结尾处的链接)。如果需要有关NI-VISA API的信息,请查阅NI-VISA Programmer Reference Manual and the NI-VISA User Manual。两个文件皆可以通过本文最后的链接获得。如果需要有效指令清单,请与仪器制造商联系。

3.用NI-VISA 与USB设备进行通讯。

本节将说明如何使用NI-VISA 3.0 及以上版本与您的USB设备进行通讯。前面讲过,USB设备有两类。而通讯方式就取决于设备的种类。

3.1 USB INSTR型(USBTMC)

符合“USB 测试与测量类(USBTMC)”的设备使用NI-VISA USB INSTR 类函数。它们使用488.2 标准通讯。对于这些设备,您只需以与GPIB仪器通讯同样的方式,使用“VISA 打开”、“VISA关闭”、“VISA 读取”和“VISA 写入”功能。

图7 显示了与USBTMC 设备进行通讯的LabVIEW VI 。在该例中,对USB 设备打开了一个VISA 对话框。指令被写入设备,并读取回馈信息。此例中,所发送的具体指令是询问设备的ID。请向设备制造商询问设备的指令集。结束所有通讯结束后,VISA对话框关闭。

图7. USBTMC LabVIEW结构图实例

3.2 USB RAW类

与USB RAW 类设备进行通讯要更加复杂,因为每个设备可以使用各自的通讯协议。请与设备供货商联系,以取得设备通讯协议的详细资料。

USB通过四种类型进行通讯:控制、批量、中断和同步。每种类型的管道都传输不同的信息。此外,任何数量的端点都可以是任何端点类型。可以将端点想像成通讯插槽。如果想了解USB 结构的具体详细情况,请查阅以

下链接的USB说明书。

NI-VISA 支持三种类型的USB管道:控制、批量和中断。NI-VISA探测到USB仪器时,它会对仪器进行自动扫描,寻找各种类型的最低可用端点。

VISA探测到最低可用端点后,即将该值赋于适当的VISA属性。bulk in 端点和bulk out 端点分别存储在

VI_ATTR_USB_BULK_IN_PIPE 属性和VI_ATTR_USB_BULK_OUT_PIPE 属性之中。interrupt in 端点存放在VI_ATTR_USB_INTR_IN_PIPE 属性之中。如果值为-1,则表示USB 设备不支持这种类型的管道。对于控制型管道,只有端点0才受到支持。如果您使用的是C API,则应该使用viSetAttribute功能来更改端点。在LabVIEW中,应使用“Write VISA Property(写入VISA属性)”节点。

NI-VISA有四种通过USB管道传输数据的功能。在能够使用这些功能与设备进行通讯之前,还需要使用VISA USB 属性建立通讯协议。以下是对可用功能的描述

? 使用VISA USB Control In和VISA USB Control Out 来通过控制型管道传输数据。

? 使用VISA Read和VISA Write来通过批量型管道传输数据。

? 如果您正在使用LabVIEW,则VISA还有使用中断型管道的其他功能: VISA 获得USB 中断数据。在

C API中,您可以通过访问VI_EVENT_USB_INTR事件目标的VI_ATTR_USB_RECV_INTR_SIZE属

性与VI_ATTR_USB_RECV_INTR_DATA 属性做到这一点。参见《NI-VISA 程序员参考手册》,以了解有关“VISA 事件”的更多详细资料。

更多信息:请访问https://www.360docs.net/doc/986688458.html,/visa

021-******** ? 800 820 3622 ? https://www.360docs.net/doc/986688458.html,@https://www.360docs.net/doc/986688458.html, ? https://www.360docs.net/doc/986688458.html,/china

相关文档
最新文档