收藏 分享(赏)

LabVIEW第5章使用传统语言开发测控软件.ppt

上传人:精品资料 文档编号:5044960 上传时间:2019-02-02 格式:PPT 页数:70 大小:6.03MB
下载 相关 举报
LabVIEW第5章使用传统语言开发测控软件.ppt_第1页
第1页 / 共70页
LabVIEW第5章使用传统语言开发测控软件.ppt_第2页
第2页 / 共70页
LabVIEW第5章使用传统语言开发测控软件.ppt_第3页
第3页 / 共70页
LabVIEW第5章使用传统语言开发测控软件.ppt_第4页
第4页 / 共70页
LabVIEW第5章使用传统语言开发测控软件.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

1、Company Logo,第5章 使用传统语言开发测控软件,5.3 在Visual C+窗口中调用VISA,5.2 开发简单VISA程序,5.1 VISA简介及其函数简介,5.4 Visual C+综合测控系统开发,5.1 VISA简介及其函数简介,5.1.1,什么是VISA,5.1.2,VISA的发展现状,5.1.3,VISA种类,5.1.4,VISA函数简介,5.1.1 什么是VISA,VISA是虚拟仪器软件结构(Virtual Instrument Software Architecture)的简称,是由VXI plug & play(VPP)系统联盟所统一制定的I/O接口软件标准及其相

2、关规范的总称。,一般称这个I/O函数库为VISA库(用于仪器编程的标准I/O函数库)。VISA函数库驻留于计算机系统中,是计算机与仪器之间的标准软件通信接口,用以实现对仪器的控制。,5.1.1 什么是VISA,包含GPIB、VXI、PXI、串口(RS232/485)、以太网、USB和/或IEEE 1394接口的仪器系统进行配置、编程和故障排除的标准。,什么是SICL,SICL (Standard Instrument Control Library) is an I/O library developed by Agilent that is portable across many I/O

3、interfaces and systems.,A platform-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规范的核心内容,其中VPP4.3 :VISA库规定了VISA库的函数名、参数定义及返回代码等。,VPP4.3.2 :文

4、本语言的VISA实现规范和VPP4.3.3 :图形语言的VISA实现规范分别对文本语言(C/C+和Visual Basic)和图形语言(LabVIEW)实现VISA时的VISA数据类型与各种语言特定数据类型的对应关系、返回代码、常量等进行了定义。,VISA3.0由IVI(Interchangeable Virtual Instruments )基金维护。,5.1.3 VISA种类,NI-VISA,大体分2种,Agilent-VISA,VISA-COM和VISA-C,VISA-COM:VISA COM I/O是基于VISA I/O 架构的。VISA中的基本单元是资源会话,即表示与物理资源的一个连

5、接。某些资源支持同时多个会话,但一个会话在整个会话期间只能针对一个物理资源。在VISA COM,一个COM对象表示一个VISA资源会话。The COM object is only considered a VISA 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 refer

6、ence count going to zero or a call to the Close() method, whichever comes first).,扩展介绍-COM组件对象模型,VISA-COM和VISA-C,VISA-C:标准C语言接口VISA,5.1.4 VISA函数简介,viOpenDefaultRM,viOpenDefaultRM(ViPSession sesn); 参数:返回值:ViStatus,viOpen,viOpen(ViSession sesn, ViRsrc rsrcName, ViAccessMode accessMode, ViUInt32 timeou

7、t, ViPSession vi); 参数:返回值:ViStatus,viPrintf,viPrintf(ViSession vi, ViString writeFmt, arg1, arg2,.); 参数:返回值:ViStatus,viScanf,viScanf(ViSession vi, ViString readFmt, arg1, arg2,.); 参数:返回值:ViStatus,viRead,viRead(ViSession vi, ViPBuf buf, ViUInt32 count, ViPUInt32 retCount); 参数:返回值:ViStatus(同前),viWrite

8、,viWrite(ViSession vi, ViBuf buf, ViUInt32 count, ViPUInt32 retCount); 参数:返回值:ViStatus(同前),viMoveIn,viMoveIn8(ViSession vi, ViUInt16 space, ViBusAddress offset, ViBusSize length, ViAUInt8 buf8); 参数:返回值:ViStatus,viMoveOut,viMoveOut8(ViSession vi, ViUInt16 space, ViBusAddress offset, ViBusSize length,

9、 ViAUInt8 buf8); 参数:返回值:ViStatus,viPoke,viPoke8(ViSession vi, ViAddr addr, ViUInt8 val8); 参数:返回值:无,viPeek,viPeek8(ViSession vi, ViAddr addr, ViPUInt8 val8); 参数:返回值:无,viClose,viClose(ViSession/ViEvent/ViFindList vi); 参数:返回值:ViStatus,5.2 开发VISA程序,Microsoft Visual C+ Version 6.0 开发环境: 点击File菜单创建一个空的控制台

10、工程。 选择菜单Project-Settings,点击C/C+标签。 从Category下拉框选择 Code Generation,从Use Run-Time Libraries 下拉框选择Multi-Threaded DLL。 点击Link标签,将visa32.lib(新版agilent的VISA库为agvisa32.lib)添加到Object/Library Modules框中。 添加头文件#include “visa.h” 编写程序,步骤1,步骤1,步骤1,步骤2,步骤3,注意:新版agilent的VISA库为了跟NI-VISA区别,改成agvisa32.lib,步骤4,注意:有的路径可

