模拟实验测试平台的设计与开发毕业设计论文_第1页
模拟实验测试平台的设计与开发毕业设计论文_第2页
模拟实验测试平台的设计与开发毕业设计论文_第3页
模拟实验测试平台的设计与开发毕业设计论文_第4页
模拟实验测试平台的设计与开发毕业设计论文_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计(论文)模拟实验测试平台的设计与开发论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:模拟实验测试平台的设计与开发摘 要本文实现了模拟实验的虚拟测试平台,为实现模拟器件测试平台的功能,采用vc+可视化编程技术及dll动态连接库的技术。具体实现的功能有:加载dll库、对dll库内的函数的调用、读取信息、画出器件图、对管脚施加信号、施加连续信号。其中加载dll库时采用的是运行是动态加载;对dll库中函数的调用是采用在基类中设置虚函数接口,再通过该类对象指针调用这类里的虚函数来实现对派生类中的函数的调用的思想来实现。该平台具有的这些功能能够满足不同器件的测试需要。

2、文中还简略介绍了虚拟实验平台的现实意义、dll库技术、vc+可视化编程环境以及编写模拟平台时所遇到的一些难点,其中dll动态连接库的加载,dll库中函数的导出比较难理解,其实现方法在本文也有所介绍。关键词:虚拟实验平台;dll动态连接库;vc+可视化编程the design and develop of virtual experimental testing platformabstract this paper presents the simulation of virtual test platform, to achieve the functional of analog test

3、 platform, the vc+ visual programming technology and dll dynamic link library technology have been used. the concrete realization function includes: loading the dll , the right bank of dll function call , reading information , painted map devices, imposing signals to the pin, the infliction continuo

4、us signal . and loading dll is used in the operation of dynamically loaded,dll library of function calls is used in the base class function to set up virtual interface,then indicators such objects such lane called the virtual function to achieve the right type of derivative function call to realize

5、the idea. the function of the platform can meet the different needs of the test. the paper also gave a brief description of the significance of the virtual experimental platform, dll library technology, vc+ visual programming environment and some difficulties in the preparation of a simulation platf

6、orm, the loading of dll dynamic link library and dll library function derived more difficult to understand, the methods of their realization in this paper has been introduced. keywords: virtual experimental platform ; dll dynamic link library ; vc+ visual programming 目录论文总页数:241引言11.1课题背景11.2虚拟实验平台1

7、2开发工具的选择12.1开发工具的确定12.2开发环境13需求分析23.1dll简介23.2dll中有些什么内容33.2.1dll 的优点33.2.2dll的依赖项43.2.3dll的不同类型53.2.4dll 的函数调用53.2.5dll相关概念63.3项目要求73.3.1指定dll库的加载73.3.2dll库内函数的调用73.3.3读取器件信息73.3.4施加高低电平信号73.3.5信号的连续施加73.4项目难点及解决方法73.4.1dll库的加载73.4.2dll库内的函数调用74设计实现84.1指定dll库加载的实现84.2dll库内函数调用的实现84.3读取器件信息的实现84.4施加

8、单一信号的实现94.5信号的连续施加的实现95实现代码及其效果介绍95.1程序效果介绍95.2主要函数介绍95.2.1对dll库进行装载95.2.2读取器件信息105.2.3显示器件105.2.4对单一管脚施加信号115.2.5连续信号施加115.2.6鼠标操作125.3效果演示136课题改进方向及建议14结论15参考文献16致谢17声明181 引言1.1 课题背景伴随信息技术的发展,以计算机模拟实际实验已经成为一项成熟且倍受欢迎的技术。它能让实验具备更好的可视性,让信号的传递更加直观,学生操作实验更加简捷,教师指导实验更加方便,节约硬件资源。无疑它为进行实验带来了更多的便利。1.2 虚拟实验

9、平台虚拟实验平台是通过软件编程仿真各种电子器件,可以做各种电路实验及设计性实验、 基本电路实验、 直流电路、 交流电路、 动态电路、 这些功能模块成为虚拟平台与实验者之间的桥梁, 共同构成网上虚拟实验室系统,起到帮助学生完成实验任务。2 开发工具的选择2.1 开发工具的确定vc+自诞生以来,一直是windows环境下最主要的应用开发系统之一。vc+不仅是c+语言的集成开发环境,而且与win32紧密相连,所以,利用vc+开发系统可以完成各种各样的应用程序开发,从底层软件知道上层直接面向用户的软件。而且,vc+强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。进入20世纪90年代以来,随着

