搜档网
当前位置:搜档网 › USB仪器控制教程

USB仪器控制教程

USB和VISA的背景

VISA是一款可与仪器总线通信的高级应用程序接口(API)。 VISA***于平台、总线和环境。换言之,无论是在运行Windows 2000操作系统的计算机上借助LabVIEW创建与USB设备通信的程序,还是在运行Mac OS X操作系统的计算机上借助C创建与GPIB设备通信的程序,均可使用相同的API。

通用序列总线(USB)是一款基于消息的通信总线。这表示:PC和USB设备通过在总线上发送文本或二进制数据格式的指令和数据,实现通信。每款USB设备都有着各自的指令集。您可通过“NI-VISA读写”函数将这些指令发送给仪器并从仪器上读取响应。您可以和仪器制造商确认,获得关于自身仪器的有效指令列表。

NI-VISA自3.0版起,支持USB通信。有2种类型的VISA资源参与支持: USB INSTR和USB RAW。

USB INSTR资源类型用于符合“USB测试和测量类型(USBTMC)”协议的USB设备。 USBTMC 设备符合VISA USB INSTR资源类型可以理解的一项协议。您无需配置即可实现与USBTMC 设备的通信。若您想了解和USBTMC仪器通信的内容,请参阅第3节。更多关于USBTMC规范的信息,请参阅以下“USB实施者论坛网”的页面链接。

USB RAW仪器是任何不符合USBTMC专用规范的USB仪器。若您正在使用USB RAW设备,可根据第2节的指南,配置NI-VISA并控制自身设备。若您想详细了解自身设备的通信协议和指令集,请与仪器制造商联系。

关于NI-VISA API的详细信息,请参阅NI-VISA帮助。您可在NI-VISA或本教程结尾的链接中,查取该文件。

通过配置NI-VISA, 控制您的USB设备

本节概述的USB RAW设备配置步骤,可令NI-VISA 3.0通过基于Windows的计算机控制USB RAW设备。若您正使用与USBTMC兼容的设备,请连接自身设备并跳转至2.3节。

现在,您应在计算机上安装NI-VISA,但不要连接USB设备。此外,不应安装任何USB设备的驱动。您可以通过以下3步,配置USB设备并使用NI-VISA:

1.通过“驱动程序开发向导”,创建INF文件。

2.通过INF文件,安装INF文件和USB设备。

3.通过NI-VISA交互式控件测试设备。

本教程根据自身目的,将NI DAQPad-6020E作为USB设备的范例,并将其安装于Windows XP 系统。由于本教程旨在诠释通用USB设备的配置,因此DAQPad-6020E的个别细节不在讨论之列。请注意:NI-DAQ是DAQPad-6020E所支持的唯一的驱动。

2.1. 通过 "驱动程序开发向导", 创建INF文件

若您想使用NI-VISA,必须首先通知Windows系统将NI-VISA用作设备的默认驱动。在Windows环境下,您可以通过INF文件实现该目标。 NI-VISA 3.0及更高版本包括:可为USB设备创建NIF文件的“VISA驱动程序开发向导”。

1. 打开DDW,选择开始»程序»National

Instruments»VISA»VISA驱动开发者向导。图1显示了打开的屏幕。

图1. VISA DDW硬件总线窗口

您可以通过该向导为PXI/PCI、USB或火线设备,创建INF文件。由于是为USB设备创建驱动,请您单击USB和下一步。图2显示了打开的“VISA DDW基本设备信息”窗口。

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

2. 在本步骤中,您必须获知自身USB仪器的厂商ID和产品ID。当您安装USB设备、标注设备地址,并希望与设备通信时,这些数字可识别出您的USB设备。依照USB规范,两组数字均为16位十六进制数字,且由设备制造商提供。

若您想获知USB的厂商ID和产品ID,可将USB设备插入计算机,令其辨识新设备。取消并退出可能开启的“发现新硬件向导”。通过“控制面板”打开“设备管理器(Device Manager)”,从列表中找出USB设备;其位置通常在“其它设备”之下。若该USB属于未知设备,会出现一个黄色的感叹号。双击该设备,打开属性。选择“详细情况”标签,确保属性下拉式列表中显示“设备实例ID”。图3近似显示了一串字符。"VID_"和"PID_"右边的4个字符分别代表您的厂商ID和产品ID。请您记下这2组设备字符,关闭“设备管理器(Device Manager)”,并从计算机上拔去设备。或者,您也可以联系设备制造商获取该信息。

图3. 从 "设备管理器 (Device Manager)"上找出厂商ID和产品ID

