基于Windows平台的高帧频场景产生系统的设计与实现

上传人:少*** 文档编号:64435459 上传时间:2022-03-21 格式:DOC 页数:63 大小:12.39MB
收藏 版权申诉 举报 下载
基于Windows平台的高帧频场景产生系统的设计与实现_第1页
第1页 / 共63页
基于Windows平台的高帧频场景产生系统的设计与实现_第2页
第2页 / 共63页
基于Windows平台的高帧频场景产生系统的设计与实现_第3页
第3页 / 共63页
资源描述:

《基于Windows平台的高帧频场景产生系统的设计与实现》由会员分享,可在线阅读,更多相关《基于Windows平台的高帧频场景产生系统的设计与实现(63页珍藏版)》请在装配图网上搜索。

1、 西安电子科技大学硕士学位论文基于Windows平台的高帧频场景产生系统的设计与实现姓名:刘健申请学位级别:硕士专业:通信与信息系统指导教师:王军宁201202 随着军事和国防工业的发展,场景模拟产生技术越来越在相关领域得到重视。高帧频场景产生系统是利用计算机软件来模拟高速运动物体在某些环境中运动过硬件板卡上,最后以模拟图像信号的形式输出。该系统既可以直观的测试高速运动物体跟踪系统的性能,又可以免去人们大量的野外试验过程,节省了时间,降低了成本。场景产生系统上层应用程序的框架设计以及具体实现,分别利用蚔甆语言实现了系统的界面,以动态链接库形式实现了系统生成场景的核心部分。本场景产生 琲, :

2、第一章绪论弟第一一早章三绪百论比场景产生技术概述为了评价与高帧频跟踪技术相关的目标检测、识别跟踪算法,可以直接用红济的,不仅因为性能较好的热象仪器价格昂贵,而且显而易见在实际的场景中要实验之前,用空间目标和场景的仿真系统,即场景产生系统来代替真实目标和场景,初步测试导引头识别跟踪处理机的各项性能指标,以便节省人力、物力和财场景产生系统是利用计算机产生出空间运动目标和场景的图像信息,所产生的图像信息可以模拟红外热象仪所获得的信息【】。由于计算机技术、高速大容量动态存贮器、以及适用于图形处理的高速微处理器的发展,二维图形产生和显示已发展到三维图形产生,所以产生空间运动目标和场景的图像并用于导引头信

3、息机械模拟目标测试法尺寸和对比度的目标模型作直线或圆周运动,将摄像机摄取的目标图像送入电子跟踪器,最终实现对该目标的捕获和跟踪。机械模拟目标通常以一定色调的幕布或画面作为背景,通过改变目标大小和色调、照度、运动速度等可以完成最小跟踪对比度、最大跟踪速度、最大跟踪误差的定量测量。这种方法的优点是简便易行,缺点是测试精度不高,实验条件不易控制,效率低,需要较大的测试场地。电模拟目标测试法这种测试方法的核心是用一台专用的硬件实现的电模拟目标发生器代替通过摄像机输出的外界景物目标。该模拟目标发生器可以产生一个或多个大小、幅形、极性均可改变的视频电信号。模拟目标在视场中的位置可以人工或自动控制。自动模拟

4、目标的运动有直线交虼怪狈较,斜线和圆周等方式,运动的速度和频率可调。可对图像跟踪器中的电子跟踪器的性能进行定量测量。这种方法的优点是一些测试参数可控,如对比度、目标大小、形状、速度、 运动方式等,缺点是目标形状简单、缺少背景,缺乏真实感,尤其复杂条件下的跟踪性能测试不易实现。可变光学目标模拟器测试法用计算机视景仿真技术,测试图像跟踪器的跟踪性能可以有两种方式。一种是采用全视景仿真,测试图像跟踪器的整机性能。即用计算机仿真具有真实感的战地背景和运动目标的三维图像,通过投影仪投射到大屏幕上,营造一个逼真的战场环境。图像跟踪器通过自身的电视摄像头、随动系统捕获目标、跟踪目标,测试它整机的跟踪性能,这

5、样更接近于实际应用情况。不过,这种方法仿真对象相对较少、占用的测试场地较大。另外一种是用计算机仿真图像跟踪器电视摄像头的视景,取代图像跟踪器电视摄像头输出的外界景物,直接输入到图像跟踪器的电子跟踪器部分图像采集、处理、识别、定位、跟踪部分,用于检测该部分的性能。该方法仿真对象较多,但结构紧凑,占用场地较小。以记录图像数据。该系统主要利用将双路高速数字摄像机所采集的图像 第一章绪论线将数据传输至进行记录。该系统主要用于跟踪和识别高速运动物体。在高帧频显示方面,国内大多使用编程实现高帧频图像数据的实时采嵌入式图像采集显示系统,可以进行实时的采集显示帧频为帧秒、分辨率为实现高速图像数据流的帧频变换和

6、时钟域变换,在相应的显示时序控制下,通过;怀蒝视频格式以满足显示设备的需要,实现视频图像的稳定显示。在这种方案中,实现了对分辨率的图像进行显示。显示的方隒技术早期开发贸绦虮匦胧褂梦硖峁目猓苯拥饔肳象的方式重新组织,使他们具有抽象、封装、继承、多态等特征。但要注意到,在运行时动态获取类型并与系统中的其他对象协同,在技术实现上是非常困难的。随着计算机网络的飞速发展,软件的应用环境变得更加广阔。与此同时软件的设计难度也在提高。为适应这种分布式软件应用环境,组件化程序设计思想迅速地发展起来。组件化程序设计思想就是将复杂的应用程序设计成一些小的、功能单一的组件模块,这些组件模块可以运行在同一台机器上,也

