USB仪器控制教程

概观

本教程是为出发点使用NI-VISA与USB设备进行通信。它不打算作为一个起点,学习USB构架或USB通讯中使用的各种协议。阅读本教程后,您应该能够安装一个USB设备,并使用NI-VISA与该设备进行通信,只要你理解了设备的通信协议。

目录

  1. USB与VISA的背景
  2. 配置NI-VISA来控制USB设备
  3. 使用NI-VISA以沟通与您的USB设备
  4. USB在Linux®和Mac

1。USB与VISA的背景

VISA是用于仪器总线进行通信的高级API。它是独立于平台,独立总线和环境的独立。换句话说,相同的API使用,而不管程序是否被创建到一个USB设备使用LabVIEW在机器运行的是Windows 7或与沟通的GPIB用C一机运行Mac OS X设备上的 USB是一个消息基于通信总线。这意味着一台PC和USB设备通过在总线为文本或二进制数据发送命令和数据通信。每个USB设备都有自己的命令集。您可以使用NI-VISA的读写功能,这些命令发送到仪器并读取仪器的响应。请与您的仪器制造商的有效命令为您的仪器清单。 从版本3.0开始,NI-VISA支持USB通讯。两类签证的资源支持:USB INSTR和USB RAW 符合USB测试和测量类(USBTMC)协议的USB设备使用USB INSTR资源类。USBTMC设备符合协议的VISA USB INSTR 仪器控制资源类可以理解的。没有配置必要与USBTMC设备进行通信。为了与USBTMC仪器进行通信,请参考使用NI-VISA以沟通与您的USB设备部分。有关USBTMC规格的详细信息,请参阅下面链接的USB实施者论坛的网页。 的USB RAW仪器是任何USB仪器比那些专门符合USBTMC规范文书等。如果您使用的是USB RAW设备,请按照指示,对配置NI-VISA来控制USB设备的部分来配置NI-VISA来控制设备。仪器制造商联系以获得有关通信协议和命令的细节设置您的仪器使用。 有关NI-VISA API的具体信息,请参考NI-VISA帮助。本文件包含在NI-VISA和可通过本教程的末尾的链接。









返回页首

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

观看关于使用USB入门与仪器控制一个3分钟的视频

本节将通过配置步骤是由NI-VISA 5.0基于Windows的计算机上控制一个USB RAW设备散步。如果您使用的是USBTMC兼容设备,连接您的设备,并跳到第三步,测试设备与NI-VISA交互控制。

在这一点上,NI-VISA应该已经安装在您的计算机上,并且您的USB设备不应连接。此外,你不应该有安装在您的USB设备的驱动程序。有三个步骤来配置您的USB设备使用NI-VISA:

  1. 创建使用驱动程序开发向导INF文件。
  2. 安装INF文件,并​​使用该INF文件的USB设备。
  3. 测试设备与NI-VISA交互控制。

对于本教程的目的,一个创意摄像头是用来作为例子的USB设备,并安装在Windows 7系统。由于本教程的目的是解释一般的USB设备的配置,具体细节到创意摄像头都没有讨论。

创建INF文件中使用的驱动程序开发向导

要使用NI-VISA,你必须先告诉Windows使用NI-VISA作为设备的默认驱动程序。在Windows环境下,你可以用一个INF文件做到这一点。NI-VISA 3.0和更高版本包含了NI-VISA驱动程序向导来创建您的USB设备的INF文件。 1。要打开NI-VISA驱动程序向导中,选择开始»所有程序»美国国家仪器»签证»驱动程序向导。图1显示了开放屏幕。



图1。NI-VISA驱动精灵硬件总线选择窗口


您可以使用此向导来创建一个PXI / PCI或USB设备的INF文件。因为您正在创建的驱动程序的USB设备,请单击USB下一步。将打开的NI-VISA驱动精灵的USB设备选择窗口,如图2所示。


图2。NI-VISA驱动程序向导的USB设备选择窗口


2。对于这一步,你必须知道的USB厂商ID和产品ID为您的USB设备。这些数字找出你的USB设备,当你安装它,当你想用它来沟通解决您的设备。根据USB规范,这两个数字是16比特的十六进制数,应该由设备制造商提供。