DAQPad-6020E的厂商ID和产品ID分别是:0x3923和0x12C0。若您的设备不是NI DAQPad-6020E,由于设备不同,你的厂商ID和产品ID也存在差异。

注意:通过“驱动程序开发向导”继续配置以前,您应保证已经从计算机上移除了USB设备。

在各个栏目中,相应地输入厂商ID、产品ID、制造商姓名和产品名称。

点击下一步。图4展现了“输出文件属性”窗口。

图4. VISA DDW输出文件属性窗口

3. USB仪器前缀(USB Instrument Prefix)就是一种描述符,用来定义USB设备使用的文件。键入USB仪器前缀(USB Instrument Prefix),选择您希望存放此类文件的目录,并单击下一步。接下来的窗口将为您提供安装选项。默认选项是安装操作系统的设置信息,这通常也是最佳选项。一旦选择某个选项,请您单击完成并退出向导。 INF文件根据您在前一个窗口的输出文件目录栏中指定的目录,创建形成。

2.2. 安装INF文件和USB设备。

INF文件的安装因Windows版本的不同而各有差异。当DDW创建INF文件时,安装指南便被纳入INF文件顶部的标题中。采用ASCII文本格式的INF文件,能够接受记事本等各种文本编辑器的读取。若您想了解INF文件的安装详情,请在文本编辑器中打开INF文件,并依照文件顶部的指南操作。本教程假设您使用的是Windows XP。

1.将INF文件复制到INF文件夹。在Windows XP操作系统中,该文件夹通常位于

C:\WINDOWS\INF。该文件夹可能被隐藏,这就可能需要您更改自身的文件夹选项以便查看隐藏的文件。

2.右键单击C:\WINDOWS\INF中的INF文件,并点击安装。本过程为您的设备创建

出一个PNF文件。现在,您已做好了安装USB设备的准备。

3.连接您的USB设备。由于USB是热插拔,Windows系统可以检测您的USB设备;一

旦您将USB设备与USB端口相连,“添加新硬件向导”将自动打开。依照该向导的屏幕指南。当您收到为该设备选择一个驱动的提示时,应浏览INF文件夹并选择之前通过DDW创建的INF文件。

2.3. 借助VISA交互式控件, 测试通信。

1. 打开Measurement & Automation Explorer。选择工具»刷新,刷新查看内容。如图5所示,您的USB应当在设备和接口(Devices and Interfaces)的下方,作为USB

设备列出。现在您经过安装和配置的USB已能使用NI-VISA。

若您选择自身的USB设备,“USB设置(USB Settings)”窗口将显示其设备信息。您可以利用该窗口,对设备的制造商ID、产品代码、序列号等信息进行访问。

2. 借助您设备上的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。选择工具»NI-VISA»交互式控件。图6近似地显示出一个打开的窗口。

图6. VISA交互式控件

3. VISA交互式控件 (VISAIC)是一项可与所有VISA资源进行轻松交流的实用程序。 USB 分支中会列出经配置可以使用VISA的USB设备。双击您的设备,打开设备的VISA会话。图7显示出一个打开的窗口。

图7. VISA交互式控件开启VISA会话

当您通过VISAIC打开“VISA会话”时,“模板”标签和“属性节点(设置)”标签被自动选定。若您想读取属性,可以选中“属性节点(获取)”标签,选择希望读取的属性并点击执行。当前值指示器将显示属性名称中指定属性的当前值。如图7所示,资源名称属性被读取。

更多关于VISAIC的使用信息,请参阅Developer Zone: VISA交互式控件 (VISAIC)。若您想了解有关NI-VISA API的信息,请审阅NI-VISA帮助。两者可通过本教程结尾的链接获得。您可以和仪器制造商联系,获得关于自身USB仪器的有效指令列表。

通过使用NI-VISA, 与您的USB设备通信

本节诠释了如何通过NI-VISA 3.0及更高版本,与您的USB设备通信。回顾:USB设备具有2种类型。通信方式取决于您的设备类型。

3.1 USB INSTR类型 (USBTMC)

符合USB测试和测量类型 (USBTMC)的设备采用NI-VISA USB INSTR类型。这些设备采用488.2类型的通信。针对这些设备,您只需借助“VISA打开(VISA Open)”、“VISA关闭(VISA Close)”、“VISA读取(VISA Read)”和“VISA编写(VISA Write)”函数,采用与GPIB仪器一样的通信手段。

