VC模拟器件测试平台设计与实现
以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
资料介绍:
摘要本文实现了模拟实验的虚拟测试平台,为实现模拟器件测试平台的功能,采用VC++可视化编程技术及DLL动态连接库的技术。具体实现的功能有:加载DLL库、对DLL库内的函数的调用、读取信息、画出器件图、对管脚施加信号、施加连续信号。其中加载DLL库时采用的是运行是动态加载;对DLL库中函数的调用是采用在基类中设置虚函数接口,再通过该类对象指针调用这类里的虚函数来实现对派生类中的函数的调用的思想来实现。该平台具有的这些功能能够满足不同器件的测试需要。文中还简略介绍了虚拟实验平台的现实意义、DLL库技术、VC++可视化编程环境以及编写模拟平台时所遇到的一些难点,其中DLL动态连接库的加载,DLL库中函数的导出比较难理解,其实现方法在本文也有所介绍。关键词:虚拟实验平台;DLL动态连接库;VC++可视化编程1 引言1.1课题背景伴随信息技术的发展,以计算机模拟实际实验已经成为一项成熟且倍受欢迎的技术。它能让实验具备更好的可视性,让信号的传递更加直观,学生操作实验更加简捷,教师指导实验更加方便,节约硬件资源。无疑它为进行实验带来了更多的便利。1.2虚拟实验平台虚拟实验平台是通过软件编程仿真各种电子器件,可以做各种电路实验及设计性实验、基本电路实验、 直流电路、 交流电路、 动态电路、 这些功能模块成为虚拟平台与实验者之间的桥梁, 共同构成网上虚拟实验室系统,起到帮助学生完成实验任务。2 开发工具的选择2.1开发工具的确定VC++自诞生以来,一直是Windows环境下最主要的应用开发系统之一。VC++不仅是C++语言的集成开发环境,而且与Win32紧密相连,所以,利用VC++开发系统可以完成各种各样的应用程序开发,从底层软件知道上层直接面向用户的软件。而且,VC++强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。进入20世纪90年代以来,随着多媒体技术和图形技术的不断发展,可视化技术得到广泛的重视,越来越多的计算机专业人员和非专业人员都开始研究并应用可视化技术,所谓可视化技术,一般是指软件开发阶段的可视化和对计算机图形技术和方法的应用。VC++是一个很好的可视化编程工具,使用VC++环境来开发程序缩短了开发的时间,而且它的界面更友好,便于程序员操作。虽然.NET、VB等等现在使用的其它工具也拥有比较方便的操作界面,但是由于题目涉及对DLL的调用,采VC++更加直接方便,所以最终选择了VC++作为开发工具。3 需求分析3.1DLL简介先来阐述一下DLL(Dynamic Linkable Library)的概念,可以简单的把DLL看成一种仓库,它提供给用户一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论用户愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。DLL其实就是动态连接库,操作系统的大量功能都是由动态链接库 (DLL) 提供的。另外,当您在Windows操作系统之一上运行某一程序时,该程序的很多功能可能是由 DLL 提供的。例如,某些程序可能包含很多不同的模块,而该程序的每个模块都包含在 DLL 中并从中分发。3.1.1.1 常规DLL使用MFC扩展DLL的一个问题就是DLL仅能和MFC客户程序一起工作,如果需要一个使用更广泛的DLL,最好采用常规DLL,因为它不受MFC的某些限制。常规DLL也有缺点:它不能和客户程序发送指针或MFC派生类和对象的引用。一句话就是常规DLL和客户程序的接口不能使用MFC,但在DLL和客户程序的内部还是可以使用MFC。 think58 [资料来源:www.THINK58.com]
当在常规DLL的内部使用MFC代码库的DLL时,可以是动态连接/静态连接。如果是动态连接,也就是常规DLL需要的MFC代码没有构建到DLL中,这种情况有点和扩展DLL类似,在DLL运行的计算机上必须要MFC代码库的DLL。如果是静态连接,常规DLL里面已经包含了需要的MFC代码,这样DLL的体积将比较大,但它可以在没有MFC代码库DLL的计算机上正常运行。3.1.2 DLL 的函数调用当您在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数。这两种链接方法是加载时动态链接和运行时动态链接。 加载时动态链接:在加载时动态链接中,应用程序像调用本地函数一样对导出的 DLL 函数进行显式调用。要使用加载时动态链接,请在编译和链接应用程序时提供头文件 (.h) 和导入库文件 (.lib)。当您这样做时,链接器将向系统提供加载 DLL 所需的信息,并在加载时解析导出的 DLL 函数的位置。 运行时动态链接:在运行时动态链接中,应用程序调用 LoadLibrary函数或 LoadLibraryEx函数以在运行时加载 DLL。成功加载 DLL 后,可以使用 GetProcAddress函数获得要调用的导出的 DLL 函数的地址。在使用运行时动态链接时,无需使用导入库文件。
下面说明了有关何时使用加载时动态链接以及何时使用运行时动态链接的应用程序条件:启动性能:如果应用程序的初始启动性能很重要,则应使用运行时动态链接。易用性:在加载时动态链接中,导出的 DLL 函数类似于本地函数。这使您可以方便地调用这些函数应用程序逻辑:在运行时动态链接中,应用程序可以分支,以便按照需要加载不同的模块。在开发多语言版本时,这一点很重要。3.1.3 DLL相关概念对动态链接库,还需建立如下概念:DLL 的编制与具体的编程语言及编译器无关只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环境中都能被调用,不在乎其是Visual Basic、Visual C++还是Delphi。动态链接库随处可见在Windows目录下的system32文件夹中会看到kernel32.dll、user32.dll和gdi32.dll,windows的大多数API都包含在这些DLL中。kernel32.dll中的函数主要处理内存管理和进程调度;user32.dll中的函数主要控制用户界面;gdi32.dll中的函数则负责图形方面的操作。一般的程序员都用过类似MessageBox的函数,其实它就包含在user32.dll这个动态链接库中。由此可见DLL其实并不陌生。
当在常规DLL的内部使用MFC代码库的DLL时,可以是动态连接/静态连接。如果是动态连接,也就是常规DLL需要的MFC代码没有构建到DLL中,这种情况有点和扩展DLL类似,在DLL运行的计算机上必须要MFC代码库的DLL。如果是静态连接,常规DLL里面已经包含了需要的MFC代码,这样DLL的体积将比较大,但它可以在没有MFC代码库DLL的计算机上正常运行。3.1.2 DLL 的函数调用当您在应用程序中加载 DLL 时,可以使用两种链接方法来调用导出的 DLL 函数。这两种链接方法是加载时动态链接和运行时动态链接。 加载时动态链接:在加载时动态链接中,应用程序像调用本地函数一样对导出的 DLL 函数进行显式调用。要使用加载时动态链接,请在编译和链接应用程序时提供头文件 (.h) 和导入库文件 (.lib)。当您这样做时,链接器将向系统提供加载 DLL 所需的信息,并在加载时解析导出的 DLL 函数的位置。 运行时动态链接:在运行时动态链接中,应用程序调用 LoadLibrary函数或 LoadLibraryEx函数以在运行时加载 DLL。成功加载 DLL 后,可以使用 GetProcAddress函数获得要调用的导出的 DLL 函数的地址。在使用运行时动态链接时,无需使用导入库文件。
下面说明了有关何时使用加载时动态链接以及何时使用运行时动态链接的应用程序条件:启动性能:如果应用程序的初始启动性能很重要,则应使用运行时动态链接。易用性:在加载时动态链接中,导出的 DLL 函数类似于本地函数。这使您可以方便地调用这些函数应用程序逻辑:在运行时动态链接中,应用程序可以分支,以便按照需要加载不同的模块。在开发多语言版本时,这一点很重要。3.1.3 DLL相关概念对动态链接库,还需建立如下概念:DLL 的编制与具体的编程语言及编译器无关只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环境中都能被调用,不在乎其是Visual Basic、Visual C++还是Delphi。动态链接库随处可见在Windows目录下的system32文件夹中会看到kernel32.dll、user32.dll和gdi32.dll,windows的大多数API都包含在这些DLL中。kernel32.dll中的函数主要处理内存管理和进程调度;user32.dll中的函数主要控制用户界面;gdi32.dll中的函数则负责图形方面的操作。一般的程序员都用过类似MessageBox的函数,其实它就包含在user32.dll这个动态链接库中。由此可见DLL其实并不陌生。
包含资料:
think58.com [资料来源:http://think58.com]
[版权所有:http://think58.com]
源程序+论文(15000字以上)+可执行程序+答辩稿ppt+开题报告+外文翻译
[资料来源:www.THINK58.com]
获取资料请您联系本站客服
think58.com [版权所有:http://think58.com]
[资料来源:www.THINK58.com]