7、可以运行在不同的机器上,甚至机器的运行环境也可以不同。认喙丶际酢的特性包括:语言无关性、进程透明性、可重用性【】。 简单的讲,甆平台是一个建立在开放互联网络协议和标准之上,它使用图像跟踪器研制完成后,需要对跟踪性能进行评估。通过图像跟踪器测试评估系统的研制,可以在实验室通过模拟各种实际场景,跟踪目标和干扰情况,来对图像跟踪器跟踪性能进行测试和评估。及时地对图像跟踪器进行测试评估一方面能够检验图像跟踪器的性能要求,另一方面也能够在图像跟踪器的开发过程中,促进发现跟踪器的问题和改进跟踪器的性能。论文的主要内容安排文章主要安排以下五个章节:第一章为绪论部分,主要阐述了课题的背景以及研究的对象。 第一

8、章绪论第三章主要介绍了场景产生系统的上层软件的设计与实现。阐述了上层应用程序的框架设计,界面设计,核心模块设计方法。详细介绍了整体应用程序的实现过程。的过程。最后介绍了如何具体实现这个驱动程序。第五章为总结和展望,主要对系统做出了总结和进一步研究的展望。 多线程的相关概念并行是一个系统可以同时执行多个程式的能力。基本上,系统使用一个硬体时钟为同时执行的每个程序配置时间片段,如果时间片段够小,并且机器也没有由于运行太多的程序而超出负荷时,那么在使用者看来,所有的这些程序似乎在同时执行着。多线程是在一个程序内部实现并行的能力。程序可以把它自己分隔线程的概念的核心对象缥募浔拖叱,用户资源缍曰翱蚝妥址

9、,试如进程的其它资源,如文件句柄、线程句柄进程的环境变量 堆栈单元。凇曰圈图在服务器环境下的线程 每个线程都有自身的堆栈以便在函数调用和其他进程中使用。指针的形式存在。参数实际上是在线程堆栈之中的。用户自己编写控制信号量的函数。当进程中的线程访问预先制定的内存空间时,操作系统会调用系统默认的或用户自定义的信号量函数,保证数据的完整性与正确性。线程可以简化程序设计和实现,也可以提高性能,但在使用线程时需要注意的是确保共同资源不被同时修改且尽在需要的时候运行线程。也就是说,在运用,线程的时候,要注意同步问题。这样描述似乎有些抽象,图描述了非同步线程共享内存时出现问题的一种形式。上图描述的是一个典型

10、的并行程序带来的危害。大致问题是这样的:有两个线程运行了相同的代码,这段代码很简单: 这段代码的意思是将黾觢,假设某跏贾凳。我们知道,若是在普信号量录。多个线程在同一互斥体上等待的情况。创建或者打开成功时,它就处于基态了,直到它被释放,才会变为激发态。而获法,具体到互斥体中来说,只有当一个互斥体没有被任何线程拥有的时候,信号量会在信号量上执行取走或者置入的操作,这些操作会自动的递减或者递增信号量互斥的,而是允许特定数量的线程同时在临界区中执行。信号量通常用于保护容 量上有限的系统资源。与互斥体不同的是,信号量不应该认为是由某个特定线程类似,这两个函数也是用来创建和释放内核对象的。而线程获得信号

11、量的规则与通常的内核对象是一样的:计数值非毙藕帕看诩坏剖滴,信号量就处于基态。事件在操作系统中,事件分为两种:自动重置事件和手动重置事件。这两种事件之间的差异是:自动重置事件处于激发态时只有一个线程能够看到这个信号,当这个线程观察到这个激发态信号时,自动重置事件会自动的切换到基态。与互斥体不同的是,事件不属于任何线程,而且任何线程都可以设置事件。若自动重置事件处于激发态时,系统只会唤醒一个线程。而手动重置事件则不同,其事件和重置事件。函数可以使某个事件立即处于激发态,而函数则使事件立即处于基态。消息机制和两个参数琇组成。消息的参数中包含有重要的信息。例如,对鼠标消息而言,中一般包含鼠标的位置信

12、息,而参数中包含了发生该消息时,、等键的状态信息,对于不同的消息类型来说,两个参数也都相应地具有明确意义。 之中的。;消息也就是上面出现的峁梗导噬暇褪荳内设的一种数据结构的格式:騯;表消息的组成含义区分消息的类别参数鼠标的位置 消息队列图符、光标、窗口类、菜单等等。当一个线程调用一个函数来建立某个对象时,则该对象就归这个线程的进程所拥有。这样,当进程结束时,如果没有明确删除这个对象,则操作系统会自动删除这个对象。对窗口和挂钩这两种对象,它们分别由建立窗口和安装挂钩的线程所拥有。如果一个线程建立一个窗口或安装一个挂钩,然后线程结束,操作系统会自动删除窗口或卸载挂钩。这种线程拥有关系的概念对窗口有