11、能是C:VXIPNPWinNTagvisainclude,步骤4,注意:有的路径可能是C:VXIPNPWinNTagvisalibmsc,步骤4,步骤4,运行程序,步骤5,添加头文件#include “visa.h”,步骤6,编写程序: #include #include #include void main () ViSession defaultRM, vi; char buf 256 = 0; /* Open session to GPIB device at address 22 */ viOpenDefaultRM(,步骤6,/* Send an *IDN? string to th

12、e device */ viPrintf(vi, “*IDN?n“); /* Read results */ viScanf(vi, “%t“, buf); /* Print results */ printf(“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

13、VISA COM程序,#import “C:VXIPNPvisacomGlobMgr.dll“ no_namespace int main() IResourceManagerPtr rm;IMessagePtr ptr;_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

14、Lock (None), Timeout(N/A), and OptionString (“). The return value is an IVisaSession, but theptr variable is an IMessage interface reference, causing an implicitIUnknown:QueryInterface() to occur. The _com_ptr_t smart pointer classthat wraps the interfaces (courtesy of #import) handles the details.*

15、/,5.2.4 VISA COM程序,ptr = rm-Open(“GPIB0:22“, NO_LOCK, 0, “);ptr-WriteString(“*IDN?n“);idn = ptr-ReadString(1000);MessageBox(NULL, idn, “IDN? Result“, MB_OK); catch(_com_error ,5.2.5 Agilent I/O Libray Suite 14,5.2.5 Agilent I/O Libray Suite 14,5.2.5 Agilent I/O Libray Suite 14,5.3在Visual C+窗口中调用VISA

16、,5.3.1,Visual C+深入介绍,5.3.2,NI Measurement Studio,5.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等开发工具。 这些组件通过一个名为

17、Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世。,5.3.1 Visual C+深入介绍,Visual C+6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的

18、时间花费,在大型软件计划上尤其显著。,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+”,所以很多人理

19、所当然的认为,那就是Visual 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+Bu

20、ilder和Symantec C+同样可以处理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的精华和灵魂,虽然我们很少能直接接触

21、到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。,5.3.1 Visual C+深入介绍,5.3.2 NI Measurement Studio,NI Measurement Studio 是为Visual Studio .NET和Visual Studio 6.0环境提供的一个集成

22、式套件,包括各种常用的测量和自动化控件、工具和类库。NI Measurement Studio带有的ActiveX和.NET控件、面向对象的测量硬件接口、高级的分析库、科学的用户界面控件、测量数据网络化、向导、交互式代码设计器和高扩展性类库等功能,极大的减少了您应用程序的开发时间。,5.3.2 NI Measurement Studio,为 C+ 提供的功能,Measurement Studio为在Visual C+中开发测量和自动化系统提供了一个交互式设计方式。由于这些工具被集成到Visual C+开发环境中,因此您可以像使用微软工具一样直接调用它们。您也可以利用Measurement St

23、udio 应用向导 (AppWizard) 以及控件和类库,轻松创建您的C+测量系统。应用向导根据您的特定要求创建一个项目,包含一个代码模板和设计应用程序时所需要的测量工具。这些工具包含了用于仪器控制、数据采集、数据分析和通过因特网实时传输数据所需要的C+类库。此外,自定义控件可创建您自己的测量用户界面。数据对象类库实现了数据从采集到分析再到显示的无缝封装和传输,将测量类库和界面控件连接到了一起。,5.3.2 NI Measurement Studio,为 C+ 提供的功能,Measurement Studio企业版和专业版继续提供在 Visual C+ 6.0和Visual Basic 6.

24、0环境下开发所需的ActiveX控件和类库。利用交互式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 Stu

25、dio,5.3.2 NI Measurement Studio,例:模拟温度采集,5.3.2 NI Measurement Studio,void CMoniDlg:OnTimer(UINT nIDEvent) if(m_Switch.GetValue()m_SliderS.SetValue(rand()%100);elsem_SliderH.SetValue(rand()%100)*1.8+32);CDialog:OnTimer(nIDEvent); ,5.3.2 NI Measurement Studio,void CMoniDlg:OnBtnStart() / TODO: Add you

26、r control notification handler code hereSetTimer(1,200,NULL); void CMoniDlg:OnButtonStop() / TODO: Add your control notification handler code hereKillTimer(1); ,5.3.2 NI Measurement Studio,例:模拟波形输出,5.3.2 NI Measurement Studio,例:模拟波形输出,5.3.2 NI Measurement Studio,例:模拟波形输出,5.3.3 窗口中调用VISA,例:操作函数发生器Agi

27、lent 33250A波形输出,5.3.3 窗口中调用VISA,void CVCTestDlg:OnBtnoutput() / TODO: Add your control notification handler code hereUpdateData(true);CString strParam=“;/“APPL:SQU 1000,3.0,0n“;ViStatus viSta;char buf 256 = 0;switch(m_Type.GetCurSel()case 0:strcpy(buf,“APPL:SIN 1000,3.0,0n“);break;case 1:strcpy(buf,

28、“APPL:SQU 2000,3.0,0n“);break;case 2:strcpy(buf,“APPL:RAMP 3000,3.0,0n“);break;default:strcpy(buf,“APPL:SIN 1000,3.0,0n“);,5.3.3 窗口中调用VISA,ViSession defaultRM, vi; / bufi“APPL:RAMP 1000,3.0,0n“; /* Open session to GPIB device at address 22 */viOpenDefaultRM(,5.3.3 窗口中调用VISA,if(viSta!=VI_SUCCESS)AfxMessageBox(“viLock 出错!“);return;viSta=viPrintf(vi, buf);if(viSta!=VI_SUCCESS)AfxMessageBox(“viPrintf 出错!“);return; viSta=viUnlock(vi);viClose(vi);viClose(defaultRM); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报