LabWindows_CVI仪器驱动程序与IVI体系结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
仪器驱动程序 ’ 函数体 ( 内部子例程接口 图# &%+) % , - 接口
仪器驱动程序外部接口模型图
图中各部分的说明: ’ # ( 应用程序 用户开发的用于自动测试的应用程序。 ’ ! ( 交互式开发界面 对于 /012345678 , 9&% 来讲, 交互式开发界 面就是图形化的 /012345678 , 9&% 函数面板。 /012345678 , 9&% 函数面板允许用户通过 /01: 2345678 , 9&% 函数面板交互式的操作特定的仪 器或向应用程序的代码中自动添加仪器驱动函 数的调用。 在 /012345678 , 9&% 函数面板还提供 了对函数的接口的详细说明,帮助程序员理解 每一个函数的作用与使用方法。 ’ $ ( 程序开发接口 程序开发接口是指在高层的应用程序中调 用仪器驱动程序的方法。 在 /012345678 , 9&% 仪 器驱动程序中,仪器驱动程序的软件接口是用 标准的函数调用实现的,与标准的库函数调用 没有什么不同。 ’ . ( 仪器驱动程序 ’ 函数体 ( /012345678 , 9&% 仪器驱动程序是用来控
收稿日期 N #""" O "& O #(
1 > E 协议就可以容易的控制仪器,包括 FG1B、 串行设备或者其它设备。早期的仪器驱动 *71、 程序有很多局限性,用户希望仪器驱动程序是 开放的和可修改的,并且最好是围绕一种标准 来构造驱动程序。 *71 H0.@IH0/J 系统联盟自建立以来一直从 事解决系统级的软件问题,并且为发展已存在 的 仪 器 驱 动 程 序 标 准 做 了 有 效 的 工 作 。 *71 H0.@IH0/J 仪器驱动程序体系结构,综合了已有 的流行的技术, 构造了成功的 8/9:+2;<=3 > ?*1 仪器驱动程序标准。 这些标准使用 *1DC % *+,-./0 123-,.452-/-+<2 D<K-=/,5 C,LM+-5L-.,5 ) 定义的数 据类型来定义所有仪器驱动程序函数的接口。 这些数据类型提高了仪器驱动程序在不同操作 系统和编程语言之间的可移植性。 1*1( 12-500+@52*+,-./0 123-,.452-3)模型将 *71 H0.@IH0/J 模型 向前推进了一步,而且并未导致复杂性的增加 和性能的降低。 1*1 给仪器驱动程序增加了许多 新的重要的特性, 比较重要的有以下几个: % $ ) 状态缓存 只有当 1*1 驱动程序自动缓存仪器的状态, 仪器的状态设置与驱动程序所需要的不同时才 执行仪器 1 > E。这样就消除了许多冗余的命令, 加快了测试的速度。 % # ) 可配置的范围检查 1*1 驱动程序自动范围检查功能检验程序 员给仪器的属性所设置的值是否在有效范围之 内, 为了加快执行速度也可以取消这个功能。 % ! ) 可配置的状态查询 1*1 驱动程序自动状态查询特性在对仪器
!"
微电子学与计算机
仪器驱动程序 应用函数 元件函数 初 始 化 函 数 动 作 8 状 态 函 数 实 用 工 具 函 数
"##$ 年第 $ 期配 Nhomakorabea置 函 数
数 据 函 数
属 性 函 数
关 闭 函 数
’(’ 引擎
回调函数 图" 仪器驱动程序内部设计模型图
化或关闭到仪器的软件连接、 配置仪器状态、 数 据读写、仪器属性的查询和设置以及其它一些 特殊的功能。 % ! & 回调函数 在 ’(’ 驱动程序中, 回调函数用来查询或修 改仪器的设置, 检查仪器的状态, 或执行其它操 作。 非 ’(’ ’(’ 引擎在适当的时间调用回调函数。 驱动程序没有回调函数。 ! 应用实例
;<=3 > ?*1 仪器驱动程序、 1*1 体系结构中各部分的作用及 8/9:+2;<=3 > ?*1 仪器驱动程序的工作原理。
关键字: 8/9:+2;<=3 > ?*1, 仪器驱动程序 1*1,
.
引言
虚拟仪器 % *+,-./0 123-,.452-36 简称 *1 ) 技术 是当今自动测试领域的前沿技术。 它的出现, 使 用户能根据自己的需要定义仪器的功能。通过 虚拟仪器技术, 使用相同的硬件设备, 通过不同 的软件, 即可实现各种测量功能。 因此软件是虚 拟仪器技术的核心。 *71 总线是当今最先进的 仪器总线, 具有高速、 高精度、 易扩展、 小型轻便 等优点,基于 *71 总线的虚拟仪器在测试领域 得到广泛应用。 8/9:+2;<=3 > ?*1 是面向测试领 域的功能强大的开发工具。 1*1( 12-500+@52- *+,A ) -./0 123-,.452-3 是仪器驱动程序的最新标准, 1*1 在与已有的仪器驱动程序标准兼容的基础 上带来了许多新特性,增强了仪器驱动程序的 效率。 本文主要讨论 8/9:+2;<=3 > ?*1 仪器驱动 程序的结构和 1*1 体系结构。 / 仪器驱动程序标准的发展过程 仪器驱动程序的目的是控制仪器。对于早 期的计算机控制的仪器系统,程序员在应用程 序中使用 BCD1? 1 > E 指令来操作通过 FG1B 连 接到计算机的仪器。程序员只能通过低层的指 令来控制仪器,如果程序员对相同的仪器编写 不同的应用程序,那么他必须要做许多重复工 作。 显然, 如果能提供通用、 模块化、 高层的例程 使其在开发相同仪器的不同应用程序时可重 用, 这将大大节省仪器应用程序的开发时间。 这 种可重用的例程就是仪器驱动程序。有了仪器 驱动程序, 程序员无须知道低层的命令语法或
应用程序 交互式开发界面 ’ 函数面板 ( 程序开发接口 ’ )*% ( %&% 引擎
制特定仪器的一组函数。因为这些函数是用 用 /012345678 , 9&% 的 9 语言开发环境开发的, 户可以查看这些代码或根据自己的需要优化这 些代码。 ’ ; ( %&% 引擎 %&% 引擎监视仪器属性的状态并且缓存仪 器的状态。%&% 引擎与 %&% 仪器驱动程序结合工 作, 管理仪器属性的读写。 %&% 驱动程序与非 %&% 驱动程序的关键区别就在于非 %&% 驱动程序不 非 %&% 驱动程序通过直接的仪器 使用 %&% 引擎。 % , - 来查询和修改仪器的设置。 %&% 驱动程序则 通过仪器的属性来查询和修改仪器的设置。 ’ < ( 内部子例程接口 内部子例程接口经常被用来调用仪器驱动 程序支持函数,这些函数可以在仪器驱动程序 源文件中定义,也可以由已编译的外部模块提 供。 ’ = ( &%+) % , - 接口 仪器驱动程序的一个应该考虑的重要方面 是它们如何执行仪器 % , -。在 /012345678 , 9&% 仪器驱动程序体系结构中, % , - 接口是由一个 标准的并与平台无关的独立软件层 &%+) % , 接口提供的。 &%+)( &3>?@0A %48?>@BC4?0?364 +6D?: 70>C )>EF3?CE?@>C)% , - 接 口 是 G0?3640A %48?>@: BC4?8 公司的下一代 % , - 体系结构。 &%+) % , 接口是与控制器无关的,它可通过 H*%I、JK%、 嵌 入 式 &K% 和 H*%I L &K% 控 制 器 与 仪 器 通 信。对于 &%+) 不支持的接口, 程序员可使用其 它的 % , - 库。 # 仪器驱动程序内部设计模型 仪器驱动程序内部设计模型如图 ! 所示。 图示各部分的说明: ’ # ( 应用函数 应用函数是一些面向测量与测试的高层的 例程。一个应用函数将调用一系列的元件函数 来完成一个高层操作。 ’ ! ( 元件函数 元件函数分为七类: 初始化、 配置、 动作 , 状 态、 数据、 实用工具、 属性、 关闭。分别完成初始
!""# 年第 # 期
微电子学与计算机
$$
图%
采集到的波形
数 &’()* 将采集到的波形显示到 +,-&. 图形 控件中。在退出程序的回调函数中加入函数 )/)0123%45’(16 关闭应用程序和仪器的会话,释 放系统资源。这样就完成了一个简单的仪器应 用程序。运行此程序, 在界面中单击 “ 采集” 按 钮, 则显示采集到的波形 7 如图 % 所示 8 。 对于采集到的数据除了显示之外还可以进 行进一步的处理,比如信号的变换和低通、高 通、 带通滤波, 信号的频率、 相位、 振幅等特性的 确定。 由 以 上 过 程 我 们 可 以 看 出 使 用 9:;<=>? 0(@1 A BCD 作为开发工具,使用 DCD 仪器驱动程 序, 可以很容易的开发出软硬件紧密结合、 功能 强大的用于测量与测试的应用程序。 ! 结束语 虚拟仪器技术是开发自动测试系统的先进 技术。 9:;<=>0(@1 A BCD 是开发虚拟仪器测试系 统的强大开发环境。虚拟仪器测试系统是以软 件为核心的,软件与硬件紧密结合,协同工作 的。仪器驱动程序是连接软件与硬件的关键部 分。 DCD 仪器驱动程序是仪器驱动程序的最新标 准。 9:;<=>0(@1 A BCD 的仪器驱动程序体系结构 和 DCD 体系结构对使用 9:;<=>0(@1 A BCD 进行 虚拟仪器测试系统开发的技术人员来说是十分 重要的。
!""# 年第 # 期
微电子学与计算机
$#
的每一个操作之后自动检查仪器的状态寄存 器, 为了加快执行速度也可以取消这个功能。 ’ . ( 仪器仿真 %&% 驱动程序可以在没有仪器的条件下模 拟对仪器的操作, 返回模拟的数据。 有了这个特 性,程序员可以在实际的仪器并不存在的情况 下使用仪器驱动程序开发应用程序的代码。 ! 仪器驱动程序的外部接口模型 仪器 驱动程 序的 外部接 口模 型如图 " 所 示。
% & 函数之前,打开 0/C,-HI*/, 菜单,选择 )*+R 在出现的 ,-./01 )23 4567 8 9 6 JCK0LL.CK.E*D D D , 选择函数面板对话框中选择 ’/0,0>L0S* @0,T JER ,0./C,则出现函数 ,+,AC456U’/0,@0,TJE,0./C 的面 板, 如图 ! 所示。
图! 函数 ,+,AC456U’/0,@0,TJE,0./C 的面板
设置各参数将函数插入代码中。此函数建 立一个应用程序到仪器的会话,并初始化几个 仪器的设置, 即初始化函数。 然后用类似方法加 入 两 个 配 置 函 数 ,+,AC456U9./G0VH-*(*-,0K>L 和 ,+,AC456U9./G0VH-* N.-0S./,>L 将仪器的水平子系 统和垂直子系统配置为合适的状态,以便采集 波形 。 在 按 钮 控 件 的 回 调 函 数 中 加 入 函 数 ,+,AC456UM*>A@>W*G.-I 从数字示波器中采集波 形。然后加入 =>?@0/A.BC 8 9(’ 所提供的库函
例如, 对于一台 )*+,-./01 )23 4567 8 9 6 通 道数字示波器, 可通过仪器的 :;’< 接口将其与 计算机相连。 在 =>?@0/A.BC 8 9(’ 中新建一个项 目文件 0/C,-D E-F, 在项目文件中加入仪器所带的 ,+,AC456D GE 文件。该文件包括仪器驱动程序的 函数面板, 加入之后在 0/C,-HI*/, 菜单中即出现 )*+,-./01 )23 4567 8 9 6 JCK0LL.CK.E*D D D 选项。 在项目文件中新建一个用户界面文件 0/C,-D H0-, 在用户界面文件中加入一个 :M7;N 图形控件 和一个 9JOO7P2<Q))JP 按钮控件,其中按 钮控件的标题设置为 “ 采集” ,并分别定义控件 的回调函数。 使用 =>?@0/A.BC 8 9(’ 的自动产生 代码功能产生基本的代码框架,将产生的 9 源 文件保存为 0/C,-D K。在产生代码框架的同时也 自动产生了所需的头文件。 然后添加必要的仪器驱动程序函数。打开 将光标停留在主函数中 MH/QC*-’/,*-G>K* 0/C,-D K,
!"
微电子学与计算机
#""$ 年第 $ 期
!"#$%&’()* ! +,- 仪器驱动程序与 -,- 体系结构
曲鲁宁 陈作人
% 西安微电子技术研究所, 西安 &$""’( )
摘 要:文章介绍和讨论了 8/9:+2;<=3 > ?*1 仪器驱动程序的体系结构和 1*1 体系结构, 说明了 8/9:+2A