- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于VISA库的任意波形发生器驱动程序的开发设计
第三章 基于VISA库的驱动程序的研究
本章简介:VXI总线以其良好的测控性能成为虚拟仪器的一个重要发展方向,作为一个开放式的测控系统,虚拟仪器软件结构(VISA)为不同厂商的VXI器件的驱动程序提供了统一的软件基础。本文通过对VISA库及VXIplug play规范的介绍来阐述仪器驱动程序的开发,并描述了VXI总线寄存器基器件任意波形发生器驱动程序的设计与实现。
3.1 VISA简介
随着VXI仪器的广泛使用,出现了相应的的I/O控制软件,由于不同厂商的硬件提供的I/O库不同,仪器驱动程序不兼容,仪器之间很难集成。VXIplugplay联盟的宗旨是通过开放的、不同厂商的VXI系统使得VXI技术的最终用户可简便使用VXI仪器。联盟制定了Virtual Instrument Software Architecture,即虚拟软件结构(VISA)。VISA是一个标准的独立于硬件设备、接口、操作系统、编程语言和网络环境的I/O控制库,目的是处理计算机与仪器间物理连接的通信细节。通过VISA,由不同硬件接口(如GPIB、VXI或RS232等)连接的设备可以集成到一个系统中,由一个软件完成所有仪器设备的控制。因此,VISA是生成虚拟仪器驱动程序的软件基础。
本文所介绍的仪器驱动程序是在LabWindows/CVI环境下开发的。LabWindows/CVI为基于C语言的应用程序开发环境(ADE)。ADE通过驱动程序头文件,获得有关仪器驱动程序函数的必要信息。LabWindows/CVI提供了VISA库的各类函数,用户在开发驱动程序时可方便的调用其中的函数。
3.1.1 VISA资源模板
VISA模板为所有应用程序提供基本的资源控制服务,包括控制与资源或器件间的通话使用期和控制资源特性等。
1 使用期控制
VISA控制器件通话、查找列表和事件的使用期。当这些控制使用完毕之后,可用viClose( )释放与之相关的系统资源。
2 访问控制
应用程序可以同时打开多个与VISA资源的通话,也可以同时通过不同的通话句柄同时访问资源。在某些情况下,访问VISA资源的应用程序希望禁止别的应用程序访问该资源。为此,VISA定义一种锁定机制来限制对资源的访问。锁定资源的操作是调用函数viLock( ),解锁的操作是调用函数viUnLock( )。
访问控制服务
viLock(ViSession instr,ViAccessMode lockType,ViUInt32 timeout,ViKeyId requestedKey,ViKeyId accessKey);
LockType表示请求锁定的类型,它有两个值,要么是VI_EXCLUSIVE_LOCK,表示独占锁定;要么是VI_SHARED_LOCK,表示共享锁定。
timeout表示超时设置,即在设定的时间内未完成操作,则返回错误码。否则忽略此参数,此时timeout值取VI_NULL。
viUnLock(ViSession instr);
该操作取消对指定资源的锁定。
3.1.2 VISA资源管理函数
VISA资源管理器为应用程序提供基本服务,包括查找资源和打开与资源的通话。下面简述这些服务:
访问函数和操作
资源管理器允许打开与资源的通话,通话由应用程序请求而建立。在应用程序关闭通话或功能失常时系统负责释放与通话相关的全部系统资源。
viOpenDefaultRM(ViPSession defaultRM);
该函数必须在调用任何VISA操作之前调用。第一次调用该函数使VISA系统初始化,包括初始化默认资源,同时返回与该资源的通话。对函数的再次调用返回与默认资源的另一唯一通话。许多VXIplugplay仪器驱动程序要求输入作为通话句柄的参数以便识别目标仪器。为了给开发者提供使用模型的一致性,必须定义这个参数的类型和位置,VISA要求这种函数的通话句柄定义为ViSession类型,并要求它是参数表中的第一个参数。ViPSession型数据为ViSession型数据的地址。
viOpen(ViSession defaultRm,ViRsrc rsrcName,ViAccesssMode accessMode,ViUInt32 timeout,ViPSession instr)
本操作打开与指定器件的通话并返回调用此器件其它操作的通话标识符instr。defaultRM为由viOpenDefaultRM( )返回的与VISA默认资源通话的唯一逻辑标识符。在参数表中用到两个通话标识符defaultRM、instr,ViOpen( )是在已知的资源上操作,defaultRM为与该资源通话的标识符,相当于与此资源的通讯的通道,而实际上我们想与具体的器件通话,这就是返回的与该器件通话的标
文档评论(0)