LabVIEW-USB 通信简单教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
:
文件类型技术指南
VISA是一个高 级API用来与仪器 控制总线进行通信。
它是平台独立、总线 独立、环境独立的。
也就是说,无论是使 用LabVIEW编 程在一台运行 Windows 2000的机器上与 USB设备进行通 信,还是使用C编程 在一台运行Mac OS X的机器上与 GPIB设备进行通 信,都可以使用同样 的API。
图1:VISA DDW硬件总线窗口
您可以使用这个向导 创建供 PXI/PCI、 USB或IEEE 1394设备使用的 INF文件。
由于您 在为USB设备创建 驱动程序,选择 USB并点击下一 步。
VISA DDW基本设备信息 窗口打开,如图2所 示。
图2:VISA DDW基本设备信息 窗口
2、在这个步骤 中,您必须知道 USB仪器所使用的 USB厂商ID和产 品ID。
这些数字在 您安装的时候能够识 别USB设备,在您 希望进行通信的时 候,可以对设备进行 寻址。
根据USB规
范,所有数字必须是 16位的十六进制数 字,必须由设备制造 商提供。
如果您不知道USB 厂商ID和产品 ID,您可以将设备 插入计算机,让计算 机识别新设备得到这 些ID。
如果找到新 硬件向导打开,选择 取消。
打开控制面板 中的设备管理器,在 列表中找到您的设备,通常它在“其他 设备”中。
可能它会 带有黄色惊叹号标 记,表示这是一个未 知设备。
双击这个设 备打开属性。
选择详 细标签,确保“设备 实例ID”显示在属 性的下拉框中。
这样
将会显示类似于图3 的字符串。
“VID_”和 “PID_”右边的 四个字符分别是您的 厂商ID和产品 ID。
写下设备的字 符串,关闭设备管理 器,从计算机上拔下 设备。
或者您还可以 联系您的设备厂商获得这些信息。
1.
2. 3. 图3:从设备管理器 中找到厂商ID和产 品ID
对于DAQPad- 6020E而言,厂 商ID和产品ID分 别是0x3923和 0x12C0。
如果 您的设备不是NI DAQPad- 6020E,厂商 ID和产品ID对于 您的设备而言是不同 的。
注意:在进入驱动程 序开发向导之前,请 确保设备已经从计算 机上拔下。
在对应的框中输入设 备的厂商ID、产品 ID、制造商名称和 型号名称。
点击下一步。
输出文 件属性窗口如图4所 示。
图4:VISA DDW输出文件属性 窗口
3、USB仪器前缀 只是用来识别这个设 备所使用文件的描述 符。
输入USB仪器 前缀,选择需要存放 文件的目标文件夹, 点击下一步。
下一个 窗口将提供您安装选 项。
默认的选择是为
操作系统安装设置信 息,也通常是最佳选 项。
在您选择了一个 选项之后,点击完成 退出向导。
INF文 件已经在您在前一个 窗口中输入的输出文 件位置中指定的文件 夹中生成了。
2.2. 安装 INF文件和USB 设备
INF文件的安装对 于每个版本的 Windows而言 都是不同的。
在 DDW创建了INF 文件之后,安装指令 就已经包括在INF 文件的头部了。
由于 INF文件是 ASCII文本文 件,它们可以在记事
本等任何文本编辑器 中查看。
要获得关于 安装INF文件的具 体信息,可以在文本 编辑器中打开INF 文件,按照文件头部 的指令完成。
本教程 假设您使用 Windows XP操作系统。
将INF文件复制到 INF文件夹中。
在 Windows XP中,这个文件夹 通常位于C: \WINDOWS\INF 中。
这个文件夹可能 是隐藏的,因此可能 需要修改文件夹选项 以便查看隐藏文件。
右键点击C: \WINDOWS\INF 中的INF文件,单 击安装。
这个过程将 为您的设备建立一个 PNF文件。
现在您 已经可以安装您的 USB设备了。
连接USB设备。
由 于USB是可以热插 拔的, Windows将能 够检测到您的USB 设备,在您连接到 USB端口之后,就 会自动打开添加新硬 件向导。
按照屏幕指 令完成向导。
在提示
您为这个设备选择驱 动程序时,浏览 INF文件夹,选择 您使用DDW创建的 INF文件。
注意:在部分情况 下,Windows 可能已经为您的 USB设备设置了默 认的关联驱动程序。
在这个情况下, Windows将会 首先安装那个驱动程 序。
如果在您插入 USB设备, Windows安装
了默认驱动程序,右 键点击我的电脑,选 择属性。
在属性窗口 中进入硬件标签,点 击设备管理器。
在设 备管理器打开之后, 展开“人体工程接口 设备”树。
找到 “USB人体工程接 口设备”(如图5所示)中对应USB设 备的实例,右键点击 并选择属性,检查对 应VID和PID的 细节标签。
图5:为您的USB 设备找到正确的 USB人体工程设备 实例
在您找到了具有您 USB设备对应 VID和PID的 “USB人体工程接 口设备”之后,右键 点击这个设备,进入 如图6所示的更新驱 动程序窗口。
图6:更新USB设 备的驱动程序
在第一个窗口中,选 择“不,不是这 次”,单击下一步。
在下一个窗口中,选 择“从列表或指定位 置安装(高级)”, 单击下一步。
在第三 个窗口中,选择“不 搜索。
我将选择要安 装的驱动程序。
”第四个屏幕将和图7相 似,在其中选择您已 经创建的驱动程序。
在选择了驱动程序之 后,单击下一步。
在 驱动程序完成安装之 后,点击完成。
图7:为您的USB 设备选择VISA驱 动程序
2.3. 使用 VISA交互式控制 测试通信
1、打开测量与自 动化浏览器 (MAX)。
选择工 具》刷新更新视图。
您的USB设备应该 已经作为USB设备 列在如图8所示的设 备与接口中。
您的 USB设备现在已经 完成安装,并配置为
用于NI-VISA 使用。
如果您选择了USB 设备,设备信息将被 显示在USB设置窗 口中。
使用这个窗 口,您可以访问例如 制造商ID、型号代 码和设备序列号的信 息。
[+] 放大图片
图8:在MAX中显 示的USB设备
2、要使用VISA 与您的设备通信,使 用您设备的VISA 仪器描述符。
USB INSTR 设备的仪器描述符格 式是USB [board]:: 制造商ID::型号 代码::序列号 [::USB接口编 号]:: INSTR。
USB RAW设备的仪器描述符格式是 USB [board]:: 制造商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。
要测试与这个设备的 通信,打开MAX。
选择工具》NI- VISA》VISA 交互式控制。
如图9 所示的窗口将被打 开。
图9:VISA交互 式控制
3、VISA交互式 控制 (VISAIC)是 用来简单地与任何 VISA资源进行通 信的使用程序。
在您 的USB设备被配置 为使用VISA之 后,它就会被列出在 USB分支中。
双击 您的设备打开与设备
通信的VISA会 话。
如图10所示的 窗口将被打开。
[+] 放大图片
图10:VISA交 互式控制开发式 VISA会话
在您使用 VISAIC打开 VISA会话之后, 就会自动选择模板标 签和属性节点(设 置)标签。
要读取一 个属性,选择属性节 点(获取)标签,选 择需要的属性并点击 执行。
属性目前在属
性名中所指定的数值 会显示在当前值指示 器中。
在图10中, 资源名属性已经被读 取。
要获取更多关于 VISAIC的信 息,请参阅开发者园 地:VISA交互式 控制 (VISAIC)。
要获取更多关于 NI-VISA API的信息,请参 考NI-VISA帮 助。
两者都可以在本 教程最后的链接中获
得。
要得到您USB 仪器中有效指令的列 表,请联系您的仪器 制造商。
本小节介绍了如何使 用NI-VISA 3.0以及更高版本 与USB设备进行通 信。
回忆一下共有两 种类别的USB设 备。
通信的方法依赖 于所使用设备的类 别。
3.1 USB INSTR类别 (USBTMC)符 合USB测试和测量 类别 (USBTMC)的 设备使用NI- VISA USB INSTR类别。
这 些设备使用 488.2格式通 信。
对于这些设备而 言,您简单地使用 VISA打开、VISA关闭、 VISA读取和 VISA写函数,与 使用GPIB仪器通 信相似的方式进行。
图11展示了能够与 USBTMC设备通 信的 LabVIEW VI。
在这个实例 中,打开了一个 VISA会话与 USB设备相连。
一 条指令被写入设备 中,并读回系统响 应。
在这个实例中, 发送到设备的特定指令是设备的ID查 询。
可以与设备制造 商联系,得到设备指 令集的列表。
在完成 所有通信之后, VISA会话被关 闭。
图11: USBTMC LabVEW实例程 序框图
3.2 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_EVENT_USB_INTR 事件对象的 VI_ATTR_USB_RECV_INTR_SIZE 和 VI_ATTR_USB_RECV_INTR_DATA 属性,完成这个任 务。
请参阅NI- VISA帮助获取关 于VISA事件的更 多信息。
4、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对 该设备进行访问(因 为无法通过viFindRsrc 找到,viOpen 将会失败)。
在大多 数系统下的默认配置 是root用户带有 写权限,但是其他所 有用户并不具有这个 权限。
要为一个非root 用户提供对USB设 备的权限通常可以有 如下方法。
使用热插拔包。
这个 包在包括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/bus/usb 下的某个子文件夹 中。
不幸的是,如果 设备重新插拔,权限 的设置就会丢失。
因 此,并不推荐这个方 法。
4.2 Mac OS X
只要没有系统中的其 他驱动程序使用这个 USB设备,您就可 以使用NI- VISA进行访问。
不必采取特别的设置 步骤。
相关链接:
返回仪器控制基础主 页
产品参考:NI- VISA帮助
开发者园地: VISA交互式控制 (VISAIC)
开发者园地:使用 VISA驱动程序开 发向导和NI- VISA在 Windows下对 PXI/PCI设备 进行寄存器级别的编 程
USB实现者论坛: USB%202.0 规范:http: /b. org/developers/docs
USB实现者论坛: 批准类别规范文档: http: /b. org/developers/devclass_docs
开发者园地:在 LabVIEW下的 USB RAW控制 通信
开发者园地:在 LabVIEW下的 USB RAW集合 通信
开发者园地: VISA USB RAW模式获取中断 数据实例
Linux®是 Linux Torvalds在 美国和其他国家的注 册商标。
如果您有任何问题, 请,我们会尽快给您回 电!
留言给NI工程师
法律条款
本教程由 National Instruments 公司(简称 “NI”)开发。
尽管 National Instruments 可为该程序提供技术 支持,但是该指南的 内容并非完全通过测 试和验证,NI不以 任何方式保证其质
量,也不保证相关产 品或驱动程序的新版 本出现时继续为其提 供技术支持。
本教程 仅以其“现状”向用 户提供,教程没有任 何担保。
教程使用受 网站上 《使用条款》的约 束。
(http: //ni.
)
com/legal/termsofuse/unitedstates/us/。