图8显示了与USBTMC设备通信的LabVIEW VI。在该范例中,针对USB设备的VISA会话被打开。指令被写入设备,响应被读回。如本例所示,正在接受传送的特定指令是针对设备的ID查询。您可与设备制造商确认自身设备的指令集。所有通信结束之后,VISA会话关闭。

图8. USBTMC LabVIEW范例程序框图

3.2 USB RAW类型

与USB RAW类型的通信更为复杂,因为每款设备可使用各自的通信协议。若您想详细了解自身设备的通信协议,请与仪器制造商联系。

USB利用4类通道或端点,实现通信。控制端点、批量端点、中断端点和同步端点。每类通道传输一种不同类型的信息。此外,任一端点号码可属于任一端点类型。您可以将端点视为通信插槽。若您想详细了解关于USB架构的内容,请审阅以下有关USB规范的链接。

NI-VISA支持3类USB通道:控制端点、批量端点和中断端点。一旦NI-VISA检测出您的USB仪器,将自动扫描您的仪器,查找各类型当先最低的端点。

一旦VISA检测出当先最低的端点,便将这一数值分配给合适的VISA属性。批量输入端点和批量输出端点被分别储存在“VI_ATTR_USB_BULK_IN_PIPE”属性和

“VI_ATTR_USB_BULK_OUT_PIPE”属性中。中断端点被储存在

“VI_ATTR_USB_INTR_IN_PIPE”属性中。若数值为-1,则表示USB设备不支持相应的通道类型。控制渠道只支持端点0。若您使用的是C API,可通过“vi配置属性(viSetAttribute)”函数改变端点。您可在LabVIEW中使用“编写VISA属性 (Write VISA Property)”节点。

NI-VISA包含4类借由USB通道传输数据的函数。您在利用这些函数与设备通信之前,需

要通过VISA USB的属性,设置通信协议。以下列表描述了现有函数。

?通过VISA USB Control In和VISA USB Control Out,传输使用控制通道的数据。

?您可利用“VISA读取(VISA Read)”和“VISA编写(VISA Write)”函数,传输使用批量通道的数据。

?对于LabVIEW用户,VISA为您使用中断通道提供了额外的函数: VISA Get USB Interrupt Data。在C API中,您能通过访问“VI_EVENT_USB_INTR”事件对象的

“VI_ATTR_USB_RECV_INTR_SIZE”和“VI_ATTR_USB_RECV_INTR_DATA”属性,实现

该目标。如需更多关于VISA事件的信息,请参阅NI-VISA帮助。

Linux和Mac系统上的USB

4.1 Linux

NI-VISA依靠Linux内核特性,实现其USB支持功能。该特性现在称为usbfs,而在过去的Linux内核中曾称为usbdevfs。若您希望NI-VISA支持USB设备,就必须显示并安装该特性(这就好比一个虚拟的文件系统)。该特性在Red Hat、SuSE、Mandrake等绝大多数的Linux主推产品中均得到了支持。您可以通过安装指令,显示目前接受安装的文件系统,从而确认自身系统目前是否支持该特性。

同时,VISA用户必须有权读写代表USB设备的文件;该文件通常位于/proc/bus/usb的子目录里。若非如此,VISA便无法访问USB设备(您将无法通过viFindRsrc找出USB设备,“vi 打开(viOpen)”会失效)。由于绝大多数系统的默认配置,根用户以外的其他用户均不具备读写权限。

非根用户若想访问USB设备,可有几种选择。

?利用热插拔套件。该热插拔套件默认安装在Red Hat、SuSE、Mandrake等绝大多数的版本上。热插拔套件允许用户基于输入厂商ID (VID)和产品ID (PID)等特征,

运行针对特定USB设备的脚本。若存在热插拔套件,NI-VISA Installer默认安装的脚本将令所有USB TMC设备和USB RAW设备的架构,接受各级用户的读写访问。若您想为某个特定USB RAW设备添加读写许可,请运行此处包含的脚本:

/linux/NIvisa/USB/AddUsbRawPermissions.sh

更多关于热插拔套件的信息,请参阅以下网站:

https://www.sodocs.net/doc/4711302807.html,/。

?usbfs(以前被称为usbdevfs)可以通过选项“devmode=0666”接受安装,从而令所有USB TMC设备接受各级用户的读写访问。

?根用户可以为代表USB设备的文件添加读写许可;该文件通常位于/proc/bus/usb 的子目录中。遗憾的是,如果您拔去设备,这些许可便会丢失。因此,不推荐您

采用这种方式。

4.2 Mac OS X

只要系统上的其他驱动不占用该USB设备,您就能通过NI-VISA进行访问。无需特殊设置。

相关主题