10、多媒体技术和图形技术的不断发展,可视化技术得到广泛的重视,越来越多的计算机专业人员和非专业人员都开始研究并应用可视化技术,所谓可视化技术,一般是指软件开发阶段的可视化和对计算机图形技术和方法的应用。vc+是一个很好的可视化编程工具,使用vc+环境来开发程序缩短了开发的时间,而且它的界面更友好,便于程序员操作。虽然.net、vb等等现在使用的其它工具也拥有比较方便的操作界面,但是由于题目涉及对dll的调用,采vc+更加直接方便,所以最终选择了vc+作为开发工具。2.2 开发环境开发环境是程序员同vc+的交互界面,通过它程序员可以访问c+原代码编辑器、资源编辑器、使用内部调试器、还可以创建项目文件

11、。vc+拥有很多好处,首先它可以让程序开发人员更直观的看到程序的结构,然后提供了很多控件,可以很方便的对这些控件进行编码,总的来说它给程序员提供了一个更好的编程环境(如图1所示)。图 1控件示意图3 需求分析3.1 dll简介先来阐述一下dll(dynamic linkable library)的概念,可以简单的把dll看成一种仓库,它提供给用户一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库静态链接库动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论用户愿不愿意,lib中的指令都被直接包含在最终生成的exe文件中了。但是若使用dll,该d

12、ll不必被包含在最终exe文件中,exe文件执行时可以“动态”地引用和卸载这个与exe独立的dll文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。dll其实就是动态连接库,操作系统的大量功能都是由动态链接库 (dll) 提供的。另外,当您在windows 操作系统之一上运行某一程序时,该程序的很多功能可能是由 dll 提供的。例如,某些程序可能包含很多不同的模块,而该程序的每个模块都包含在 dll 中并从中分发。使用 dll 有助于促进代码的模块化、代码重用、内存的有效使用和减少所占用的磁盘空间

13、。因此,操作系统和程序能够更快地加载和运行,并且在计算机中占用较少的磁盘空间。当程序使用 dll 时,一个称为依赖性的问题可能导致该程序无法运行。当程序使用 dll 时,就会创建一个依赖项。如果其他程序改写和损坏了该依赖项,原来的那个程序就可能无法成功运行。在引入 microsoft .net framework 之后,大多数依赖性问题都已经通过使用程序集消除了。3.2 dll中有些什么内容简介中提到dll是一个动态连接库,那这库中到底包含些什么呢?其实dll 是一个包含可由多个程序同时使用的代码和数据的库。例如,在 windows 操作系统中,comdlg32 dll 执行与对话框有关的常见

14、函数。因此,每个程序都可以使用该 dll 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。通过使用 dll,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到 dll 中以后,您无需重新生成或安装整个程序就可以应用更新。3.2.1 dll 的优点

15、使用较少的资源当多个程序使用同一个函数库时,dll 可以减少在磁盘和物理内存中加载的代码的重复量。这不仅可以大大影响在前台运行的程序,而且可以大大影响其他在 windows 操作系统上运行的程序。 推广模块式体系结构dll 有助于促进模块式程序的开发。这可以帮助您开发要求提供多个语言版本的大型程序或要求具有模块式体系结构的程序。模块式程序的一个示例是具有多个可以在运行时动态加载的模块的计帐程序。 简化部署和安装当 dll 中的函数需要更新或修复时,部署和安装 dll 不要求重新建立程序与该 dll 的链接。此外,如果多个程序使用同一个 dll,那么多个程序都将从该更

16、新或修复中获益。当您使用定期更新或修复的第三方 dll 时,此问题可能会更频繁地出现。3.2.2 dll的依赖项当某个程序或 dll 使用其他 dll 中的 dll 函数时,就会创建依赖项。因此,该程序就不再是独立的,并且如果该依赖项被损坏,该程序就可能遇到问题。例如,如果发生下列操作之一,则该程序可能无法运行:依赖 dll 升级到新版本。修复了依赖 dll。依赖 dll 被其早期版本覆盖。从计算机中删除了依赖 dll。这些操作通常称为 dll 冲突,当这些情况出先时该程序可能无法成功运行。为了帮助最大限度地减少依赖性问题而在 microsoft windows 2000 和较高版本的 win