13、重要的意义:建立窗口的线程必须是为窗口处理所有消息的线程。为了使这个概念更加明确具体,可以假设一个线程建立了一个窗口,然后就结束了。在这种情况下,窗口不会收到一个或这也意味着每个线程,如果它至少建立了一个窗口,都由系统对它分配一个消息队列。这个队列用于窗口消息的派送。为了使窗口接收这些消息,线程必须有它自己的消息循环。本章要考查每个线程的消息队列。特别是要看看消息是如何被放置在队列中的,以及线程如何从队列中取出消息并处理它们。目标,要保证每个线程运行在一个环境中,在这个环境中每个线程都相信自己是唯一运行的线程。更确切地说,每个线程必须有完全不受其他线程影响的消息队列。而且,每个线程必须有一个模

14、拟环境,使线程可以维持它自己的键盘焦点、窗口激活、鼠标捕获等概念。当一个线程第一次被建立时,系统假定线程不会被用于任何与用户相关的任务。这样可以减少线程对系统资源的要求。但是,一旦这个线程调用一个与图形用户界面有关的函数缂觳樗南恿谢蚪桓龃翱,系统就会为该线程分配一些另外的资源,以便它能够执行与用户界面有关的任务。特别是,系统分配一个结构,并将这个数据结构与线程联系起来。这个结构包含一组成员变量,利用这组成员,线程可以认为它是在自己独占的环境中运行。是一个内部的、未公开的数据结构,、发送消息队列 、应答消息队列、虚拟输入队列态的若干变量。图描述了结构和与之相联系的线程。图线程及其相关的结构消息队

15、列状态一个线程的消息队列中可能有很多个消息等待处理,我们可以通过调用函数表标志取值及含义标志队列中的消息、鼠标按键的按下、单击、双击等消息登记的消息煌谟布淙胧录。当队列在期望的消息过滤器范围内没有登记的消息时,这个标志要消除。除此之外,这个标志与 登记的消息煌谟布淙胧录。当队列完全没有登记的消息时谌魏蜗似鞣段,该标志被清除。除此之外,该标志与相同甴文件中没有。它由系统在内部使用由另一个线程发送的消息不是所有的唤醒标志都由系统平等对待。对于当线程的登记消息队列中至少有一个消息时,设置。这不包括线程的虚拟输入队列中的硬件事件消息。当线程的登记消息队列中的所有消息都已经处理,队列变空时,这个标志被复

16、位。每当一个定时器上叱趟报时,返回蠺消息。并且函数也不返回这个标志的状态。消息队列中提取消息的方法态标志的情况,并确定应该处理哪个消息。图和下面叙述的步骤说明了系统是如何确定线程应该处理的下一个消息的情况【】。如果理完消息之后不返回到线程,这些函数要等待其他要处理的消息。 硬件输入消息。如果标志被设置,或O嘤拇应用程序的开发方法一种教驴7姆绞蕉加衅溆帕樱窘谥饕=樯苡肳三种方 贸绦虮喑探涌是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。位操作系系统服务函数:实现与操作系统相关的一些函数,如线程、进程的控制等。最

17、后以编译器整合为一个完成的应用程序,如图所示。这种资源的实 际内容拼是借助各种工具产生,并以各种扩展名的文件存在的,如些静态库,如琸等。只需包含这一个文件即可。些部分基本是一样的,也基本不用改动。只有最后一部分,窗口处理函数才是,方法对程序员要求很高,无论是他关注的还是不关注的部分,程序员都需要将程直接完成自己想要做的,自由度比较大。 这时,陀硕恕库且桓鲆訡类的形式封装了腁,并且包含一个应用程序框架,开发程序时的应用程序框架已经在这个类视图中完成了。图程序员什么代码也不用写,只需要点几下按钮就可以生成一个可以运行的应用程序了。接下来的工作就是专注于开发自己想要的应用程序风格,而不用管更下层的机

18、理。 类向导:在应用程序向导生成的骨干程序中方便的修改源代码,可以创建图这样,通过作系统鏜有如下核心的功能【】:与现有代码的全面互操作性:榻n梢杂虢闲碌模甆应用程序合在一起,反之亦然。同样, 在喑逃镅灾浼桑海甆支持跨语言的继承、跨语言的错误处理以及跨语言的代码调试。嘈涂饧耙訡为中心的堇嘈驮诒镜兀甆二进制文件元。而且,市硗桓鲈祝甦的多个版本融洽的存在于一台机器上。换成原始机械码。所有伎删桑甆自我表述。图教牧硪桓龉辜榫褪枪怖嘈拖低,。何彼此交互,以及如何使用J莞癖硎舅堑南附凇模甆支持语言可能不支持宓乃泄埽灿镅怨娣珻且桓龆逅校甆语言都认同的公共类型和编程结构子集的相关规范。因此,如果构建仅提供与嫒莸

19、墓艿模甆类型,就可以确保 第三章系统应用程序的设计与实现第三章系统应用程序的设计与实现从宏观上来说,本系统可以分成两个模块:应用程序模块和驱动模块。应用程序将数据产生后发送给驱动程序,而驱动程序则直接操作硬件,通过硬件将数据发出。本章专注于介绍应用程序部分,而驱动程序在后面章节有详述。对于高帧频图像输出系统而言,上层的应用程序有三个作用:产生每一帧需上层应用总体分析前文中已经提到本系统的上层应用程序的三个作用,对于每个作用,系统都有相应的要求。不同的要求在实现的时候用到的方法是不一样的,那么在实现整个系统之前明确各个部分的要求是必不可少的工作。图像数据产生的要求帧率要求产生图像数据是上层应用的

