使用NI-VISA软件控制USB设备
http://digital.ni.com/worldwide/china.nsf/web/all/90FE2718C3CC05D748256EF5000B849F
?
这一用户指南为您提供一个入门材料,旨在帮您学习如何使用NI-VISA 与USB设备进行通讯,并非学习USB构架或USB通讯中使用的各种协议的材料。阅读本用户指南以后,只要您已经理解了设备通讯协议,您应该就能够安装USB设备,并使用NI-VISA 与该设备进行通讯。
目录:VISA(Virtual Instrument Software Architecture,ni.com/visa)是一个用来与各种仪器总线进行通讯的高级应用编程接口(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中附有这两个文件,通过本指南最后的链接也可以获得这两个文件。?
本节将逐步介绍如何在基于Windows的计算机上用NI-VISA 3.0来控制USB RAW设备。如果您使用的是USBTMC兼容设备,就请连接设备,然后跳到2.3节。
此时,NI-VISA 应该已经安装在您的计算机上,而您的USB设备还没有接上。此外,您也不要安装该USB设备的驱动程序。我们分三个步骤来配置您的USB设备以便用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. 选择StartProgramsNational InstrumentsVISAVISA Driver Developer Wizard,打开DDW。出现图1所示的窗口。
您可以用这个向导为PXI/PCI或USB设备创建一个INF文档。由于您是在为USB设备创建驱动程序,因此选择USB,并点击Next。此时出现图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. 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操作系统。
2.3使用VISA Interactive Control测试通讯情况
1. 打开Measurement & Automation Explorer(MAX)。选择ToolsRefresh刷新界面。您的USB设备应该如图4所示,您的USB设备出现在Devices and Interfaces栏目下面。现在您的USB设备已经安装和设置完毕,可以使用NI-VISA了。
如果您点击选择您的USB设备,“属性”窗口中就会显示设备的相关信息。使用这个窗口,您可以访问诸如制造商ID、型号代码以及设备序列号之类的信息。
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所示窗口相似的窗口。
3. VISA交互控制(VISAIC)是一个实用程序,可用来轻而易举地与任何VISA 资源进行通讯。做好使用VISA的配置之后,您的USB设备就会被列入USB分项之中。双击您的设备,打开设备的VISA对话框。应出现如图6所示的窗口。
当您使用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。两个文件皆可以通过本文最后的链接获得。如果需要有效指令清单,请与仪器制造商联系。
本节将说明如何使用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对话框关闭。
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 属性建立通讯协议。以下是对可用功能的描述
?