17、dows 操作系统中引入了以下更改:windows 文件保护:在 windows 文件保护中,操作系统禁止未经授权的代理更新或删除系统 dll。因此,当程序安装操作尝试删除或更新被定义为系统 dll 的 dll 时,windows 文件保护将寻找有效的数字签名。专用 dll:通过专用 dll 可以使程序避免遭受对共享 dll 进行的更改。专用 dll 使用版本特定信息或空 .local 文件来强制要求程序所使用的 dll 的版本。要使用专用 dll,请在程序根文件夹中查找 dll。然后,对于新程序,请向该 dll 中添加版本特定信息。对于旧程序,请使用空 .local 文件。每个方法都告诉操作

18、系统使用位于程序根文件夹中的专用 dll。3.2.3 dll的不同类型使用mfc可以生成两种类型的dll:mfc扩展dll和常规dll。常规dll有可以分为动态连接和静态连接。visual c+还可以生成win32 dll,但不是这里讨论的主要对象。 mfc扩展dll每个dll都有某种类型的接口:变量、指针、函数、客户程序访问的类。它们的作用是让客户程序使用dll,mfc扩展dll可以有c+的接口。也就是它可以导出c+类给客户端。导出的函数可以使用c+/mfc数据类型做参数或返回值,导出一个类时客户端能创建类对象或者派生这个类。同时,在dll中也可以使用dll和mfc。 

19、;  visual c+使用的mfc类库也是保存在一个dll中,mfc扩展dll动态连接到mfc代码库的dll,客户程序也必须要动态连接到mfc代码库的dll。(这里谈到的两个dll,一个是用户自己编写的dll,一个装mfc类库的dll)现在mfc代码库的dll也存在多个版本,客户程序和扩展dll都必须使用相同版本的mfc代码dll。所以为了让mfc扩展dll能很好的工作,扩展dll和客户程序都必须动态连接到mfc代码库dll。而这个dll必须在客户程序运行的计算机上。 常规dll使用mfc扩展dll的一个问题就是dll仅能和mfc客户程序一起工作,如果需要一个使用更广

20、泛的dll,最好采用常规dll,因为它不受mfc的某些限制。常规dll也有缺点:它不能和客户程序发送指针或mfc派生类和对象的引用。一句话就是常规dll和客户程序的接口不能使用mfc,但在dll和客户程序的内部还是可以使用mfc。   当在常规dll的内部使用mfc代码库的dll时,可以是动态连接/静态连接。如果是动态连接,也就是常规dll需要的mfc代码没有构建到dll中,这种情况有点和扩展dll类似,在dll运行的计算机上必须要mfc代码库的dll。如果是静态连接,常规dll里面已经包含了需要的mfc代码,这样dll的体积将比较大,但它可以在没有mfc代码库dll的计算

21、机上正常运行。3.2.4 dll 的函数调用当您在应用程序中加载 dll 时,可以使用两种链接方法来调用导出的 dll 函数。这两种链接方法是加载时动态链接和运行时动态链接。 加载时动态链接:在加载时动态链接中,应用程序像调用本地函数一样对导出的 dll 函数进行显式调用。要使用加载时动态链接,请在编译和链接应用程序时提供头文件 (.h) 和导入库文件 (.lib)。当您这样做时,链接器将向系统提供加载 dll 所需的信息,并在加载时解析导出的 dll 函数的位置。 运行时动态链接:在运行时动态链接中,应用程序调用 loadlibrary 函数或 loadlibraryex 函数以在运行时加载

22、 dll。成功加载 dll 后,可以使用 getprocaddress 函数获得要调用的导出的 dll 函数的地址。在使用运行时动态链接时,无需使用导入库文件。下面说明了有关何时使用加载时动态链接以及何时使用运行时动态链接的应用程序条件:启动性能:如果应用程序的初始启动性能很重要,则应使用运行时动态链接。易用性:在加载时动态链接中,导出的 dll 函数类似于本地函数。这使您可以方便地调用这些函数应用程序逻辑:在运行时动态链接中,应用程序可以分支,以便按照需要加载不同的模块。在开发多语言版本时,这一点很重要。3.2.5 dll相关概念对动态链接库,还需建立如下概念:dll 的编制与具体的编程语言

23、及编译器无关只要遵循约定的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中的函数则负责图形方面的