20、主要工作,也是整个系统的核心。对于本系统而言,高帧频是其一大特点,也是设计系统是需要重点考虑的问题。由于系统产生的图像的帧率可能会很高,那么对于数据产生部分的要求就应该是在一定的时间内必须完成图像数据的生成。对于帧率的另一个要求就是可调性,也就是说帧率是在一定范围内变化的。目标要求本系统对于图像的内容有一定的要求,因为系统要产生目标运动的图像,那么该系统则应有一个确定的目标。这个目标可以是一个简单的几何图形,也可以是一个虚拟物体的模型。这个目标本身应该是可以运动的,而且是可以沿着一定轨迹来运动的。在整个场景产生的过程中,目标的类型,大小,运动轨迹,运动速率都应该是可以调整的。背景要求目标运动一

21、定是在一个特定的背景内来完成的,那么背景的也是这个系统需要生成的图像的一部分。一般来说,背景可以是简单的单一灰度。当然,复杂的 像序列。图数据生成部分的要求示意图在人和机器的互动过程中,有一个层面,即我们所说的界面。从心理学意义来分,界面可分为感觉泳酢酢醯和情感两个层次。用户界面设计是屏幕产品的重要组成部分。界面设计是一个复杂的有不同学科参与的工程,认知心理学、设计学、语言学等在此都扮演着重要的角色。用户界面设计的三大原则是:置界面于用户的控制之下;减少用户的记忆负担;保持界面的一致性。界面设计从流程上分为结构设计、交互设计和视觉设计三部分。结构设计要求图结构设计的内容 第三章系统应用程序的设

22、计与实现结构设计也称概念设计,是界面设计的框架。通过对用户研究和任务分析,制定出产品的整体架构。在结构设计中,目录体系的逻辑分类和语词定义是用户易于理解和操作的重要前提。在本系统中,结构设计从宏观上看来可以分为控制,设置和显示三个部分。其中控制描述的是用户对系统运行状态的控制;设置则是用户对系统参数设置的借口;显示部分是系统将输出反馈给用户的一个过程。图显示了本文中结构设计的框架。交互设计要求交互设计的目的是使产品让用户能简单使用。任何产品功能的实现都是通过人和机器的交互来完成的。因此,人的因素应作为设计的核心被体现出来。交互设计的原则为:有清楚的错误提示;让用户控制界面,提供多层次选择;允许

23、兼用鼠标和键盘;允许工作中断;使用用户的语言,而非技术的语言;提供快速反馈;方便退出;在本文中,界面的交互部分有以下要求:程序可以显示当前的帧率。视觉设计是在结构设计的基础上,参照目标群体的心理模型和任务达成进行视觉设计。包括色彩、字体、页面等。视觉设计要达到用户愉悦使用的目的。视觉设计的原则如下:界面清晰明了;减少短期记忆的负担;依赖认知而非记忆;提供视觉线索;提供默认、撤销、恢复的功能;提供界面的快捷方式;尽量使用真实世界的比喻;完善视觉的清晰度;界面的协调一致;同样功能用同样的图形:色彩与内容,应图像显示要求在本系统中,图像显示只作为用户直观的看到生成图像的结果,而不需要任 隔帧显示实际

24、就是在高帧频的图像数据流中抽取出来一部分帧来显示。这样抽取出来显示的图像数据流帧率就会下降。如。氲耐枷袷菸颐敲帧抽出一帧来显示,那么得到的图像帧率就会变成帧秒。那么我们就应该对实际显示的帧率有一定要求,否则就会出现图像视频不流畅的情况。一般来说我们都是以帧秒的帧率来显示图像的。应用程序的框架设计系统模块设计图系统模块设计框图图为整个系统的模块设计框图。其中用户输入的参数首先传入到用户操作模块处理。用户操作模块主要负责处理用户输入的各种消息,将用户的意图转化为操作或者数据,以一个结构的形式传递给数据生成模块。数据生成模块顾名思义就是要根据界面模块传递进来的参数生成一帧图像数据。但是其工作不仅如此

25、,该模块还要负责将数据封装成已经提前定义好的格式传递给底层驱动,最终通过 第三章系统应用程序的设计与实现用户图形界面部分涉及到的问题有两个。一个是正确的获取用户对系统的输入,另一个是正确的显示系统的输出。处理输入用户操作模块完成了整个程序对输入的处理,并且这个模块要负责将输入以一定的格式传给后面的数据生成模块。前面一节对系统输入的要求已经讨论的很清楚了,那么在处理输入的时候我们将输入分为两类:运行前设置的参数和运行时实时调整的参数。这两类输入在实现的时候是用不同方式来完成的。图用户操作模块原理框图图描述了用户操作模块的原理框图。图中描述了四个部分,包括显示方式,程序的操作,设置速率和设置初始化