如果您可以访问您的USB设备,继续前进,将它连接到您的电脑在这个时候,但取消了找到新的硬件向导的,如果它开始。完整的步骤2a。 如果您目前没有访问您的USB设备,但是知道您的USB厂商ID和产品ID完整步骤2b。

如果您目前没有访问您的USB设备,不知道您的USB厂商ID和产品ID,从制造商处获取该信息,然后完成步骤2b。

2A。从控制面板打开设备管理器,找到名单上,通常在您的设备“其他设备”。它可能会显示一个黄色的感叹​​号,表明它是一个未知设备。双击该设备,打开属性。选择详细信息选项卡,并确保“硬件ID”显示属性下拉框中。一个字符串的字符将显示与图3类似。这四个字符“VID_”和“PID_”的权利,是你的供应商ID和产品ID,分别。写下您的设备的特点,关闭设备管理器,并从计算机上拔下设备。 




图3。从设备管理器中查找硬件ID

对于这个创意摄像头,厂商ID和产品ID是0x041E和0x4036,分别。请注意,厂商ID和产品ID将是为您的设备取决于制造商和型号不同, 在NI-VISA驱动程序向导的USB设备选择窗口中使用您的供应商ID和产品ID匹配的设备列表中的项目之一。一旦你点击这个设备上,你应该可以看到在窗口中的其他字段中填入有关设备的信息。验证这些信息看起来是正确的。如果你没有看到在设备列表中匹配您的设备,请首先尝试一下刷新,如果仍然无法正常工作,然后跳到步骤2B。

单击下一步。显示输出文件生成窗口,如图6所示。

2B。在NI-VISA驱动精灵USB设备选择窗口,选择其他的设备列表。

单击下一步。  下面的提示,如图4所示将建议您连接您的USB设备。

 

图4。提示建议您连接您的USB设备

单击是。的USB -如图5显示设备信息窗口。

图5。NI-VISA驱动程序向导的USB - 设备信息窗口

输入你收集你的设备进入到如图5所示的四个字段的信息。

单击下一步显示输出文件生成窗口,如图6所示。


图6。NI-VISA驱动程序向导输出文件生成窗口

该USB仪器前缀很简单,你会用它来 ​​标识用于该设备的文件的描述符,你可以选择任何你想要的前缀。输入一个USB仪器前缀,选择要在其中放置这些文件所需的目录,然后单击下一步。此时将显示安装选项窗口,如图7所示。

图7。NI-VISA驱动程序向导安装选项

默认选择是安装在计算机上生成的文件,通常是最好的选择。一旦你选择一个选项,单击Finish(完成)退出该向导。INF文件是你在输出文件目录字段在前面的窗口中指定的目录中创建。

安装INF文件和USB设备。

INF文件的安装都是不同的,每个版本的Windows。由于Windows 2000/XP和Windows Vista / 7之间的差异的NI-VISA驱动程序向导将创建两个一个INF文件,为每个操作系统组。安装说明在INF文件的顶部包含在一个头。因为INF文件是ASCII文本文件,它们可以读取任何文本编辑器如记事本。有关安装INF文件的详细信息,请在文本编辑器中打开INF文件,并​​按照指示在文件的顶部。本教程假设您使用的是Windows 7。

  1. 在Windows 7上安装INF文件,你首先需要登录到管理员用户帐户。
  2. 您需要拔掉USB设备在这个时候,这样的司机将被正确使用时安装您的设备关联。
  3. INF文件复制到INF文件夹。在Windows 7中,这个文件夹通常是C: WINDOWS INF文件。此文件夹可能是隐藏的,所以你可能需要改变你的文件夹选项通过去查看隐藏文件工具»文件夹选项»查看»高级设置,然后选择显示隐藏的文件,文件夹和驱动器。
  4. 在INF文件右键单击C: WINDOWS INF,然后点击安装。这个过程会为您的设备PNF文件。您现在可以安装USB设备。
  5. 连接您的USB设备。Windows应该能够检测到USB设备,并添加新硬件向导应尽快将其连接到USB端口自动打开。经过安装期间Windows应该表明是否已经成功安装到您的设备。