24、操作。一般的程序员都用过类似messagebox的函数,其实它就包含在user32.dll这个动态链接库中。由此可见dll其实并不陌生。3.3 项目要求3.3.1 指定dll库的加载 目前流行将函数封装为dll函数库,便于更新及管理。目前所要完成的测试平台也要求能够加载已经编写好的各个器件类dll,以便对其进行测试,检验其功能是否正常。所以需要能够对指定的dll库进行加载。3.3.2 dll库内函数的调用既然涉及到dll库,那么自然需要对其中的函数进行调用,本课题要求能够不对dll库中的函数进行定义而直接对其调用。3.3.3 读取器件信息平台要求能够读取器件的管脚、编号等等信息,以便画出器件示

25、意图。3.3.4 施加高低电平信号在以前同学完成的项目中已经提供了施加信号的函数,该函数封装在各器件类的dll库中,只需要对其进行调用即可完成信号的施加,不过本课题还需要信号的连续施加功能。3.3.5 信号的连续施加很多时候只是提供单一的信号并不能满足器件的需求,手动输入信号过与缓慢不便于观察,器件大多数时候需要一串连续的信号输入以便观察器件的输出。所以本程序需要信号的连续输入功能。以保证测试需要。3.4 项目难点及解决方法3.4.1 dll库的加载由于dll是一个比较新的技术,对于dll的接触也比较少,所以在理解和使用上也相对比较困难。通过查阅资料大致了解了dll的概念,对dll库的装载也有

26、了一定的基础了解。在这里装载dll库使用了一个api中的函数:hmodule hmod = loadlibrary();用它可以对指定的dll库进行加载,所以该函数要求提供具体的需要装载的dll库的名称。使用该函数后hmod则等价与指定装载的dll库。3.4.2 dll库内的函数调用在完成dll库加载后,接下来就需要调用库中的函数,调用dll库中的函数与一般的函数调用有很大差异,一般来说函数的调用需要先对该函数进行声明然后才可以对它进行调用,否则系统将无法识别该函数。但对dll中的函数调用不是通过声明的方式来完成,多数情况下它使用了一个dll库中的导出函数,pcomp = pfnef(lpvo

27、id )pdoc)该函数的作用是生成一个库中类的对象,再将该对象的地址返回给一个该类的指针,然后就可以通过这指针来调用库中的函数,它的好处是不用再在程序中给出函数的实现以及声明就可以直接地函数进行调用。4 设计实现4.1 指定dll库加载的实现实现对dll函数库的加载的具体方法是用hmodule hmod = loadlibrary(m_libname+"dll.dll");函数对指定的dll库进行加载。该函数括号中的m_libname+"dll.dll"是需要加载的dll库的名称。4.2 dll库内函数调用的实现在完成对指定的器件dll库的加载后,再用

28、该dll中的pcomp = pfnef(lpvoid )pdoc)导出函数返回了一个基类指针值pcomp,由于在基类中各函数被设置为了虚函数,这样就可以在测试平台中不对需要调用的器件dll中的函数进行声明,而直接以这个指针来调用基类的派生类(也就是各种器件类)封装的dll中的函数,于是实现了dll库内函数的调用。4.3 读取器件信息的实现首先在这先介绍一下器件信息的储存方式,对于器件的信息是采用txt文档的方式保存的,先将器件的信息按照特定的格式编写再将它储存在txt文档中,这样一来当系统需要器件信息的时候只需要对该txt文档进行读操作,再做一定的处理就可以了。这就是器件信息的保存思路。所以要

29、实现该功能就需要对指定的文档进行读取,于是在这设计了一个文档内容的读取函数readinfo(fp,pdoc),这函数可以将指定的.txt文本文档中的器件信息进行读取,该函数的使用需要先给定fp一个地址值,这由函数fp = fopen(m_compmsg,"rt")来完成,其中的参数m_compmsg是一个字符串它就是需要加载的器件的txt文档的名字。这样就可以对一个指定的器件的信息进行读取。4.4 施加单一信号的实现以下是完成施加单一信号的核心函数pcomp->outsig(m_pin,m_sigval),该函数中m_pin参数是管脚的编号,m_sigval是施加的信

