动程序设计主讲-乔立岩Emailqiaoliyan@hiteducn(交作业).pptVIP

  • 1
  • 0
  • 约6.02千字
  • 约 34页
  • 2018-05-18 发布于江苏
  • 举报

动程序设计主讲-乔立岩Emailqiaoliyan@hiteducn(交作业).ppt

第三讲 虚拟仪器驱动程序设计 主讲:乔立岩 Email: qiaoliyan@ (交作业) MSN: qiaoliyan@(在线交流) Tel:ext. 8611 (逸夫楼611) 仪器驱动程序的历史 基本的台式系统,GPIB仪器(解释语言BASIC) ——70年代中期 个人计算机的影响,插卡式仪器(编译语言C)——80年代 可程控仪器标准命令 (SCPI, 488.2)——90年代初期 模块化仪器驱动程序(Driver) VXI即插即用仪器驱动程序( VXIplugplay, VPP) ——1993年 可互换虚拟仪器驱动程序(IVI)——1997年,还在不断完善 仪器驱动程序的概念 仪器驱动程序是一套可被用户调用的子程序库,利用它就不必了解每个仪器的编程协议和具体编程步骤,只需调用相应的一些函数就可以完成对仪器各种功能的操作。 仪器驱动程序一般是控制物理仪器的,但也有的是纯软件工具。 一、 VXIplugplay 规范 1993年NI、Tektronics、Racal等著名仪器公司成立了VXIplugplay 联盟并制定了VXIplugplay 规范,简称VPP规范。 VPP联盟目标:提高VXI技术最终用户的使用简易性。 VPP规范目的:解决多生产厂家的VXI系统的易操作性和互操作性问题,并提供给用户进行系统维护、再开发的能力。 VPP联盟网址: 1. VPP 规范的特点 由仪器生产厂家提供 提供程序源代码 程序结构化与模块化 设计与实现的一致性 兼容性与开放性 VPP规范对仪器驱动程序的要求不仅适用于VXI仪器,也同样适用于GPIB仪器、PXI仪器、串行口仪器、网络仪器、USB仪器等。已经成为了虚拟仪器驱动程序设计的事实标准。 2. VPP规范的内容 3. 虚拟仪器系统框架 二、 仪器驱动程序设计(VPP-3) 3. 函数树 函数树就是驱动程序为仪器提供的所有仪器函数的列表及分组关系。 按照VPP仪器驱动程序内部设计模型的要求,对于任何仪器,都应有最小函数树。 最小函数树包括初始化、关闭、错误消息、错误查询、复位,自检和版本查询,还应包括至少一个功能函数。 4. 函数面板 函数树中的每一个函数都应具有函数面板,它是对仪器驱动程序函数的图形化描述。 函数面板的帮助 函数帮助:描述面板上的函数功能和相关的辅助函数。 控件帮助:对应函数的输入和输出参数,列举参数名,并描述参数,变量类型,有效范围和错误值。 返回帮助:描述返回值变量类型和可能的错误值。 5. 函数面板和函数树设计 LabWindows/CVI提供函数面板的设计工具 设计步骤: 了解仪器功能,根据功能规划编辑函数面板树。 规划函数树,在最小树基础上扩充。 生成仪器驱动程序工程文件(.prj) 设计函数树和函数面板(.fp, .c, .h) 完成驱动程序每个函数的代码(.c) 编译调试,生成动态链接库 三、 VISA(VPP-4) VISA:Virtual Instrumentation Software Architecture,即虚拟仪器软件结构,是VPP系统联盟制定的I/O接口软件标准及其相关规范的总称。 VISA为虚拟仪器提供了标准化的I/O接口软件规范。VISA是整个工业界的统一的软件基础。 虚拟仪器软件结构中的标准 I/O 接口软件称为VISA库。 1. VISA的作用 为整个工业界提供统一的软件基础 对驱动程序、应用程序不必考虑接口类型 仅规定为用户提供的标准函数,不对具体实现作任何说明 用于编写符合VPP规范的仪器驱动程序,完成计算机与仪器之间的命令和数据传输,实现对仪器的控制。 VISA库作为低层 I/O 接口软件,运行于计算机系统中。 2. VISA的特点 适用于各类仪器:VXI, PXI, GPIB, RS-232, TCP, USB… … 与硬件接口无关 既适用于单处理器结构又适用于多处理器或分布式结构 适用于多种网络机制 3. VISA库函数 资源管理类函数 viOpenDefaultRM (ViPSession Rsrc_Manager_Handle); viOpenDefaultRM(defaultRMHandle); ViStatus viOpen (ViSession Rsrc_Manager_Handle, ViRsrc Instrument_Descriptor, ViAccessMode Access_Mode, ViUInt32 Open_Timeout, ViPSession Instrument_Handle); viOpen (defaultRMHandle, VXI0::24::INSTR, VI_NULL, VI_NULL, dmmHandle); ViStatus viClose

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档