注:在某些情况下,Windows可能已经与您的USB设备相关联的默认驱动程序。如果是这样的话,Windows会先安装驱动程序。一旦您插入您的USB设备和Windows已经安装了默认的驱动程序,从控制面板中打开设备管理器。一旦设备管理器打开后,扩大适用于您的设备,即树类别:人机接口设备。然后找出“USB人机接口设备”(如图5所示)的实例对应于您的USB设备通过右键单击并选择属性,并检查匹配的VID和PID详细信息选项卡中详细介绍了创建INF文件中使用驱动程序开发向导节以上。

一旦你找到了“USB人机接口设备”,有你的USB设备的匹配VID和PID,在其上单击右键,选择更新驱动程序软件。

在第一个屏幕上,选择浏览计算机以查找驱动程序软件。在第二个屏幕上,选择让我从我的计算机上的驱动程序的列表。在第三个屏幕,如图8所示,单击从磁盘安装。  引导提示,浏览到C: WINDOWS INF文件,并选择INF文件复制那里,然后单击OK(确定) 请确保您的设备在图所示的窗口中选择8,然后单击下一步。   Windows可能会发出警告有关不验证的驱动程序,选择反正安装驱动程序。当驱动程序已经安装完毕点击完成。

图8。选择驱动程序为您的USB设备

与VISA交互控制测试通讯。

1。打开测量与自动化浏览器(MAX)。选择工具»刷新来刷新视图,以确保您的设备出现。您的USB设备应该被列在设备和接口,如图9。您的USB设备现在已经安装并配置为使用NI-VISA。 一旦您选择了您的USB设备,该设备的信息可以通过点击显示USB设置选项卡,在右窗格的底部。使用此窗口中,您可以访问信息,如制造商ID,型号代码和序列号为您的设备。




[+]放大图片

图9。图中所示为MAX USB设备

2。要使用VISA与您的设备进行通信,使用VISA仪器描述符为您的设备。用于USB INSTR设备的仪器描述符格式是USB [主板] ::制造商ID ::型号代码::序列号[:: USB接口编号] :: INSTR。用于USB RAW设备仪器描述符格式是USB [主板] ::制造商ID ::型号代码::序列号[:: USB接口编号] :: RAW。 根据USBTMC的规格,所有的USBTMC设备必须具有一个串行数。某些USB RAW设备可能没有序列号。如果您的设备没有序列号,NI-VISA会自动分配一个特定的VISA序列号的设备,如图9如上图所示。为序列号的格式是NI-VISA-#,其中#是一个自动生成的编号。 一些USB设备有多个接口。这是类似的方式PCI设备可以有多种功能。如果您的设备只支持一个接口,你不需要包括USB接口数量。创意摄像头在这个例子中使用的RAW类,制造商代码和型号代码为0x041E和0x4036,分别。对于创意摄像头,仪器描述符是USB0 :: 0x041E :: 0x12C0 :: NI-VISA-20002 :: RAW。 为了测试这个装置,开启MAX沟通。选择工具»NI-VISA»VISA交互控制。一个类似于图10所示的窗口将打开。









图10。VISA交互控制


3。在VISA交互控制(VISAIC)是用于与任何VISA资源很容易沟通的工具程式。当您的USB设备配置为使用VISA,它应列在USB分支。您的设备上双击打开一个VISA会话到设备。在图11所示的窗口应该打开。




[+]放大图片

图11。VISA交互控制打开VISA会话


当你打开一个VISA会话与VISAIC,配置部分和USB设置选项卡会自动选择。要阅读设备的特性,选择视图属性选项卡。这将列出您的设备的不同属性,包括像资源名称的信息。

如需使用VISAIC的更多信息,请参考开发者园地:VISA交互控制(VISAIC) 。有关NI-VISA API的信息,请查看NI-VISA 帮助。两者都可以通过本教程末尾的链接。为您的USB设备的有效命令的列表,请联系您的仪器制造商。

返回页首

3。使用NI-VISA以沟通与您的USB设备

本节将介绍如何使用NI-VISA 3.0及以上您的USB设备进行通信。记得有两类USB设备。沟通的方法依赖于类设备的。

USB INSTR类(USBTMC)