30、号,两个参数的具体值需要测试人员手动提供。4.5 信号的连续施加的实现实现连续信号输入的思路和器件读取的思路错别不大,都是先信号流以特定的格式保存在一个txt文档中,再对该文档进行读取,在txt文档中一行保存一个管脚编号以及它所对应的信号值,每次txt文档读完一行便调用一次pcomp->outsig(m_pin,m_sigval)函数进行一次设置,所以在这使用了一个定时器settimer(100,500,null)函数,在定时器内打开了一个txt文档,在这文档中提取出了2个整形参数(管脚编号与信号值)再将它赋给相对应的管脚后,再读取下一行。在读完整个文档后结束。5 实现代码及其效果介绍5

31、.1 程序效果介绍该平台它能够对各同学编写完成的虚拟器件进行测试,首先要做的是将编写好的器件封装成的dll库以及存放器件信息的txt文件的名字告诉平台,然后平台就可以对其进行装载,并且将器件显示在器件图中,之后就可以开始对器件进行简单的测试。5.2 主要函数介绍5.2.1 对dll库进行装载下面一段代码实现了对dll函数库的加载以及对dll库里的函数调用,具体方法是用hmodule hmod = loadlibrary(m_libname+"dll.dll");对指定的dll库进行了加载,然后再以pcomp = pfnef(lpvoid )pdoc)导出函数返回了一个指针值

32、,然后就可以以这个指针来调用其中的函数。void ctestcomponentdlg:onbtnload() / todo: add your control notification handler code hereupdatedata(true);hmodule hmod = loadlibrary(m_libname+"dll.dll"); typedef dcomponent* (*pexportedfn)(lpvoid );pexported fnpfnef=(pexportedfn)getprocaddress(hmod,"create"+

33、m_libname);pcomp = pfnef(lpvoid )pdoc);/int ver = pcomp->getversion();updatedata(false);5.2.2 读取器件信息下面这段代码可以将指定的.txt文本文档中的器件信息进行读取,其中包括器件位置(画图时开始的位置)、管脚信息等相关信息。它首先是打开了一个文档,该文档的开始地址给了fp这个指针然后用自己编写的一个函数pcomp->readinfo(fp,pdoc)对该文档的内容进行了读取。void ctestcomponentdlg:onbtnreadinfo() / todo: add your c

34、ontrol notification handler code herefile *fp ;updatedata(true);fp = fopen(m_compmsg,"rt");pcomp->readinfo(fp,pdoc);fclose(fp);updatedata(false);5.2.3 显示器件这段代码完成的是画出器件图的功能,它根据读取器件代码所读取到的信息来完成器件图的显示。void ctestcomponentdlg:onbtndisp() / todo: add your control notification handler code her

35、ecdc *pdc = c_field.getdc();/int ver = pcomp->getversion();/char *pname = pcomp->getmyname() ;pcomp->drawobject(pdc);c_field.releasedc(pdc);5.2.4 对单一管脚施加信号这是对单一管脚的信号施加代码段m_pin是管脚编号,sigval是信号值。void ctestcomponentdlg:onbtnaddsig() / todo: add your control notification handler code hereupdated

36、ata(true);pcomp->outsig(m_pin,m_sigval); /m_pin是管脚编sigval是信号updatedata(false);5.2.5 连续信号施加在这里由于要施加连续信号,所以使用了一个定时器settimer(100,500,null)函数,在定时器内打开了一个txt文档,在这文档中提取出了2个整形参数(管脚编号与信号值)再将它赋给相对应的管脚。在读完文档后释放了fp指针。void ctestcomponentdlg:onbutton1() / todo: add your control notification handler code herese

37、ttimer(100,500,null);fp = fopen("cmd.txt","r");void ctestcomponentdlg:ontimer(uint nidevent) / todo: add your message handler code here and/or call defaultchar buf250;if(fp != null)int pin,s;fgets(buf,250,fp);sscanf(buf,"%d,%d",&pin,&s);pcomp->outsig(pin,s);

