(通信与信息系统专业论文)三星堆编码系统corrector设计与实现:界面、算法与系统测试.pdf_第1页
(通信与信息系统专业论文)三星堆编码系统corrector设计与实现:界面、算法与系统测试.pdf_第2页
(通信与信息系统专业论文)三星堆编码系统corrector设计与实现:界面、算法与系统测试.pdf_第3页
(通信与信息系统专业论文)三星堆编码系统corrector设计与实现:界面、算法与系统测试.pdf_第4页
(通信与信息系统专业论文)三星堆编码系统corrector设计与实现:界面、算法与系统测试.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(通信与信息系统专业论文)三星堆编码系统corrector设计与实现:界面、算法与系统测试.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 在通信系统研究开发过程中,为了提高设计效率,降低硬件系统实验成本, 借助于各类仿真软件进行设计、分析和仿真已成为必然。由于通信编码的重要 性,在通信系统设计过程中,如何选择相应通信编码方法和编码参数,如何生 成需要的码字并对其特性进行分析至关重要。本文以已有三星堆编码系统 s x d c s ( s m l x i n g d u ic o d i n gs y s t e m ) 总体框架为基础,致力于研究开发基于 m s w i n d o w s 版本的信道编译码器( c o r r o c t o r ) 子系统。 本文首先分析了基于w i n d o w s 操作系统的三星堆编码软件c o r r o c t o r 的设 计需求,给出通信信道编码仿真平台所应具备的主要功能。在此基础上,完成 了使用m f c 基础类库的系统整体架构设计、人机交互界面设计、矢量图形显 示设计、d l l 数据模块设计和部分核心算法设计。 其次,本文详细讨论了系统实现中的几个关键技术:详细给出了各个界面 控件的实现细节,包括主窗口的类型选择、线程设计、人机接口设计等:讨论 了参数传递的过程,包括用户信息的接受、信息的存储方式以及程序的调用; 给出了在s x d 通信编码仿真系统上实现矢量图形的功能和具体步骤:研究并给 出了s x d 通信编码仿真系统的多个编码模块的算法实现,以及一些信道仿真程 序。 晟后。对所丌发的s x d - c s c o r r e c t o r 进行了总结分析,并阐述了系统的进一 步优化与功能扩展工作。 关键词:通信编码;s x d 编码系统;m f c 基础类库;人机交互界面;矢量图 形;d l l 数据模块 西南交通大学硕士研究生学位论文第1 i 页 a b s t r a c t i nt h er e s e a r c ha n dd e v e l o p m e n to fc o m m u n i c a t i o ns y s t e m s ,i no r d e rt om a k e e f f i c i e n td e s i g na n dt or e d u c eh a r d w a r ec o s t ,t h ea n a l y s i sa n ds i m u l a t i o nw i t ht h e h e l do fv a r i o u ss o f t w a r et o o l sb e c o m en e c e s s a r y , d u et ot h ei m p o r t a n c eo ft h e c o m m u n i c a t i o nc o d i n g , t h es e l e c t i o no fc o d i n gm e t h o d sa n dc o d i n gp a r a m e t e r s , t h e c o d eg e n e r a t i o na n dp e r f o r m a n c ee v a l u a t i o na r ee s s e n t i a lt ot h ec o m m u n i c a t i o n s y s t e md e s i g n t h e r e f o r e t h i st h e s i sa i m sa td e s i g n i n ga n dr e a l i z i n gam s w i n d o w s b a s e dp l a t f o r mo fc h a n n e lc o d i n g ( c o r r e c t o r ) b a s e do nt h ee x i s t i n gf r a m e w o r ko f s a n x i n g d u ic o d i n gs y s t e m ( s x d - c s ) t h i st h e s i sf i r s t l ya n a l y s e st h er e x l u i r e m e n t so fm s w i n d o w sb a s e ds x d e o r r c c t o r , a n d 画v e si t sm a i nf u n c t i o n s b e s i d c s ,t h em a i ns t r u c m r eo ft h es o r w a r e , i n t e r f a c e ,g r a p h i c su s i n gt h em f cc l a s s e s ,d l ld a t am o d u l ea n ds o m e c o r e a l g o r i t h m sa r ep r e s e n t e d t h e n s o m ek e yi s s u e sa r ed i s c u s s e d 。i n c l u d i n gt h ei n t e r f a c ec o n t r o lm o d u l e s s u c ha sm a i nf r a m ec l a s s ,t h r e a dd e s i g n i n g ,t h ef u n c t i o ni n t e r f a c e ,a n ds oo n ; p a r a m e t e rt r a n s f e rs u c ha su s e ri n f o r m a t i o nr e c e i v i n ga n ds t o r i n g ,p r o g r a mc a l l i n g ; v e c t o r - f o r mg r a p hf u n c t i o n sa n dp r o c e s s e s ;i m p l e m e n t a t i o no fs o m ec o d i n gm o d u l e s a n dc h a n n e lm o d u l e s f i n a l l y ,t h et h e s i ss u m m a r i z e st h es x d c sc o r r e c t o rd e s i g n ,t o g e t h e rw i t ht h e f u t u r es y s t e me x t e n s i o na n do p t i m i z a t i o n k e yw o r d s :c o m m u n i c a t i o nc o d e ,s x dc o d i n gs y s t e m ,m f cc l a s s e s , m a l l m a c h i n ei n t e r f a c e ,v e c t o r - g r a p h ,d l ld a t am o d u l e , 西南交通大学硕士研究生学位论文第1 页 第一章绪论 1 1 通信系统的组成以及通信编码的基本概念 通信的目的是要把对方不知道的消息及时可靠地传送,因此,要求一个通 信系统传输消息必须可靠与快速【l 】。但是,快速与可靠又是相互矛盾,如何比 较合理地解决这一问题,是诈确设计一个通信系统地关键问题之一。 通信编码是指在通信系统中,为了提高通信性能丽设计用来进行信号交换 的数字序列。 根据不同的分类标准,通信编码的分类方式有很多种。 根据通信编码在通信系统中的应用位置,通信编码可以分为信道编码 ( c h a n n e lc o d i n g ) 和信源编码( s o u r c ec o d i n g ) 。信源编码用于对信源进行有效的 描述,这种有效描述可以减少存储或传输信源数据采样值所占用的存储空间和 频带宽度。 而信道编码用于使传输信号更好地抵抗各种信道损伤的影响,例如噪声、 干扰以及衰落等。1 9 4 8 年,仙农( s h a n n o n ) 的论文通信的数学理论中提出并 证明了:对于一个信道容量为c 的有扰信道,消息源产生信息的速率为r ,只 要r 签。则总可以找到一种信道编码和译码方式使编码错误概率p 随着码长n 的增加,按指数下降到任意小的值,表示为,这罩e ( r ) 称为误差指数:若 r c ,则不存在编译码方式来实现无误传输。这一结论为信道编码指出了方向, 但它仅是一个存在性定理,并未给出怎样去寻找这种性能优良的码。 用于检测的信道编码被称作检错编码,而既可以检错又可以纠错的信道编 码被称作纠错编码1 2 】。近5 0 年来,在信息技术发展和实际需要的不断推动下, 人们一直在寻求实现复杂度合理的更优秀的编译码方法,去逼近s h a n n o n 理论 的理想界限。令人鼓舞的是,在这个过程中,已经取得了许多伟大的进展,从 早期的分组码、代数码,到r s 码,以及后来的卷积码,今天的t u r b o 码,l d p c 码,所能达到的性能和s h a n n o n 限问的距离被不断缩小。这些方法也已经投入 到多个领域的商用中,如卫星通信和深空通信,数据存储,数据传输,移动通 信,数字音频和视频传输等。 西南交通大学硕士研究生学位论文第2 页 1 2 通信编码软件国内外现状 1 2 1 通信编码软件研究与应用现状 随着通信技术近年来的广泛应用和迅速的发展,可以看到许多的通信方面 的软件的出现,最典型的有美国e l a n i x 公司推出的s y s t e mv i e w 动态系统仿真 软件,m a t h w o r k s 公司丌发的科学与工程计 算仿真软件一m a t l a b s i m u l i n k ,这些都是 现在通信行业比较常见得系统仿真软件。但 是由于两种软件的侧重点都有所不同,所 以,两种软件所能生成的编码数目都不多, 主要的编码方式如以下表1 1 中所示: 商 s y s t e mv i e w 自带包含的编码模块 业的通信库 g o l d 码 通 g r a y 码 信 卷积码 软 p n 码 w 8 l s h 码 m a t l a b 的s i m u l i n kc r c 码 l i b r a r yw a l s h 码 g o l d 码 k a s a m i 码 b c h 码 二迸制循环码 二迸制线性码 r e e ds o l o m o nb l o c kc o d e h a m m i n g 码 表1 1 常见通信软件包含的编码模块 综上所述,可以看到,目前该研究领域比较全面的,系统的软件还很少。 三星堆编码系统是第一定位在这个研究领域的软件系统。该软件是保留版权的, 西南交通大学硕士研究生学位论文第3 页 可以供科学技术研究的共享的软件,同时,还可以通过后续的版本不断对其编 译码方式进行升级。 1 2 2 三星堆编码系统 三星堆编码系统( s a n x i n g d u ic o d i n gs y s t e m ) 是一个国内有自主知识产权的, 可以用于通信编码领域的工具软件嘲。 三星堆编码系统名字的由来是以成都市北郊3 9 公里处广汉“三星堆”古蜀国 命名。是一个编码生成器和分析器软件。计划功能是可用于生成各种通信序列、 纠错编码、保密编码等,还可对各种编码的特性和相关应用系统的性能进行分 析。该软件对于各类从事通信、信息、电子、雷达等应用领域的高校、研究所 和公司的研究人员及工程师均具有重要应用价值。 三星堆编码系统项目( s a n x i n g d u ic o d i n gs y s t e mp r o j e c t ) 于2 0 0 3 年6 月l 开诈式启动,2 0 0 3 年1 2 月3 0 同丁f 式发布第一版。三星堆编码系统由西南交通 大学范平志教授总体设计,并组织一批由本校教师和研究生组成的志愿者队伍 参与研究丌发,并在西南交通大学移动通信研究所实施i ”。 该软件具有以下的特征【5 】: 1 开放的体系; 2 具有w i n d o w s 和l i n u x u n i x 平台下的多种类版本: 3 可以独立使用的个人版本和w e b 环境下使用的版本; 4 功能灵活,可扩展; 5 友好的多种方式的输入输出; 6 图形模式和命令行模式; 7 内核由c + + 写成,可移植,跨平台; 西南交通大学硕士研究生学位论文第4 页 酗1 - 1 三吊堆编码系统发布的1 0 3 版外观 目前三星堆编码系统已经发布了1 0 3 版,主对话框界面如上图1 1 所示, 其主要的成果主要集中在通信序列的生成部分,上图1 1 就是已经建设好的扩 频码部分的界面,以及其在w i n d o w s 和l i n u x s 下的版本。纠错编码部分和保 密编码部分还没有加入到系统当中。而纠错编码部分的研究j 下是本次课题的重 点。 1 3m s w i n d o w s 应用软件设计 1 3 1w i n d o w s a p i w i n d o w s 是一种基于事件的消息循环的多任务操作系统 6 1 。 a p i 就是应用程序编程接口( w i n d o w sa p p l i c a t i o np r o g r a m m i n gi n t e r f a c e ) p j 。 操作系统留给应用程序的一个调用接口,即一系列模块化的类和函数,应用程 序通过调用操作系统的a p i 而使操作系统去执行应用程序的命令( 动作) 。它 从w 玳1 6a p i 发展到了现在普遍使用的w i n3 2a p i 。a p i 传统上是为丌发 w i n d o w s 应用程序的c 和c - 忖程序员编写的,但其他的编程语言( 包括 v b a ) 也可以调用其中的函数。它能用来操作组件、应用程序或者操作系统的 组函数。典型的情况下,a p i 由一个或多个提供某种特殊功能的d l l 组成。 西南交通大学硕士研究生学位论文第5 页 d l l ,即d y n a m i cl i n kl i b r a r y ( 动念链接库) 。我们经常会看到一些d i i 格式 的文件,这些文件就是动念链接库文件,其实也是一种可执行文件格式。跟e x c 文件不同的是,d l l 文件不能直接执行,他们通常由,e x e 在执行时装入。内含 有一些资源以及可执行代码等。其实w i n d o w s 的三大模块就是以d l l 的形 式提供的( k e r n e l 3 2 d l l ,u s e r 3 2 d l l ,g d l 3 2 d 1 1 ) ,里面就含有了a p i 函数的执 行代码。【s j 1 3 2s d k 编程 s d k 是s o f t w a r ed e v e l o p m e n tk i t 的缩写。中文意思就是“软件丌发工具 包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助丌发某一类软件的相 关文档、范例和工具的集合都可以叫做 s d k ”。为了使用a p i 函数,我们就要 有跟a p i 所对应的h 和l i b 文件,而s d kj 下是提供了一整套丁i :发 w i n d o w s 应用程序所需的相关文件、范例和工具的“工具包”。 由于s d k 包含了使用a p i 的必需资料,所以人们也常把仅使用a p i 来编 写w i n d o w s 应用程序的开发方式叫做“s d k 编程”。而a p i 和s d k 是丌发 w i n d o w s 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之 上的,比如v c l 和m f c ,虽然他们比起“s d k 编程”来有着更高的抽象度,但 这丝毫不妨碍它们在需要的时候随时直接调用a p i 函数。 1 3 3m f c 类库编程 。m f c ,微软基础类( m i c r o s o f tf o u n d a t i o nc l a s s e s ) ,实际上是由微软提供的,用 于在c + + 环境下编写应用程序的一个框架和引擎,v c 什是w i n o s 下开发人员使 用的专业c + + s d k , m f c 就是挂在它之上的一个辅助软件丌发包,m f c 作为与 v i s u a lc + + 血肉相连的部分,m f c 同b c + + 集成的v c l 一样是一个非外挂式的 软件包类库,只不过m f c 类是微软为v c + + 专配的【”。 m f c 是w i na p i 与c + + 的结合1 9 1 , a p i 是一种软件编程的规范但不是一种 程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对 w i n o s 下应用程序的开发。使这些被开发出来的应用程序能在w i n o s 下运行。 比如v b ,v c + + 0 a v a , d e h p i 编程语言函数本质上全部源于a p i ,因此用它们开发 出来的应用程序都能工作在w i n o s 的消息机制和绘图罩遵守w i n o s 作为一个 西南交通大学硕士研究生学位论文第6 页 操作系统的内部实现,这其实也是一种必要微软如果不提供a p l ,w i n 编程的工 作就不会存在,上面说到m f c 是微软对a p i 函数的专用c + + 封装。这种结合一方 顽让用户使用微软的专业c + + s d k 来进行w i n 下应用程序的开发变得客易,因 为m f c 是对a p i 的封装,微软做了大量的工作,隐减了很多内节程序丌发人员在 w i n 下用c + + m f c 编制软件时的大量内节,如应用程序实现消息的处理,设备 环境绘图,这种结合是以方便为目的,必定要付出一定代价,因此就造成了m f c 对类封装中的一定程度的的冗余和迂回,但这是可以接受的。 m f c 不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行 界面丌发,关联个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即 类的作用不是一个界面类,不实现对一个窗口对象的控制( 如创建,销毁) ,而是一 些在w i n o s ( 用m f c 编写的程序绝大部分都在w i n o s 中运行) 中实现内部处理 的类,如数据库的管理类等。 1 4 本文主要研究工作及内容安排 通过比较和总结前人的工作并且结合当今的发展现状,本文认为w i n d o w s 平台下的s x d 编码仿真软件界面设计和编写的关键问题在于界面组件的设计 和实现以及仿真程序的嵌入问题和两者的内在切合。它能萨确接收用户界面传 递来的参数,并进行显示和接受,传送至内部相应的仿真程序,经过编译码算 法的计算后,进行仿真,再将一确的结果返回用户交互界面的整体系统。有鉴 于此,本文详细介绍了s x d 编码系统w i n d o w s 平台中应用设计思想,并给出 了具体的关键代码。 基于以上的主要研究工作,按照w i n d o w s 系统下的软件丌发流程,论文的 具体安排如下: 第一章是全文的绪论,介绍了通信编码系统的现状以及开发系统的背景技 术。 第二章主要介绍m s w i n d o w s 平台下s ) a 阻c s c o r r e c t o r 系统的总体设计。 主要内容有s x d 编码系统系统总体设计,系统用户功能设计,系统架构图,系 统开发环境与实现技术,系统软件环境,系统开发技术及工具,m f c 程序设计。 在系统总体设计中,详细介绍了s x d 编码仿真软件的总体构架以及系统前台后 台的设计。 第三章主要介绍s x d c s c o r r c c t o r 界面与图形设计的细节,提供了部分关 西南交通大学硕士研究生学位论文第7 页 键代码。宅要内容有窗口架构实现,对话框的设计,参数信息传递设计,矢量 图形的生成实现。 第四章主要介绍s x d c s c o r r e c t o r 信道与典型编译码算法实现。提供了 s x d 编码仿真软件的一些具体的编码方式和信道的仿真程序的原理及其相关 的程序细节。 第血章最后总结了全文,并对未来的工作进行了展望。 西南交通大学硕士研究生学位论文第8 页 第二章m s w i n d o w s 平台下s x d c s c o r r e c t o r 总体设计 2 1s x d 。c s c o r r e c t o r 系统需求分析 本课题的主要目标是对通信系统作一个较为完整的设计,主要目的是在完 善三星堆编码系统的纠错编码部分。在将实现的软件中,仿真模型可看作一个 完整的通信系统,即由信源,信源编码、信道编码、噪声信道、信道译码、信 源译码、信宿,七部分组成,通信模型简图如下图2 1 所示。 幽2 1 通信系统简幽 同时系统根据用户选择的编码参数生成所需的编码仿真过程及其相应的结 果是三星堆编码系统实现的基本功能。在此功能的基础上,其体系结构有如下 特点: 1 ) 多种随机信号产生: 软件向用户提供的信源可以通过对话框来选择多种信源的输入,例如信源 信号可以是均匀分佰或者全0 1 的信号; 2 】对仿真过程的控制: 用户能通过友善的交互式界面快速的学会并使用该编码系统,整个系统将 通过快捷键,下拉菜单以及提示框等多种模块来完成用户与程序的交流,使用 户可以通过简单的选择和输入来控制整套系统的工作; 3 ) 仿真系统的完整性: 在币常的数字通信的过程中,一个信源要传输到信宿,中h j 要经过很多的 西南交通大学硕士研究生学位论文第9 页 过程,本系统可以提供大部分的仿真,其中将包括调制部分,信道编码部分, 信道噪声部分,以及相应的解调解码等,这样的一个完整的系统爿。可以尽可能 全面的反应出仿真结果的可靠性和真实性; 4 ) 结果观察的便利性: 多样的结果输出方式可以使用户更清楚的了解到通信系统的性能,比如可 以通过误码率曲线来直观的观察到对系统误码率的影响,通过对话框中的结果 输出进行仿真输出数据的比较。 5 ) 编码方法的多样性: 鉴于很多通信仿真软件都没有专门的对编码方法进行完善,而我们所要做 的系统正是专门针对这一不足而对通信领域的一项重要补充,所以,我们所做 的系统在编码方法的种类上可以说是最为全面的,同时,还通过了v c + + 的 优秀的系统扩展性和移植性,可以说,对以后更大范围内的应用做好了良好的 准备工作: 6 ) 系统接口的通用性: 通用的接口作为我们这次系统设计的关键,将着重的体现在多系统,多平 台,高移植性等几个方面。用户不仅可以通过下载程序库来升级现有的三星堆 软件,同样还可以通过单纯的下载应用程序库函数柬丰富自身其它的现有软件, 也就是说我们的库函数是可以供所有人使用的公用型丌放型代码软件。 2 2 系统总体设计 2 2 1 系统用户功能设计 s x d 编码系统设计目的是实现一个有效的、面向世界的通信系统仿真软 件,基于该平台,可在生成各种类型的编码并可分析其特性和相关应用,提供 编码信息的帮助,可轻松查看生成的结果,例如可使用波形图直观地显示生成 的结果并可通过网络迅速发布、更新、升级新开发的编码。 该系统将实现如下功能: l 、实现用户的快速上手的简易操作等基本功能: 2 、人机界面交互设计; 3 、通用s x d 编码软件的动态链接库设计; 4 、编码仿真系统功能模块设计、实现与集成; 西南交通大学硕士研究生学位论文第1 0 页 5 、用户输入参数后可直接查看所选择的的各种编码以及相关编码的具体参 数值: 6 、可生成编码结果以及相应的曲线图; 7 、可提供对每种编码的帮助文档; 8 、用户可以对结果进行比较和核对; 9 、可实现系统的快速更新功能以及相对应的编码改进的能力。 2 2 2 系统架构图 s x d 编码系统是一个主要致力于纠错编码部分的分析仿真系统开发。在此 软件中,仿真模型可看作一个完整的通信系统,即由信源、信源编码、信道编 码、噪声信道、信道译码、信源译码、信宿,七部分组成。软件将包括不同的 功能模块以实现各部分的仿真,各功能模块中将提供给用户不同的选择,使用 户能够自主选择参数构造通信系统仿真模型并获得仿真分析结果。主要操作过 程是首先用户通过对信号源,编码方式,信道类型,调制方式的选择,来进行 仿真的控制。然后,系统通过用户所选取的信息来对d l l 链接库中的仿真模块 进行调用,进行仿真程序,最后,通过界面的曲线图形区域和结果输出区域告 知用户所需要的结果。那么,这样一个软件主要就是由用户的控制仿真信息, 用户信息的整体存储调用仿真库文件,以及仿真结果的输出和显示这3 个主要 的部分组成。 要建立个由上述3 部分组成的系统构架,同时,又要基于系统的可移植 性,可扩展性的突出特点,将应用程序分为3 个基本层:显示层、业务逻辑层、 数据访问和存储层,其中各层的功能如下:表示层:处理用户界面和其他用 户的交互,并且数据访问层所输出的数据也将在这罩进行显示,这层仅控制与 用户的信息交互和结果的显示:业务逻辑层:处理应用程序的业务逻辑。这 一层封装了来自用户的业务逻辑的实现细节,它的任何变化仅影响到本层,而 不是整个应用程序。它是表示层和数据访问层之问的接口;数据访问层:对 用户的信息进行模块调用和处理。包括所有的仿真的过程,输出相对应的数据。 3 层结构可以看成是由第2 层连接起来的一个工具包和一个控制台的结构 体,工具包和控制台都可以进行单独的升级和修改,只要在对连接部分作一些 相应的改动即可,而不需要象以往的软件一样一个细微的改动都有可能变成一 西南交通大学硕士研究生学位论文第1 1 页 个整体软件的大手术。 幽2 2s x d 组件功能示意图 2 3 系统开发环境与实现技术 2 3 1 系统软件环境 系统编写服务器端基于w i n d o w sx p 操作系统,客户端下载后可采用 w i n d o w s 9 x 、w i n d o w s 2 0 0 0 、w i n d o w s 2 0 0 3 等均可。不需安装任何专门的客户 端软件。 2 3 2 系统开发技术及工具选择 本系统丌发工具主要使用微软公司推出的v i s u a lc + + 6 0 版本的面向对象 的程序设计软件。系统界面开发主要用到了v i s u a l c + + 6 0 中的基础类m f c 库, 通过m f c 预先编写的大量代码进行继承和重载来实现界面的快速高效的。同 时,编码码仿真部分的程序通过纯c + + 的编写调试后,再编写成d l l 的文件, 嵌入到系统中去。 1 、界面开发工具的选择 v i s u a lc + + 是一个全面的应用程序开发环境,使用它可以充分利用具有面 向对象特性的c + + 来丌发出专业级的w i n d o w s 应用程序。w i n d o w s 作为一 个提供功能强大的应用程序接口编程的操作系统,的确方便了许多程序员,传 统的w i n 3 2 丌发( 直接使用w i n d o w s 的接口函数a p i ) 对于程序员来说非常的 困难,因为a p i 函数实在太多了,两且名称很乱,从零构架个窗口动辄就是 上百行的代码。故微软将传统的a p i 进行了分类封装,并且为创建程序建立了 西南交通大学硕士研究生学位论文第1 2 页 一般框架。m f c ,全称m i c r o s o f tf o u n d a t i o nc l a s s e s ,就是微软把w i n a p i 进行封 装的类库。它是一个类的集合,通过覆盖w i n a p i 为编程提供了一个面向对 象的界面l i 。它使w i n d o w s 程序员能够利用c + + 面象对象的特性进行编狸。类 似b c b 的o w l ,d e l p h i 的v c l 组件。它把那些进行s d k 编程时最繁琐的部 分提供给程序员,使之专注于功能的实现。 所以m f c 主要优点是效率高。它减少了大量在建立w i n d o w s 程序时必须 编写的代码。同时它还提供了所有一般c + + 编程的优点,例如继承和封装。 m f c 是可移植的,例如,在w i n d o w s3 1 下编写的代码可以很容易地移植到 w i n d o w sn t 或w i n d o w s9 5 上。因此,m f c 是很值得丌发w i n d o w s 应用程 序的方法,本论文所提的s x d 编码系统软件主要的就是w i n d o w s 平台下的软 件丌发,正好与m f c 的特性相吻合。 2 、仿真程序开发工具的选择 纠错编码的仿真是该软件的精髓,用户通过不同纠错编码的仿真结果进行 系统性能的分析。利用c + + 实现各类典型纠错编码的多种算法,将它们通过编 译成为d l l 文件添加入系统: 动态链接库d l l q :d y n a m i cl i n k a b l el i b r a r y ) 是独立的程序模块在w i n d o w s 系统平台提供的编程和运行环境下创建而成的。使用d l l 的应用程序可以调用 d l l 中的导出函数,但在应用程序本身的执行代码中并不包含这些函数的执行 代码,它们经过编译和链接之后,独立地保存在d l l 中。其实d l l 就是包含 了若干个函数,类和资源的库文件,他可以被多种可执行文件所调用,以实现 资源共享的理念。同时,这样可以极大的缩小了应用程序的执行代码,能更加 有效地利用内存。而且还可以提高软件的丌发速度,这样,在升级软件时,只 需要对对应部分的d l l 文件进行改动就可以了,这样,使软件移植的能力也同 样得到了巨大的提高【l ”。 首先,将所有的编译码程序写入d l l 文件中,然后通过显式链接,在这个 函数的参数中可以指定d l l 文件的完整路径。 2 4 本章小结 本章首先介绍了基于w i n d o w s 平台下的s x d 编码系统的总体需求,然后 详细介绍了平台的总体设计,包括界面功能设计、内部架构设计、系统的用况 图等。最后,就系统的软件环境、开发环境以及选择各项技术的原因做了介绍。 西南交通大学硕士研究生学位论文第1 3 页 第三章s x d c s c o r r e c t o r 界面与图形设计 3 1 窗口架构实现 3 1 1m f c 主窗口控件类型选择与实现 本着界面友好操作方便的原则,设计交互式界面模块,用户的所有操作 应该均可通过简单的鼠标操作即可。币上方是工具条和快捷任务栏,用户可以 通过点选这些菜单和按钮来快速运行程序操作。这一点可以通过m f c 工程中 所有的应用程序所产生,而其他的各个功能区域可以通过c r e a t e 函数“粘贴”在 主体界面中。m f c 库支持两种不同类型的应用程序:s d l 和m d i ,从用户的角 度来看,s d i 应用程序只有一个窗口,m d i 应用程序则可以拥有和不同文档相 对应的多个“子窗口”,例如m i c m s o f lw o r d 就是个多文档的例子【1 2 】。 3 1 ,2 主窗口中副窗口类型与实现 1 左边树型区域显示 左部通信仿真的所有参数树区域,在此区域中,用户可以通过点选相应的 选项来确定通信系统的具体构成结构,构成方式及其对应的参数。这部分树型 区域通过前人所写好的由m f c 的基础类中的c c o n t r o l b a r 所派生出的一个子类 所构成的一个名为c s i z i n g c o n t r o l b a r 的子类的再次派生,这样,我们不需要繁 琐的对每一个消息函数在单独的设置,只需要通过对所派生出的有共同属性的 予类进行我们所需要的单独设置即可i 】3 l 。 西南交通大学硕士研究生学位论文第1 4 页 幽3 1 ,s x d 编码系统左边树型f 夏域 c l a s sc c o o l b a r :p u b l i cc s i z i n g c o n t r o l b a r ; 派生出的类将完全具有父类的属性,比如下面在c s i z i n g c o n t r o l b a r 中对 c r e a t e 函数进行了重载, b o o l c s i z i n g c o n t r o l b a r :c r e a t e ( l p c t s t ri p s z w i n d o w n a m e ,c w n d + p p a r e n t w n d ,c s i z e s i z e d e f a u l t ,b o o l b h a s g r i p p e r , u i n ta i d d w o r dd w s t y i e ) u n u s e da l w a y s ( b h a s g r i p p e r ) ; m _ s z h o r z ;m _ s z v e r t = m s z f l o a t = s i z e d e f a u l t ; r e t u r nc r e a t e ( 1 p s z w i n d o w n a m e ,p p a r e n t w n d ,n i d ,d w s t y l e ) ; 这样,我们就可以直接的在主函数,也就是由c f r a m e w n d 所派生的一个 c m a i n f r a m e 中创建一个由c c o o l b a r 所派生的类。 c l a s sc m a i n f r a m e :p u b l i cc f r a m e w n d 西南交通大学硕士研究生学位论文第1 5 页 c c o o l b a r m _ w n d l e f l b a r ; 然后。调用一个其中的c r e a t e 函数就可以创建一个已经写好的浮动条类了 1 3 - 1 7 1 ,如下所示。 m _ w n d l e f i b a r c r e a t e ( _ t ( ”w n d i ”) ,t h i s ,c s i z e ( 4 0 0 ,1 0 0 ) ,t r u e ,1 2 3 ) ) ; 2 非界面下的h t m l 文档显示 同样的,这样的类还可以应用到很多浮动性窗口的设计当中,这种窗口不 但能够很好的对他的大小和开关进行控制,同时,可以在这种浮动窗口中进行 多种类的增加,使窗口的功能得到很大的扩展。在我们的程序中,就很明显的 体现出两个不同类型的例子。左边的用户选择工作区域是用树类进行的填充。 而下面的底部信息工作区则用的是c l i s t c t r l ,c h t m l c t r i 派生的两个类进行的 填充。其中c h t m l c t r l 又是通过c h t m l v i e w 派生以及函数的重载来完成了对底 部信息工作区帮助文档的动态显示。 首先,需要简单的介绍一下为了使程序有在线帮助的功能,我们增加了相 应的本地网页和在线文档的访问功能。当然了,我们可以使用微软的m f c 在 v i s u a ls t u d i o6 0 中提供了一个新类c h t m l v i g w ,利用这个类,我们可以实现在 基于文档视图结构的程序中显示h t m l 文件。但是,由于c h t m l v i e w 是由 c v i e w 所派生出的类,那么,它同样具有c v i e w 的特性,那就是这些类都是基 于框架窗口的子窗口,而c v i c w 类所派生的类同样是要在子窗口上面彳能显 示,原因是从c v i e w 继承下来的类。一般是用于d o c u m e n t v i e w 环境下的, 并不适合在对话框或者其他功能条下使用。那么一个视( v i e w ) 和一个普通控件 ( c o n t r 0 1 ) 为何有这种异同呢? 视图和控件都是子窗口,所不同的是控件一般是对 话框中的子窗口,而视图( v i e w ) 是一类特殊的子窗口,设计它的主要目的是工 作于m f c 的d o c u m e n t v i e w 结构下。一个v i e w 有一个指向d o c u m e n t 的指 针并且被固定在一个特别的窗口罩。也就是框架( c f r a m e w n d ) 窗口中。但由于 m f c 的良好设计,在绝大部分时候,一个视图类窗口并不知道自己是不是在一 个框架窗口中。不过也有例外,视图类窗口有时会认为自己一定处于框架窗口 中,一处是上面提到的c v i e w :o n m o u s e a e i v e 。另一处是c v i e w :o n d e s t r o y 。 我们在后面的程序将会具体介绍。而现在我们要在c c o n t r o l b a r 所派生的类下 来加载网页。 显然。这样的c h t m l v i e w 就不能用于我们的项目中。所以,我们就需要重 写一个新的类,使他既能拥有c h t m l v i e w 的特性,又同时具有如同c l i s t c t r l 西南交通大学硕士研究生学位论文第1 6 页 这样的性质。我们不妨拿c h t m l v i e w 和c l i s t v i e w 做一个比较,通过比较这两 个类,我们会发现一些有趣的差别,m f c 中c l i s t v i e w 有一个对应的c l i s t c t d 类用柬在对话框中使用,而c h t m l v i e w 部没有一个c h t m l c t d 类与之对应。所 以为了实现在对话框的控制中显示h t m l 文件,我们不得不为c h t m l v i e w 创 建一个对应的子类c h t m l c t d 。为了避免主控程序将c h t m l v i e w 对象看作是文 档视图框架,需要重载c v i e w :o n m o u s e a c t i v a t e 0 和c v i e w :o n d e s t r o y 0 函数。 此外,当用户在控制中单击时,o n m o u s e a c t i v a t e 要负责响应 ( w mm o u s e a c t w a t e ) i i g - 2 h 。 3 - 2h t m l 文档显示区域 i n t c h t m l c t r l :o n m o u s e a c t i v a t e ( c w n d p d c s k t o p w n d , u i n t n h i t t e s t 。 u i n tm s g ) ,旁路c v i e w 文档框架 r e t u r nc w n d :o n m o u s e a c t i v a t e ( p d e s k t o p w n d ,r d - i i t t e s t ,m s g ) ; v o i dc h t m l c t d :o n d e s t r o y o i f ( m _ p b r o w s e r a p p ) mp b r o w s e r a p p r e l e a s e ( ) ; m _ _ p b r o w s e r a p p = n u l l ; c w n d :o n d e s t r o y o ;旁路c v i c w 文档,框架 西南交通大学硕士研究生学位论文第l7 页 为了在对话框中显示h t m l 文件,我们必须将c h t m l c t r l 类与对话框中的 一个静念控制关联起来,这里,我们打算用c s t a t i c 来代表c h t m l c t r l 控件,它 将从c h t m l c t r l :c r e a t e f r o m s t a t i c 建立一个c h t m l c t r l 控件对象,这是一个子类 化的过程,该对象将和c s t a t i c 有同样的d ,大小和位置。这样才能为显示h t m l 文件提供一个窗口,为此我们在c h t m l c t r l 类中定义了c r e a t e f r o m s t a t i c ( ) 函数, 具体代码如下: b o o l c h t m l c t r l :c r e a t e f r o m s t a t i c ( u i n th i d ,c w n d + p p a r e n 0 c s t a t i cw n d s t a t i c ;静态控件对象; i f ( ! w n d s t a t i c s u b c l a s s d i g i t e m ( n l d ,p p a r e n t ) ) r e t u r nf a l s e ; 获取静态控制的矩形区域并转换为父窗口的客户区坐标 c r e c tr e ; 、 w n d s t a t i c g e t 、矾m o w r c c f f & r c ) ; p p a r c n t s c r e e n t o c l i e n t ( & r c ) ; w n d s t a t i c d e s t r o y w i n d o w 0 ; ,创建h t m l 控制( c h t m l v i e w ) r e t u m ( c r e a t e ( n u l l , 类名; n u l l 标题; ( w sc h i l l ) 1w s v i s i b l e ) ,窗口风格; r c ,矩形区域: p p a r e n t 。父窗口; h i d ,控制的d 号: n u l l ) ) ;取消文档框架支持; 通常,c h t m l v i e w 证常的p o s t n c d e s t r o y 实现是使用d e l e t et h i s 销毁v i e w 。 对于v i e w s 来说,这是正常的处理方式,因为v i

温馨提示

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

评论

0/150

提交评论