26、参数。其中前三部分全部都是可以在运行时调节的参数,只有设置初始化参数这一部分是运行前必须设置好的。那么,在实现的时候,初始化参数就只需要在运行时传给数据生成模块,而其它三部分的参数则需要每一帧都传一次,这样才能保证可以动态的在运行时改变参数。用户操作模块在获得用户参数是还需要注意的一点就是检查用户输入的合法性。比如,用户在对背景灰度设置的时候设不小心敲入了一个负号,那么灰度值可能就会变成一个负数,这样的输入显然是不合法的,如果将这样一个非法的数据传入了后面的模块,则会给系统带来不可预知的问题,导致了系统稳定性的下降。因此,在设计用户输入模块的时候必须要考虑输入的合法性问题,并且要在界面上反馈给

27、用户错误的信息。再做完输入合法性检查之后,系统用户操作模块就应该将输入的数据以一定的格式传给后面的模块。具体的格式由于实现的不同可能会有一些差异,但是大体上是将前面提到的两种不同的分类分别组织成两种结构分别传输。显示输出 显示输出部分主要负责显示生成的图像数据,其主要的作用是为了让用户直上的,因此这个模块主要设计的问题就是隔帧显示。鳍翟帧第三组图分成四组:在生成每一帧图像的时候,该模块需要获得图像参数的信息。其中,有些参数是在运行前就已经设置好,传入该模块的;而另一些参数是每帧都有可能变化的,这些参数就需要每帧都传入一次。在确定每一帧参数之后,就进入到真正的画图阶段。这里所谓的画图就是指在内存

28、中生成图像数据。图像内容有可能是简单的直线或者圆,也可能是一些几何图形的组合,或者更复杂的真实图像。无论 第三章系统应用程序的设计与实现生成的方法如何,最终要在规定的时间内将图像数据产生。当图像数据产生之后就可以直接将数据发往后端驱动了。数据生成模块的流程本身不是很复杂,但是在设计上应该考虑以后实现的一些问题。前文中已经提到,本文中的系统将界面与数据分成了两个完全独立的模块。那么,在具体实现的时候,我们可能会将数据生成模块独立的构建成一个文它与界面部分通信完全是被动的,是由界面部分控制的。:用户行为用户界面模块数据生成模块刀:图用户界面模块控制数据生成模块图是界面模块和数据生成模块之间交互的过

29、程。首先用户的行为会被用户界面模块捕获,用户界面模块就会通知数据生成模块,令其生成相应的数据。当数据生成好之后,数据生成模块就会反馈个界面一个信息,这时候界面就知道数据已经生成了。因此,数据生成模块在整个体系中处于一个被告知,被调用的行为之中。应用程序界面的实现当系统的要求和框架都已经确定之后,下一步的工作就是具体实现系统了。实现一个系统和设计一个框架所考虑的问题是截然不同的。在前一节设计框架的内容中,我们重点考虑的问题是如何将系统按照其功能划分成一个一个的模块,模块之间的关系是如何的。而在从本节开始,我们所要讨论的内容是这些功能模块搭建的流程是什么,用具体的代码是如何来组建的,这些模块之间的

30、通信和同步在具体的操作系统下是如何完成的等等一系列具体的问题。本节主要论述如何编程实现系统应用程序的界面。前一节我们已经知道,系统的界面是与数据分开的,之所以这样,就是因为同样的数据生成模块可以有不同的界面显示,或者说对于同样的数据生成模块而言,只要接口不变,界面部分可以是不同的样子,甚至于界面可以是不同编程语言实现的。 挠攀莆猈开发开辟了一片新天地,同时也借助应用程序向导使开发者摆脱离了那些每次都必写基本代码,借助类向导和消息映射使开发者摆脱了定图界面程序的基本流程图图 第三章系统应用程序的设计与实现本身结束后。这一点正符合我们设计的要求,我们绝对不允许用户在程序运行的调节的参数诙曰翱蚰谟幸

31、恍渌目丶鏑琓等都用的是峁谋曜伎丶允径曰翱虻氖焙蛑恍枰T诤鲜实奈恢玫饔肕的函数参数设置对话框。从图中可以看到在对话框中,我们将一些需要初始化设置的参数都以各种控件的形式表达了出来。在显示图像的时候,本系统需要有两个视图。一个视图是直接用来显示生成的图像;另一个视图用来显示通过蹇涑龊笤倩夭傻耐枷主要目的是这种窗口可以拆分出数个窗口,每个窗口可以映射到文档的任何位置,窗口和窗口之间确实彼此独立的。拆分窗口需要一个类,这个类是峁摹提供的拆分共有两种:动态拆分和静态拆分。动态拆分的操作比较简单,但是它除了拥有“动态”增加窗口的优势之外,有两个劣势:第一,每一个窗口都使用相同的,因此显示出来的东西千篇一律

32、;第二,窗口之间并非完全独立。相反,静态拆分窗口的窗口数一开始就固定了,各个子窗口所使用的必须在窗口拆分之前就准备好。每一个窗口的活动完全独立自主,有完全属于自己的水平滚动条和垂直滚动条。类型的变量。然后在:函数中创建并显示拆分的窗口,以下是部分示意代码。;,;琾; 图程序界面控制的状态转移 第三章系统应用程序的设计与实现一些。软公司引入了一种崭新的编程语言:功能:对继承与多态的全面支持。定义类、结构、枚举、委托和接口的强类型关键字。因为有这些关键字,对基于界面的编程技术的全面支持:集成开发环境提供了许多图形设计器,是的构建的过程变得的程序是在可视化编辑器里面看不到窗口的,程序员要相对窗口做任