符合USB测试和测量类(USBTMC)设备使用NI-VISA USB INSTR类。这些设备使用488.2风格沟通。对于这些设备,你可以简单地使用VISA打开,关闭VISA,VISA读取和VISA写入功能,以同样的方式你,如果你是用GPIB仪器进行通信。 图12所示的LabVIEW VI与USBTMC设备进行通信。在这个例子中,一个VISA会话被打开到USB设备。一个命令被写入到设备上,并且响应被读回。在这个例子中,正在发送的特定的命令是用于该设备的ID的查询。请与您的设备制造商,为您的设备的命令集。毕竟通信完成后,VISA会话关闭。



图12。USBTMC LabVIEW范例程序框图

USB RAW类

与USB RAW类通信是比较复杂的,因为每个设备可以使用自己的通讯协议。请联系您的设备供应商有关的通信协议的细节为您的设备。 的USB通信使用四种类型的管道或端点:控制,批量,中断和同步。各类型的管道传送不同类型的信息。此外,任何数目的端点可以是任何端点类型。想想一个端点作为通信插座。。有关USB架构的具体细节,请查看USB规范在这篇文章的末尾相连 的NI-VISA支持三种类型的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设备不支持该类型的管道。对于控制管道,仅支持端点为零。如果你正在使用C API,使用viSetAttribute功能改变端点。在LabVIEW中,使用一个写VISA属性节点。 NI-VISA包含四大功能,通过USB管道来传输数据。之前,你可以使用这些功能的设备进行通信,则需要使用VISA USB属性来设置通信协议。下面的列表描述了可用的功能。








  • 使用VISA USB控制在和VISA USB控制输出使用控制管道来传输数据。
  • 要使用批量管道传输数据,使用VISA读取和VISA写。

如果您正在使用LabVIEW,VISA包含一个附加的功能,使用中断管道:VISA获取USB中断数据。在C API,您可以通过访问VI_ATTR_USB_RECV_INTR_SIZE做到这一点,该VI_EVENT_USB_INTR事件对象的VI_ATTR_USB_RECV_INTR_DATA属性。见NI-VISA帮助有关签证事件的更多信息。

返回页首

4。USB在Linux®和Mac

Linux的

NI-VISA依赖于Linux内核的功能,它的USB支持。此功能称为USBFS,并在旧的Linux内核被称为usbdevfs。对于NI-VISA支持USB设备,此功能必须存在并安装(如虚拟文件系统)。这是支持在大多数主要的Linux发行版如Red Hat,SUSE和Mandrake。您可以使用mount命令可以显示哪些文件系统正在安装,看看你系统目前支持此功能。

此外,VISA用户必须具有写权限,代表该USB设备,通常是介于中的/ proc /总线/ USB子目录中的文件。如果不是这种情况下,该USB设备是不是由VISA通行(它不会被使用viFindRsrc发现,与viOpen将失败)。在大多数系统中的默认配置是root用户有写权限,但没有其他用户具有此访问。

有几个选项提供给USB设备非root用户访问。

  • 用hotplug包。这个包是默认在大多数发行版包括Red Hat,SUSE,Mandrake的和安装。热插拔包允许用户运行基于特征,如供应商ID(VID)和产品ID(PID)的特定USB设备的脚本。如果热插拔包存在,NI-VISA安装程序在默认情况下会安装脚本,让所有用户具有写访问所有的USB TMC设备和USB RAW设备的框架。要添加写入权限为特定的USB RAW设备,请运行脚本包括: <VXIPNPPATH> / linux的/ NIvisa / USB / AddUsbRawPermissions.sh 有关热插拔包的详细信息,请参考下列网站:http://linux- hotplug.sourceforge.net /



  • USBFS(原名usbdevfs)可安装的选项DEVMODE = 0666。这给所有用户读取和写入访问所有的USB设备。
  • root用户可以添加写入权限,代表该USB设备,通常是介于中的/ proc /总线/ USB子目录中的文件。不幸的是,这些权限会丢失,如果设备被拔出。因此,这种做法是不推荐。

的Mac OS X

只要在系统上没有其他司机声称USB设备,您可以使用NI-VISA来访问它。没有特殊的设置是必需的。相关链接:返回到仪器控制基础主页开发者园地:VISA交互控制(VISAIC)开发者园地:使用VISA驱动开发向导和NI-VISA开发在Windows的PXI / PCI驱动程序的产品和服务:以太网/ LXI

出处:http://www.ni.com/white-paper/4478/en/
原文地址:https://www.cnblogs.com/flyheart33/p/3604863.html