38、/c_listmsg.addstring(buf);if(feof(fp)fclose(fp);fp = null ;cdialog:ontimer(nidevent);5.2.6 鼠标操作这是一段操作鼠标的代码,它留出了很多接口函数由编写器件时程序员自己对它进行实现。当在器件编码中完成对这些接口的实现后,在本程序中就可以在显示出的器件图上通过鼠标点击来触发一些事件,比如开关开启等。本程序在测试8255器件时并没有使用到该功能。#include "line.h"class cvisualexdoc;class dcomponent public:cline *pin;/保存

39、引脚信息char *ppinname;int ipinnum ;cstring scomname ;cpoint position;/位置信息int cx;int cy;/器件的大小protected:cvisualexdoc *pparent ;public:dcomponent(cvisualexdoc *p,int );virtual dcomponent();virtual int outsig(int ipinno,int isigval)=0;virtual char * getmyname() return "null" virtual int getvers

40、ion()return 1;virtual int drawobject(cdc* pdc);/return 1;virtual int readinfo(file* file,cvisualexdoc* pdoc);/ 查找一个引脚virtual int findpin(cvisualexdoc* pdoc,cpoint point,int ele);virtual cline* findpin(int ipinno,int isigval);virtual int mouseevent(int event , cpoint pt) return 1 ;5.3 效果演示图2是装载指定dll以

41、及读取器件信息的示意图,在图中可以看出要装载指定的dll就需要给出该dll的名称,读取指定器件也要给出保存该器件信息的txt文档名称。对于图2补充说明一点:其中装载的器件dll库的名称,为了简化输入,由于虚拟实验台器件dll遵守了统一的命名规范,所以,这里采用简称输入,不需要完整的器件dll文件名。能对dll文件进行合法性检测,测试是否是符合规范的虚拟实验台器件dll。图3演示了载入器件dll后,调用器件dll的显示器件信息函数后,显示器件内部结构的效果图。16第 页 共 53 页图 2 载入器件dll示意图图 3 器件显示示意图6 课题改进方向及建议现在的测试平台并不完整,有些功能还不完善。

42、例如信号的连续施加功能,现在虽然能够将信号连续施加,但是在某个管脚上应当有输入或者输出信号的时候不能够明显的提示,以至于不能很好的判断该管脚上是否有信号,测试时候不怎么方便。可以适当加入提示信息方便观察。在这由于时间仓促,未能实现实属遗憾。 结论本文成功地实现了用于模拟实验平台器件dll功能测试的简单平台。本测试平台现在实现的功能包括:载入模拟器件dll,检验dll合法性,查找器件dll中的导出函数,提供对器件各个管脚设置高低输入信号,显示器件的输出信息,显示器件内部结构,根据器件需要,可以向器件发送定时和鼠标操作事件。通过本测试平台,能对用于虚拟实验台的仿真dll器件进行基本的功能检测,确认

43、仿真实现的正确性。在现有测试平台中,还有一个功能没有实现,就是测试平台对器件dll提供连续信号测试。这是今后修改完善中要解决的重要问题。参考文献1谭浩强 c程序设计(第二版)m 北京:清华大学出版社 1999 2黄维通visual c+ 面向对象与可视化程序设计m 北京:清华大学出版社 2003 3王国印等译 visual c+ 技术内幕(第四版)m 北京:清华大学出版社 1999 4王华等 visual c+编程实例与技巧m 北京:机械工业出版社 19995孙鑫 vc+从入门到精通开发详解m 北京:电子工业出版社 20066郑莉 c+语言程序设计m 北京:清华大学出版社 20047王华等 v

44、isual c+编程实例与技巧m 北京:机械工业出版社 19998胡哲源 mfc程序设计与剖析m 北京:清华大学出版社 2002致谢本文是在冯黎老师的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!在论文完成过程中,本人还得到了其他老师和许多同学的热心帮助,本人向他们表示深深的谢意!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!本文作者签名: 作者简介姓 名:程俊 性别: 男出生年月:1983年01月17 民族: 汉e-mail:coolshadow.student声明本论文的工作是 2007年 3月至2

45、007年 6月在成都信息工程学院 系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵

46、守此规定)。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明! 毕业设计(论文)模拟实验测试平台的设计与开发论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:模拟实验测试平台的设计与开发摘 要本文实现了模拟实验的虚拟测试平台,为实现模拟器件测试平台的功能,采用vc+可视化编程技术及dll动态连接库的技术。具体实现的功能有:加载dll库、对dll库内的函数的调用、读取信息、画出器件图、对管脚施加信号、施加连续信号。其中加载dll库时采用的是运行是动态加载;对dll库中函数的调用是采用在基类中设置虚函数接口,再通过该类对象指针调用这类