33、何的操作都属性和控件的布局进行可视化的配置,这样大大简化了程序员的工作量,提高了开发效率。勰簿黔漆加控怿哺援图疧工具箱中的容器 示,用户可以直接在可视化的编辑器内通过简单的鼠标操作将该容器直接加入窗口之中,用户可以更专注于编写自己的代码,而不用管的实现。添加菜单和对话框这样的代码有一个缺陷,就是当用户在对话框中设置了一些参数,下一次在我们在对话框中做的任何改变都会被保留,因为这个对话框一直是存在的,不会 第三章系统应用程序的设计与实现调用数据生成模块文件。而这里的界面是用教碌挠镅钥7摹埽甆库图甆支持的编译器都发出也指令和元数据由于绦蛴隬程序本质完全不同,调用动态库的时候需要声明函数。声明格式如

34、下:發”“【】们珺 生成界面的效果图应用程序数据生成模块实现误差太大。该方法是通过响应程序界面会“假死”,大大降低用户体验。 第三章系统应用程序的设计与实现受的。从本质上讲,运用亩逼鞫蓟崾艿絎多任务和调度的影其实这样做的原理很简单,前提是硬件板卡要周期性的给驱动程序一个通知,而这个周期可以做到很精确爰。我们上层程序用一个无限循环,循环体内在不停地调用底层驱动程序的某一个函数,而驱动程序的这个函数是只有在接收到底层硬件通知之后才返回的,否则就会一直等待而不返回。我们称这样的调用方式为同步调用,这样做导致的结果就是上层应用程序的循环也是一个周期执行一次,于是就可以产生非常精确的定时了。运用这样的方

35、式精确定时的问题就可以解决了,但是又会带来另一个问题:我们的程序中有一个无限循环,程序的界面永远也得不到响应了。然而,这样的问题是可以用多线程技术轻而易举的解决的。两个线程:界面线程和数据线程。界面线程即为前一节所实现的一切,在此不做赘述,而数据线程即为数据生成模块的实现形式。在生成数据的时候,我们调用了驱动程序的一个函数。这个函数的主要功能就是从应用程序向底层驱动传输数据。同时,这个函数还扮演了上文中提到的同步调用的函数功能,也就是说我们在向驱动程序传数据的时候,每传一帧的图像数据,必须等到一定时间过后这个函数才会返回。这样,我们就用两个线程完成了程序精确定时的功能,从而正确的传输了数据。当

36、我们将数据生成模块独立成一个线程来实现的时候,我们就应该考虑如何正确的生成图像数据了。图像数据在编程的角度看来就是一个一维数组,数组中的元素就是按照行遍历图像每个像素的值。那么,在这样一个一维数组上画图是有些复杂的。直线和矩形相对来说简单,圆和椭圆就会复杂一些,其他的不规则 我们使用内存是按照如下步骤完成绘图的:腁绘制图像。获取内存中的图像数据。这时要调用峁腉函数获得。释放资源。这样,我们的数据生成模块就可以完成了。但是,在整个系统之中,数据生动态链接库 第三章系统应用程序的设计与实现有助于应用程序的本地化;有助于解决平台差异;本系统中用到动态库主要是为了导出函数,由其他可执行程序唇缑娉绦调用

37、。在本文中是这样生成动态链接库的:用的向导创建一个动态导出的函数;在源文件中实现需要导出的函数。 第四章系统驱动的程序设计与实现第四章系统驱动的程序设计与实现驱动程序对于整个系统而言扮演了一个承上启下的角色,它将上层应用程序与底层硬件连接起来。在现代的操作系统中,应用程序没绦是没有权限直接操作硬件的,必须通过调用驱动程序诤顺绦来完成与硬件的交互。本章主要介绍在教吕肳驱动模型 卡的传输。驱动程序是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作。本节主要介绍在虚拟设备驱动程序且桓鲇没讲考梢允笵应用程序访问教系挠布通过屏蔽疧权限掩码来捕

38、获端口存取操作,它基本上是模拟硬件操作,这对于那些直接对裸机硬件编程的应用程序特别有用。 协议的内核模式驱动程序。绦蚴且恢諴驱动程序,它同时还遵循电图显示驱动程序是用于显示和打印设备的内核模式驱动程序。文件系统驱动程备而不用其它驱动程序帮助。征。另一个文件称为迷你驱动程序,它包含类驱动程序用于管理设备实例的厂商 第四章系统驱动的程序设计与实现专有特征例程。类驱动程序和迷你驱动程序合在一起才成为一个完整的功能驱动程序。我们可以把一个完整的驱动程序看作是一个容器,它包含许多例程,当操作系统遇到一个疧请求时,它就调用这个容器中的例程来执行该请求的各种操作。个文件都是文本文件,内容如图所示。图第兴得髑

