版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 运用传统言语开发测控软件5.3 在Visual C+窗口中调用VISA5.2 开发简单VISA程序5.1 VISA简介及其函数简介5.4 Visual C+综合测控系统开发.5.1 VISA简介及其函数简介5.1.1什么是VISA5.1.2VISA的开展现状5.1.3VISA种类5.1.4VISA函数简介.5.1.1 什么是VISAVISA是虚拟仪器软件构造(Virtual Instrument Software Architecture)的简称,是由VXI plug & play(VPP)系统联盟所一致制定的I/O接口软件规范及其相关规范的总称。普通称这个I/O函数库为VISA库用于
2、仪器编程的规范I/O函数库。VISA函数库驻留于计算机系统中,是计算机与仪器之间的规范软件通讯接口,用以实现对仪器的控制。.5.1.1 什么是VISA包含GPIB、VXI、PXI、串口(RS232/485)、以太网、USB和/或IEEE 4接口的仪器系统进展配置、编程和缺点排除的规范。.什么是SICLSICL (Standard Instrument Control Library) is an I/O library developed by Agilent that is portable across many I/O interfaces and systems.A platform-
3、independent API for software to control and test electronic instruments conforming to IEEE 488. A goal of SICL is to make instrument programming in C more viable than it is today.5.1.2 VISA的开展情况VISA规范是VPP规范的中心内容,其中规定了VISA库的函数名、参数定义及前往代码等。和分别对文本言语C/C+和Visual Basic和图形言语LabVIEW实现VISA时的VISA数据类型与各种言语特定数据
4、类型的对应关系、前往代码、常量等进展了定义。VISA3.0由IVI(Interchangeable Virtual Instruments )基金维护。.5.1.3 VISA种类NI-VISA大体分2种Agilent-VISA.VISA-COM和VISA-CVISA-COM:VISA COM I/O是基于VISA I/O 架构的。VISA中的根本单元是资源会话,即表示与物理资源的一个衔接。某些资源支持同时多个会话,但一个会话在整个会话期间只能针对一个物理资源。在VISA COM,一个COM对象表示一个VISA资源会话。The COM object is only considered a VI
5、SA resource during the portion of its lifetime between initialization (via the objects Init method or creation by a Resource Manager) and closing (either destruction of the object upon the reference count going to zero or a call to the Close() method, whichever comes first).扩展引见-COM组件对象模型1Components
6、 Object Model (COM) 是软件组件相互通讯的一种方式。2是一种二进制和网络规范,允许恣意两个组件相互通讯,而不论它们是在什么计算机上运转,不论各计算机运转的是什么操作系统只需该操作系统支持 COM,也不论该组件是用什么言语编写的。3软件的复用率提高,使软件的运用效率得到提高并延伸了运用寿命。组件编程体系使大量的编程问题部分化了,使软件的更新和维护变得快速和容易,软件的本钱大大降低。 .VISA-COM和VISA-CVISA-C:规范C言语接口VISA.5.1.4 VISA函数简介viOpenDefaultRM必须首先使用该函数通过缺省的资源管理器打开一个会话。该函数初始化缺省的
7、资源管理器并返回指向该资源管理会话的一个指针。viOpen 该函数与指定的设备建立一个通信信道。在使用设备前必须调用该函数。其它VISA函数使用该函数返回的会话标识符来操作设备。viPrintf /viScanfVISA格式化I/O 函数。调用viPrintf将IEEE 488.2 *RST命令发送给仪器;调用viScanf 函数读取仪器的结果。viClose 必须使用该函数来关闭每个会话。当关闭会话后,释放为会话所分配的所有的数据结构 。当关闭缺省的资源管理器会话后,使用缺省的资源管理器会话的会话将全部关闭。.viOpenDefaultRMviOpenDefaultRM(ViPSession
8、 sesn);参数:前往值:ViStatus名称输入/输出类型描述sesn输出ViPSession对缺省资源管理器会话的唯一标识符代码描述VI_SUCCESS操作成功VI_ERROR_ALLOC创建缺省资源管理器会话时系统资源不足。VI_ERROR_INV_SETUP某些配置文件损坏或不存在。VI_ERROR_SYSTEM_ERRORVISA系统初始化失败.viOpen viOpen(ViSession sesn, ViRsrc rsrcName, ViAccessMode accessMode, ViUInt32 timeout, ViPSession vi);参数:前往值:ViStatus
9、名称输入/输出类型描述sesn输入ViSession资源管理器会话rsrcName输入ViRsrc资源的唯一的符号名字(VISA名字)accessMode输入ViAccessMode资源访问模式(如独占)timeout输入ViUInt32超时时间vi输出ViPSession唯一的会话逻辑标识符引用代码描述VI_SUCCESS操作成功.viPrintf viPrintf(ViSession vi, ViString writeFmt, arg1, arg2,.);参数:前往值:ViStatus名称输入/输出类型描述vi输入ViSession唯一的逻辑会话标识符writeFmt输入ViString
10、描述参数格式的字符串arg1, arg2输入-格式字符串对应的参数代码描述VI_SUCCESS操作成功.viScanf viScanf(ViSession vi, ViString readFmt, arg1, arg2,.);参数:前往值:ViStatus名称输入/输出类型描述vi输入ViSession唯一的逻辑会话标识符readFmt输入ViString描述参数格式的字符串arg1, arg2输出-格式字符串对应的参数代码描述VI_SUCCESS操作成功.viReadviRead(ViSession vi, ViPBuf buf, ViUInt32 count, ViPUInt32 ret
11、Count);参数:前往值:ViStatus同前名称输入/输出类型描述vi输入ViPSession唯一的逻辑会话标识符buf输入ViPBufRepresents the location of a buffer to receive data from device.count输入ViUInt32Number of bytes to be read.retCount输出ViPUInt32Represents the location of an integer that will be set to the number of bytes actually transferred.viWrit
12、eviWrite(ViSession vi, ViBuf buf, ViUInt32 count, ViPUInt32 retCount);参数:前往值:ViStatus同前名称输入/输出类型描述vi输入ViPSession唯一的逻辑会话标识符buf输入ViPBufRepresents the location of a data block to be sent to device.count输入ViUInt32Specifies number of bytes to be written.retCount输出ViPUInt32Represents the location of an in
13、teger that will be set to the number of bytes actually transferred.viMoveInviMoveIn8(ViSession vi, ViUInt16 space, ViBusAddress offset, ViBusSize length, ViAUInt8 buf8);参数:前往值:ViStatus名称输入/输出类型描述vi输入ViPSession唯一的逻辑会话标识符space输入ViPBuf指明地址空间offset输入ViUInt32要读取的开始地址或者寄存器偏移length输入ViPUInt32要传输的数据的长度buf8输
14、出ViAUInt8从总线读取的数据代码描述VI_SUCCESS操作成功.viMoveOutviMoveOut8(ViSession vi, ViUInt16 space, ViBusAddress offset, ViBusSize length, ViAUInt8 buf8);参数:前往值:ViStatus名称输入/输出类型描述vi输入ViPSession唯一的逻辑会话标识符space输入ViPBuf指明地址空间offset输入ViUInt32要写入的开始地址或者寄存器偏移length输入ViPUInt32要传输的数据的长度buf8输出ViAUInt8写到总线的数据代码描述VI_SUCCES
15、S操作成功.viPokeviPoke8(ViSession vi, ViAddr addr, ViUInt8 val8); 参数:前往值:无名称输入/输出类型描述vi输入ViPSession唯一的逻辑会话标识符addr输入ViPBufSpecifies the destination address to store the value.val8输出ViUInt32Data write tobus .viPeekviPeek8(ViSession vi, ViAddr addr, ViPUInt8 val8);参数:前往值:无名称输入/输出类型描述vi输入ViPSession唯一的逻辑会话标识
16、符addr输入ViPBufSpecifies the source address to read the value.val8输出ViUInt32Data read from bus .viClose viClose(ViSession/ViEvent/ViFindList vi);参数:前往值:ViStatus名称输入/输出类型描述vi输入ViSessionViEventViFindlist对会话、事件、寻找列表的唯一标识符代码描述VI_SUCCESS操作成功VI_WARN_NULL_OBJECT指定对象的引用未初始化VI_ERROR_CLOSING_FAILED不能释放为该会话和资源分配
17、的数据结构VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECT给定的会话为无效.5.2 开发VISA程序Microsoft Visual C+ Version 6.0 开发环境:点击File菜单创建一个空的控制台工程。选择菜单Project-Settings,点击C/C+标签。从Category下拉框选择 Code Generation,从Use Run-Time Libraries 下拉框选择Multi-Threaded DLL。点击Link标签,将visa32.lib新版agilent的VISA库为agvisa32.lib添加到Object/Library Mod
18、ules框中。添加头文件#include “visa.h编写程序.步骤1.步骤1.步骤1.步骤2.步骤3留意:新版agilent的VISA库为了跟NI-VISA区别,改成agvisa32.lib.步骤4留意:有的途径能够是C:VXIPNPWinNTagvisainclude.步骤4留意:有的途径能够是C:VXIPNPWinNTagvisalibmsc.步骤4.步骤4运转程序.步骤5添加头文件#include “visa.h.步骤6编写程序:#include #include #include void main () ViSession defaultRM, vi;char buf 256 =
19、 0;/* Open session to GPIB device at address 22 */viOpenDefaultRM(&defaultRM);viOpen(defaultRM, GPIB0:22:INSTR,VI_NULL,VI_NULL, &vi);/* Initialize device */viPrintf(vi, *RSTn);.步骤6/* Send an *IDN? string to the device */viPrintf(vi, *IDN?n);/* Read results */viScanf(vi, %t, buf);/* Print results */p
20、rintf(Instrument identification string: %sn, buf);/* Close session */viClose(vi);viClose(defaultRM);getch();.5.2.1 接口类型.5.2.1 接口类型.5.2.2 接口类型举例.5.2.2 接口类型举例.5.2.3 Agilent VISA COM I/O资源类.5.2.4 VISA COM程序#import “C:VXIPNPvisacomGlobMgr.dll no_namespace int main() IResourceManagerPtr rm; IMessagePtr p
21、tr; _bstr_t idn; CoInitialize(NULL); .5.2.4 VISA COM程序try / Instantiate the Global Resource Manager rm.CreateInstance(_uuidof(ResourceManager); /* Open the session with the default values for the Lock (None), Timeout(N/A), and OptionString (). The return value is an IVisaSession, but the ptr variabl
22、e is an IMessage interface reference, causing an implicit IUnknown:QueryInterface() to occur. The _com_ptr_t smart pointer class that wraps the interfaces (courtesy of #import) handles the details. */ .5.2.4 VISA COM程序ptr = rm-Open(GPIB0:22, NO_LOCK, 0, ); ptr-WriteString(*IDN?n); idn = ptr-ReadStri
23、ng(1000); MessageBox(NULL, idn, IDN? Result, MB_OK); catch(_com_error &err) MessageBox(NULL, err.Description(), Error Occurred, MB_OK); return 0; CoUninitialize(); return 1;.5.2.5 Agilent I/O Libray Suite Agilent I/O Libray Suite Agilent I/O Libray Suite 14.5.3在Visual C+窗口中调用VISA5.
24、3.1Visual C+深化引见5.3.2NI Measurement Studio5.3.3窗口中调用VISA.5.3.1 Visual C+深化引见Visual C+是一个功能强大的可视化软件开发工具。特征Visual C+6.0由Microsoft开发, 它不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境integrated development environment,IDE。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序导游AppWizard、类导游Class Wizard等开发工具。 这些组件经过一个名为Developer St
25、udio的组件集成为调和的开发环境。Microsoft的主力软件产品。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世。.5.3.1 Visual C+深化引见Visual C+6.0以拥有“语法高亮,自动编译功能以及高级除错功能而著称。比如,它允许用户进展远程调试,单步执行等。还有允许用户在调试期间重新编译被修正的代码,而不用重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间破费,在大型软件方案上尤
26、其显著。.5.3.1 Visual C+深化引见缺陷由于C+是由C言语开展起来的,也支持C言语的编译。6.0版本是运用最多的版本,很经典。最大的缺陷是对于模版的支持比较差。如今最新补丁为SP6,引荐安装,否那么易出现编译时假死形状。仅支持Windows操作系统。目前发现与windows 7兼容性不好,安装胜利后能够会出现无法翻开cpp文件的景象。.5.3.1 Visual C+深化引见主要部分Developer Studio 这是一个集成开发环境,我们日常任务的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+,所以很多人理所当然的以为,那就是Visual
27、 C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实践上它没有任何编译和链接程序的功能,真正完成这些任务的幕后英雄后面会引见。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C+, 它充其量只是Visual C+的一个壳子而已。.5.3.1 Visual C+深化引见2.MFC 从实际上来讲,MFC也不是公用于Visual C+,Borland C+,C+Builder和Symantec C
28、+同样可以处置MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只需情愿,用Visual C+来编写SDK程序,或者运用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和言语扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于丢弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。.5.3.1 Visual C+深化引见3.Platform SDK这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform
29、SDK是以Microsoft C/C+编译器为中心不是Visual C+,看清楚了,配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项任务是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。.5.3.1 Visual C+深化引见.5.3.2 NI Measurement StudioNI Measurement Studio 是为Visual Studio .NET和Visual Studio 6.0环境提供的一个集成式套件,包括各种常用的丈量和自动化控件、
30、工具和类库。NI Measurement Studio带有的ActiveX和.NET控件、面向对象的丈量硬件接口、高级的分析库、科学的用户界面控件、丈量数据网络化、导游、交互式代码设计器和高扩展性类库等功能,极大的减少了您运用程序的开发时间。.5.3.2 NI Measurement Studio为 C+ 提供的功能 Measurement Studio为在Visual C+中开发丈量和自动化系统提供了一个交互式设计方式。由于这些工具被集成到Visual C+开发环境中,因此您可以像运用微软工具一样直接调用它们。您也可以利用Measurement Studio 运用导游 (AppWizard)
31、 以及控件和类库,轻松创建您的C+丈量系统。运用导游根据您的特定要求创建一个工程,包含一个代码模板和设计运用程序时所需求的丈量工具。这些工具包含了用于仪器控制、数据采集、数据分析和经过因特网实时传输数据所需求的C+类库。此外,自定义控件可创建您本人的丈量用户界面。数据对象类库实现了数据从采集到分析再到显示的无缝封装和传输,将丈量类库和界面控件衔接到了一同。.5.3.2 NI Measurement Studio为 C+ 提供的功能 Measurement Studio企业版和专业版继续提供在 Visual C+ 6.0和Visual Basic 6.0环境下开发所需的ActiveX控件和类库。
32、利用交互式ActiveX属性页面,您可以为模拟输入和输出、数字I/O、GPIB、VISA以及更多的设备图形化配置数据采集和仪器控制运用程序。科学分析库包括了很多常用函数,如快速傅立叶变换Fast Fourier transforms、频谱丈量和数组操作等。此外,包含在Measurement Studio 里的ActiveX用户界面控件专为使您创建一个好像真实世界仪器的虚拟仪器系统而设计。.5.3.2 NI Measurement Studio.5.3.2 NI Measurement Studio.5.3.2 NI Measurement Studio.5.3.2 NI Measurement
33、 Studio例:模拟温度采集.5.3.2 NI Measurement Studiovoid CMoniDlg:OnTimer(UINT nIDEvent) if(m_Switch.GetValue() m_SliderS.SetValue(rand()%100);else m_SliderH.SetValue(rand()%100)*1.8+32);CDialog:OnTimer(nIDEvent);.5.3.2 NI Measurement Studiovoid CMoniDlg:OnBtnStart() / TODO: Add your control notification handler code hereSetTimer(1,200,NULL);void CMoniDlg:OnButtonStop() / TODO: Add your control notificatio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年七年级上音乐《中学时代》说课稿
- 2025-2026学年地球的呼吸说课稿
- 铸管工创新应用考核试卷含答案
- 2025-2026学年《亡羊补牢》说课稿
- 家政服务员成果知识考核试卷含答案
- 人工影响天气特种作业操作员安全文化水平考核试卷含答案
- 2025-2026学年哈巴狗说课稿故事导入
- 微波通信机务员工作效率强化考核试卷含答案
- 石灰煅烧工安全风险能力考核试卷含答案
- 水解蒸煮工改进水平考核试卷含答案
- 山东省名校联盟2027届高三上学期开学全域学情综合诊断语文试卷(含答案)
- 事业编计算机岗2026易错题试卷及解析
- 2026年广东省中考化学试卷(含答案)
- 眼眶骨折诊疗专家共识(2026版)
- 食道裂孔疝常见症状及护理方法
- 2026 全国职工职业技能竞赛 人工智能训练师赛项 终极备赛题库 800题 附答案
- 2026年南宁职业技术学院单招职业技能测试题库带答案详解(考试直接用)
- 早产与过期妊娠课件
- 智鼎在线测评题库IQT答案
- 华师一附中【圆锥曲线】专题训练汇编
- 校园小导游测试卷(单元测试)2025-2026学年二年级数学上册(人教版)
评论
0/150
提交评论