47、里的虚函数来实现对派生类中的函数的调用的思想来实现。该平台具有的这些功能能够满足不同器件的测试需要。文中还简略介绍了虚拟实验平台的现实意义、dll库技术、vc+可视化编程环境以及编写模拟平台时所遇到的一些难点,其中dll动态连接库的加载,dll库中函数的导出比较难理解,其实现方法在本文也有所介绍。关键词:虚拟实验平台;dll动态连接库;vc+可视化编程the design and develop of virtual experimental testing platformabstract this paper presents the simulation of virtual test

48、platform, to achieve the functional of analog test platform, the vc+ visual programming technology and dll dynamic link library technology have been used. the concrete realization function includes: loading the dll , the right bank of dll function call , reading information , painted map devices, im

49、posing signals to the pin, the infliction continuous signal . and loading dll is used in the operation of dynamically loaded,dll library of function calls is used in the base class function to set up virtual interface,then indicators such objects such lane called the virtual function to achieve the

50、right type of derivative function call to realize the idea. the function of the platform can meet the different needs of the test. the paper also gave a brief description of the significance of the virtual experimental platform, dll library technology, vc+ visual programming environment and some dif

51、ficulties in the preparation of a simulation platform, the loading of dll dynamic link library and dll library function derived more difficult to understand, the methods of their realization in this paper has been introduced. keywords: virtual experimental platform ; dll dynamic link library ; vc+ v

52、isual programming 目录论文总页数:241引言11.1课题背景11.2虚拟实验平台12开发工具的选择12.1开发工具的确定12.2开发环境13需求分析23.1dll简介23.2dll中有些什么内容33.2.1dll 的优点33.2.2dll的依赖项43.2.3dll的不同类型53.2.4dll 的函数调用53.2.5dll相关概念63.3项目要求73.3.1指定dll库的加载73.3.2dll库内函数的调用73.3.3读取器件信息73.3.4施加高低电平信号73.3.5信号的连续施加73.4项目难点及解决方法73.4.1dll库的加载73.4.2dll库内的函数调用74设计实现

53、84.1指定dll库加载的实现84.2dll库内函数调用的实现84.3读取器件信息的实现84.4施加单一信号的实现94.5信号的连续施加的实现95实现代码及其效果介绍95.1程序效果介绍95.2主要函数介绍95.2.1对dll库进行装载95.2.2读取器件信息105.2.3显示器件105.2.4对单一管脚施加信号115.2.5连续信号施加115.2.6鼠标操作125.3效果演示136课题改进方向及建议14结论15参考文献16致谢17声明187 引言7.1 课题背景伴随信息技术的发展,以计算机模拟实际实验已经成为一项成熟且倍受欢迎的技术。它能让实验具备更好的可视性,让信号的传递更加直观,学生操作

54、实验更加简捷,教师指导实验更加方便,节约硬件资源。无疑它为进行实验带来了更多的便利。7.2 虚拟实验平台虚拟实验平台是通过软件编程仿真各种电子器件,可以做各种电路实验及设计性实验、 基本电路实验、 直流电路、 交流电路、 动态电路、 这些功能模块成为虚拟平台与实验者之间的桥梁, 共同构成网上虚拟实验室系统,起到帮助学生完成实验任务。8 开发工具的选择8.1 开发工具的确定vc+自诞生以来,一直是windows环境下最主要的应用开发系统之一。vc+不仅是c+语言的集成开发环境,而且与win32紧密相连,所以,利用vc+开发系统可以完成各种各样的应用程序开发,从底层软件知道上层直接面向用户的软件。

55、而且,vc+强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。进入20世纪90年代以来,随着多媒体技术和图形技术的不断发展,可视化技术得到广泛的重视,越来越多的计算机专业人员和非专业人员都开始研究并应用可视化技术,所谓可视化技术,一般是指软件开发阶段的可视化和对计算机图形技术和方法的应用。vc+是一个很好的可视化编程工具,使用vc+环境来开发程序缩短了开发的时间,而且它的界面更友好,便于程序员操作。虽然.net、vb等等现在使用的其它工具也拥有比较方便的操作界面,但是由于题目涉及对dll的调用,采vc+更加直接方便,所以最终选择了vc+作为开发工具。8.2 开发环境开发环境是程序员同vc+的交互界面,通过它程序员可以访问c+原代码编辑器、资源编辑器、使用内部调试器、还可以创建项目文件。vc+拥有很多好处,首先它可以让程序开发人员更直观的看到程序的结构,然后提供了很多控件,可以很方便的对这些控件进行编码,总的来说它给程序员提供了一个更好的编程环境(如图1所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论