39、睦嘈褪荳驱动。第行设置了驱动的源文件。编写完这两个文件之后,在说醒瘛皒驱动模型中,姹揪褪堑魇园姹荆鳩姹揪褪欠邪姹荆嗨朴赪 通信就成为了重要的内容。图驱动程序与上层和底层之间的关系子系 第四章系统驱动的程序设计与实现在系统中还有许多服务例程,它们同样运行在内核模式中,为应用程序请求提供服务,并以某种方式与设备交互。它们首先检查传递给它们的参数以保护系的数据结构,并把这个数据结构送到某个驱动程序的入口点。在刚才的调用中将会创建一个含有主功能代码的璞盖绦蚨愿肐的处理都与应用程序无图像输出卡。驱动程序完成一个疧操作后,通过调用一个特殊的内核模式服务例程来完成该瓿刹僮魇谴鞩的最后动作,它使等待的应用程序

40、恢复运行。上面所提到的应用程序调用的璞盖绦颍约岸缘撞鉖板卡的操作都是需要驱动程序来完成的。也就是说,系统的驱动程序整体的设计包括了给一并提交给上层应用开发人员的。的。所谓的控制字,是指我们与底层硬件开发人员布蹇呒7嗽提前规定好的简单的协议。例如,在板卡渲每占恢眯慈表示板卡复位等。在开发过程中,我们需要很多的控制字,以便让用户能够从上层应用程序来控制底层板卡的行为。这种控制字实际上本身也是数据,但是在实现的时候并不是与一帧图像数据的地址相同,因此在设计与上层应用程序接口的时候也要将这两种传输数据的方式分开。图描述了数据传输与控制字传输的过程。我们可以看到,上层应用程序对块了控制字传输子模块来说,

41、疧请求包是不同的类型,它们对疧请求包的处理也不一样。这两个子模块最终是要调用后端的处理部分,在这部分看来,两种疧终的目的都是读写数据。 驱动程序部分撞击喟水;寿冒蕊胜。请求图数据传输和控制字传输过程上层应用程序接口部分主要是设计数据传输和控制字传输这两个模块。实际上,这两个模块的设计本身并不复杂,但是特别需要强调的是扩展性。尤其是控制字传输模块,也许在不久之后,我们对系统又提出了新的要求,不免要改动一些上层的模型、添加一些新的控制,这时候如何尽量小的改动驱动程序或者不改动驱动程序就可以完成这些新功能的添加就成为现在设计驱动所要思考的问题了。在本系统中,我们是这样设计扩展性的。定义好与底层逻辑部

42、分的通信的结构。 第四章系统驱动的程序设计与实现它们使用常规的内存引用来寻址这些寄存器。内存映射设备暴露了软件可以使用互转换。每个映射寄存器保存着一个物理页帧的地址。硬件使用一个地址来读写内存。对软件来说映射寄存器扮演了与页表项相同的角色。中断资源是完成一次类型,以完成一次传输。图底层硬件通信模块的工作方式那么,如何利用这些资源来完成对布姆梦屎筒僮髂图描述了系统底层硬件通信模块工作的方式。可以看出,数据从上层应用程序接口模块传入到总线地址空间内,从总线地址空间来访问硬件。在我们可以将硬件内的存储空间看作是一个个的寄存器,这样访问的时候就好像在访问计算机的寄存器一样了。系统驱动程序的实现前文已经

43、将驱动程序的结构分析完毕了,也已经将驱动程序划分了模块。按照前面的分析,我们很容易就可以将驱动程序的各个部分实现。本节重点介绍驱动程序具体的实现过程。 指针,指向一个飧龊允粲诔跏蓟糠郑琖给出了该函;函数是需要我们来实现的,在这个函数中,我们需要完成以下工作:调用创建设备对象,并建立一个私有的设备扩展对象。初始化设备扩展和设备对象的成员。功能设备对象下层驱动对象指针符号链接名 删除对象所用的同步锁;断; 第四章系统驱动的程序设计与实现;襊求都是以疧包虺的形式来表现的,这里的械憷嗨朴赪上层应程。并不是每种季庑街瑁捎谏璞咐嘈秃虸种类的不同某些步骤这几个步骤的处理。可以说以上驱动程序就是围绕幢嘈吹模鞩

44、也就成为了驱动程它将以硬件中断形式发出通知,我们会在中断处理函数中做一些最简单最重要的处理,然后将剩下的工作交给掏瓿伞瞥俟痰饔机制一个通用机制,通常都用在中断处理中,是为了使操作系统能够及时的相应其他程序或者中断。本系统中大量的绕涫腔贒传输的际窃贒例程中完成的。上层应用程序接口的实现系统驱动程序的框架是整个驱动程序的灵魂,在这个框架下我们需要进一步实现驱动程序与上层应用程序的通信。前面的章节已经分析过,我们将上层应用程序的接口分为了两个子模块:数据传输模块和控制字传输模块。我们是通过不同的派遣函数来具体实现这两个子模块的。 方式:疧管理器锁定了包含用户模式缓冲区的物理内存页,并创底层中断处理在

45、控制字传输模块中,我们首先实现了函数。这个函数主要处理飧鲇没腁需要提供一个输入缓冲区和输出缓冲区,在内 第四章系统驱动的程序设计与实现腎。在控制字传输模块中,牧硪桓鲎饔镁褪谴写鞩。在我们的系统中,处理一个上层应用的请求会用一定的时间,而这个时间是取决于蹇摹敲慈绻鼻暗腎峁怪蟹峙湟桓鯥的域,记录当前处理的闭飧鯥没有被完成的时候,新的岜环胖玫絀前文中提到,我们是利用中断来完成最后的传输的。这里的中断是一个外部中断,是由蹇呒囊桓鲋芷谛缘闹卸希蒔总线,最终通知到驱动程序。当驱动程序收到这个中断之后,驱动程序会配置蒁完成传输工而不是在简单的传输数据。位局部总线,可同时支持多组外围设备。输功能。遵循婀娣叮苫

46、竦米罡呖纱杂的涌谟蒙杓票涞孟喽约虻壳凹撼晌V髁鞯腜接口器件之一。 位偏移产生芟逽中断邮槽中断使能本地中断使能本地中断使能程序中列矗部梢源颖镜囟即蹇读写,偏移地址分别是和 第四章系统驱动的程序设计与实现主要负责控制的行为,也可以用来检查是否传输完成。表命令状态;篈,位偏移动。图描述了底层通信模块的状态转移图,驱动程序将传输的数据准备完成后,就开始等待中断产生,当中断发生后开始传输数据,数据传输完成后,驱动程序中断处理部分配置好哪承拇嫫骱螅屯狣开始传输数据,板卡序的运行,开始下一帧的传输。可以看出,中断处理将底层板卡的行为与驱动程序的行为联系到了一起。也就是说,中断处理是底层硬件通信模块的核心内容

47、。图底层通信模块传输状态图目的即是为了写寄存器。 显示了整个系统的工作状况。驱动程序相关部分的实现 第四章系统驱动的程序设计与实现的文件。募怯杀曜嫉腁码组成,可以用任何一款文字编辑器查看修改其中的内容。中描述的设备类型:坏乇晔陡蒙璞咐唷头文件瓾定义了标准设备类“的,牡抵泄赜赩段的内容也描述了这些标准设备类。伟傅及沧俺绦虬沧八枞砑氖导手甘尽桓龅湫偷腤】这个赋鑫颐窍肴冒沧俺绦蛴昧硪桓鯥段中的信息来指导文件复畇畇用于实现这个目标: 形式如下:驱动程序实际上是为上层应用程序操作硬件提供一个接口。那么,当我们完的三个函数: 第四章系统驱动的程序设计与实现最后,我们把这一系列函数编译生成一个动态库,并且提

48、前写好相应的头文 消息机制的背后问题。开发并调试了系统的上层应用程序,加深了对应用程序编程的了解,巩固了疌语言的知识。学习了偷募芄梗由盍硕訵操作系统的理解现在这个系统能够生成一些图形和一些背景,但是没有加入实时的背景采集,也就是说没有实时的背景采集模块,若果有了实时的背景采集,那么系统产生的场景就会更加真实。同时,我们还可以加入虚拟的元素,例如虚拟的飞机坦克等,这样就可以模拟一些复杂物体的复杂运动了。这样,虚拟和显示相结合,就会形成一个大的增强现实系统。那时,系统的真实性、完整性和灵活性就会变得更高了。在驱动程序的实现方面,还有一些可以改进的地方。本系统的驱动程序现在暂时只能识别一个蹇绻卸喔鯬

49、板卡,也只能找到第一块。改进的不同的板卡就可以通过不同的来查找了。在输出帧率方面,系统可以继续做更高的频率。当然,在硬件上可能会对芟哂隤诺摹总线的理论传输速率是痵,如果要传输更高帧总线的理论速率是痵,完全可以满足更高帧频的需求。 致谢随着研究生论文工作的结束,我的研究生生活基本也告一段落了。顺着论文的轨迹看去,就好像是我研究生几年的浓缩:从一无所知到满载而归。在这研究生的几年里各位老师和同学都给了我无数的关心和帮助。首先我要感谢我的导师王军宁教授。王老师渊博的学术知识,严谨的治学作风,敏锐的科研眼光和活跃的学术思维是我对他的第一印象。在随后王老师和我之间的教与学的过程中,我更是感到了王老师的和

50、蔼可亲的为人与诲人不倦的风范。当我在学习上有困难时,他指导我;当我在思想上有惰性时,他提醒我。王老师在思想上教育了我,使我明白坚持不懈、勤恳踏实是科研的必须。王老师就其次我要感谢实验室的何迪老师以及胡建超、聂求宝、许建军、李凯、李洪波、张瑛、高红梅、李琼、李珊珊等同学。感谢你们陪我走过了研究生时光,在学习和生活中给予了我帮助。最后我还要特别感谢任晓娜同学,在我困难的时候帮助我,在我失败的时候鼓励我,在我沮丧的时候开导我,让我在学习和生活中得到了巨大的动力。 【縊 縄琓, ,珹,【】王鸣浩,王志,吴小霞。基于的高帧频数字图像采集显示系统。液年月。【】徐大鹏。高帧频数字摄像机显示系统设计。光机电信息,第卷,第期,年。中科技大学出版社,年。社,年。粞搿并发编程指南。机械工业出版社, 基于平台的高帧频场景产生系统的设计与实现緾罱菀搿程序设计谖灏。清华大学出鹱影海芫福蚊粢搿縅核心编程谖灏。清华大学出版社,年。琈【】珼珹琈【】琈年。 运动目标模拟场景产生系统的研究与实现参与了板卡的设计用实现了图像数据的生成编写了驱动程序眼动跟踪技术的研究及优化实现

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!