




已阅读5页,还剩98页未读, 继续免费阅读
(物理电子学专业论文)spr生物传感器测试分析软件系统研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
, i 南开大学非公开学位论文征明 学号: 姓名: 论文题目: 不宜公开原冈( 请在口中选择) : 口1 、申请专利或技术转让。密级:内部 2 、保密科研项目或课题。密级:秘密或机密 口3 、其它( 请说明) 保密期限: 内部年( 请填写保密年限, 3 年) 秘密 弓年( 请填写保密年限, 5 年) 机密年( 请填写保密年限,1 0 年) 绝密年( 请填写保密年限,2 0 年) l i i ii i 11 1 1 1 11 11 11 1 1iii 17 9 818 3 注意:l 、非公开论文电子版全文亦需要在网上提交。呈交当年,在校园网上提供论 文目录检索、文摘浏览以及论文全文部分浏览服务( 论文前1 6 页) 。保密 期限过后,允许校园网上的读者浏览并下载全文。 2 、请在印刷本封面右上角注明具体密级和保密期限。 导师签字: 单位负责人签字: 单位盖章: u 期:彦年乡月力日 a,iii 0f0, 南开大学 硕士研究生毕业( 学位) 论文 姓名 年级 专业 研究方向 论文题目 完成日期 导师 邱佳桢 二零零五级 物理电子 传感器与测控系统 s p r 生物传感器 测试分析软件系统研究 二零零八年五月 刘国华教授 二零零八年五月 南开大学学位论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:j 事麟 珈8 年西月“日 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 i 阂竿 学位论文作者签名: 郅徘 指导教师签名: 勿 们荔1 年口亏月 日解密时间: 孑 各密级的最长保密年限及书写格式规定如下: 南开大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行 研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文 的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集 体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任 由本人承担。 学位论文作者签名: 邱勰 a 咿蚤 年0 5 月多石日 摘要 摘要 s p r 生物传感系统具有无需标记、实时检测、灵敏度高等优点,近年来受 到了越来越多的关注,已经成为生物传感领域的研究热点。 本文完成了多通道s p r 生物传感器应用软件系统的设计和实现。本软件的 功能是处理实验数据,可以分为五个部分:通过计算机的串口实现与下位机的 通信,从而得到硬件电路采集到的实验数据并且通过指令下达实现对下位机的 控制;设计合理的数据结构;通过在坐标图上绘制曲线的形式来显示实验结果; 保存实验数据,以备日后查看;设计美观并且便于用户操作的界面。 本软件设计上采用m f c 的文档视图( d o c u m e n t v i e w ) 架构。文档即为数 据源,文档对象负责数据的管理。视窗为用户提供了对数据的可视化显示,还 给用户提供了一个与文档中的数据交互的界面。同时,本软件使用了基于 f o r m v i e w 的视图窗口与属性表单相结合的界面模式,实现了视图客户区域的多 页面显示。 关键词:s p r 传感器m f c 文档视图串行通信串行化 a b s t r a c t a b s t r a c t t h es p rb i o - s e n s o rh a sb e e nd r a w nm o r ea n dm o r ea t t e n t i o n ,w h i c hr e c e n t l y b e c o m e sah o tt o p i cb e c a u s eo fi t sn o n - m a r k e r , r e a l t i m ed e t e c t i o n ,a sw e l la sh i 曲 s e n s i t i v i t y t h i sp a p e ra c c o m p l i s h e sd e s i g n i n ga n dp r o g r a m m i n gt a s ko ft h ea p p l i c a t i o n s o f t w a r ei nt h em u l t i c h a n n e ls p rb i o s e n s o rs y s t e m t h ef u n c t i o no ft h es o f t w a r ei s t od e a lw i t ht h ee x p e r i m e n td a t a t h e r ea r ef i v ep a r t si nt h es o f t w a r e :f i r s t ,r e a l i z et h e s e r i a lc o m m u n i c a t i o nb yt h es e r i a lp o r ti nt h ec o m p u t e ri no r t h e rt og e tt h ed a t af r o m t h eh a r d w a r es u b - s y s t e ma n ds e n dt h eo r d e rt oc o n t r o li t s e c o n d ,d a t as t r u c t u r e d e s i g n i n g ;t h i r d ,s h o wt h ee x p e r i m e n tr e s u l tb yd r a w i n gt h ep i c t u r ei nt h er e f e r e n c e f r a m e a f t e rt h a t ,s a v et h ed a t ao ft h ee x p e r i m e n tf o rt h ef u t u r e l a s t ,d e s i g nt h e b e a u t i f u la n dc o n v e n i e n to p e r a t i o ni n t e r f a c e i nt h i sp r o j e c t ,t h ed o c u m e n t v i e wf r a m e w o r ki su s e di nt h es o t h v a r ed e s i g n t h ed o c u m e n ti st h es o u r c eo ft h ed a t aa n da l s or e s p o n s i b l ef o rt h em a n a g e m e n to f t h ed a t a t h ev i e wp r o v i d e st h ev i s u a ld i s p l a yf o rt h eu s e r , a n da l s ot h ed a t ae x c h a n g e i n t e r f a c ef o rt h ed o c u m e n t a tt h es a m et i m e ,t h es o f t w a r eu s e dt h em o d eo f a g g l u t i n a t i n gb e t w e e nt h e v i e ww i n d o wa n dp r o p e r t ys h e e ti no r d e rt or e a l i z e m u l t i - p a g e ss h o w ni nt h ec l i e n to ft h ev i e w k e yw o r d s :s p rb i o s e n s o r s y s t e m ,m f c ,d o c u m e n t v i e w , s e r i a l c o m m u n i c a t i o n ,s e r i a l i z a t i o n i i 目录 目录 第一章绪论1 第一节引言1 第二节s p r 生物传感系统理论分析1 第三节s p r 生物传感器系统研究现状及发展趋势2 第四节本论文的主要任务及内容2 第二章s p r 应用软件系统架构设计3 第一节软件系统需求分析3 第二节功能模块划分3 第三节程序结构设计4 2 3 1 文档视图结构4 2 3 2 创建工程框架5 2 3 3 界面元素设计5 2 3 4 文档类数据结构设计6 2 3 5 视图类一曲线的绘制7 2 3 6 串行通信模块设计7 2 3 7 数据保存模块设计8 第三章软件界面模块实现1o 第一节主框架- - - c m a i n f r a m e 类1 0 3 1 1 改变窗口的标题l o 3 1 2 工具栏的设计与实现1 1 第二节通道选择对话框c c h a n n e l c h o o s e 类1 2 3 2 1 实现功能目标1 3 3 2 2 代码实现。1 4 i i i 目录 第三节实验参数设置对话框- - c s e t p a r a m e t e r 类18 3 3 1 实现功能目标1 8 3 3 2 代码实现1 9 第四节属性表单2 2 3 4 1 属性表- - - c o n l i n e p r o p s h e e t 类2 2 3 4 2 属性页对话框2 2 3 4 6 视图窗口与属性表单粘合2 9 第五节图标的改变3 0 第四章数据结构设计实现3 2 第一节集合类的选用3 2 第二节曲线的数据描述c c u r v e 类3 3 4 3 1c c u r v e 类综述3 3 4 3 2c c u r v e 类的成员变量3 3 4 3 3 c c u r v e 类的成员函数3 4 第三节实验相关信息数据描述3 5 第四节c d a t a o n l i n e d o c 的修改3 5 4 4 1c d a t a o n l i n e d o c 类综述3 5 4 4 2c d a t a o n l i n e d o c 类成员变量3 6 4 4 3 c d a t a o n l i n e d o c 类成员函数3 6 第五章实验曲线绘制模块设计实现4 0 第一节曲线绘制过程的详细设计4 0 第二节坐标系的建立和绘制。4 3 5 2 1 坐标系基础4 3 5 2 2 查看基线坐标系的设计与绘制4 4 5 2 3 数据采集坐标系设计与绘制4 6 第三节实验曲线的绘制4 6 5 3 1 绘制基线图4 7 i v 参考文献6 0 致谢6 2 附录6 3 个人简历8 8 v 第一章绪论 第一章绪论 第一节引言 表面等离子体共振( s u r f a c ep l a s m o nr e s o n a n c e ,s p r ) 技术是近年发展起来 的一种现代的、先进的、通用的免标记生化检测技术,这种技术是基于物理光 学现象的生化检测技术,以一种特殊的消逝波( s p w ) 为探针,探测传感媒质 光学参数的变化过程。作为一种表面检测技术,s p r 技术具有灵敏度高、无需 标记、稳定快速、便捷实时等特点,特别适合研究生物分子相互作用,因此人 们利用s p r 技术在生化传感方面做了大量的研究工作。在瑞典b i a c o r e a b 、美 国t i 等数家公司能够提供比较成熟的s p r 产品,但价格都比较昂爿2 | 。由于s p r 传感系统具有非常广阔的应用前景,因此需要研制具有自主知识产权的s p r 系 统,并加速其商品化进程。 第二节$ p r 生物传感系统理论分析 s p r 生物传感器是基于基本的物理光学现象的分析系统。表面等离子体波 是在金属和电介质界面上由偏振电磁波激励形成的一种电荷密度波。在传感系 统中选择适当的光源激励,通过入射光和金属表面的自由电子相互作用,在一 定条件下入射光波将激发表面电荷密度波,从而导致反射光的强度大大减弱。 这一现象被称为表面等离子体共振,此时的入射角被称为共振角。共振角的大 小与金属表面物质的折射率变化有关,而折射率的变化与吸附或特异性结合在 金属表面的物质有关,因此,金属上敏感膜表面的变化会导致吸收峰的移动。 记录时间和共振角的关系即相当于记录分子相互作用的动态过程【z j 。 传感器的性能是由传感系统的各子系统决定的。如灵敏度、稳定性、分辨 率依赖于光学系统、敏感膜及检测系统的性能,选择性和响应时间主要由敏感 膜决定,检测范围则主要由棱镜的折射率决定,等等。 s p r 传感器的工作原理决定了这种传感器与传统生物检测手段相比具有明 显的技术优势:检测灵敏度高【3 】,可用于样品的实时在线检测【4 】,抗干扰能力强 第一章绪论 【5 1 ,样品无需预处理【6 1 ,快速高通量分析【刀,试剂和样品用量少8 1 。也正是由于 其自身的显著特点,s p r 传感系统在问世仅仅二十几年间,就已成为分析生物分 子相互作用的重要手段,并成为传感器领域令人瞩目的研究热点。 第三节s p r 生物传感器系统研究现状及发展趋势 从国内外2 0 多年的研究成果上来看,光学s p r 传感器在结构上可分为:棱 镜耦合式s p r 传感器、集成光波导耦合式s p r 传感器、光纤式s p r 传感器和光 栅耦合式s p r 传感器。如果按照测量方式,则可分为:角度指示型、波长指示型、 光强指示型、相位指示型。其中棱镜耦合式s p r 传感器已经从实验室走向了市 场。其它几种类型仍处于研究阶段。未来s p r 传感器的研制和发展朝着以下几 个方向开展:一是进一步提高检测准确度;二是开拓多通道传感器;三是研制 先进的标识元素;四是器件微型化阵列化;五是降低检测成本等 9 】。 第四节本论文的主要任务及内容 本课题是国家自然科学基金项目。课题的主要任务是研制开发多通道s p r 生物传感系统,为生物医疗检测提供更为先进和精确的信息采集分析手段。本 文主要内容是传感系统p c 端应用软件的架构设计和代码实现。 s p r 生物传感系统的软件架构采用了基于m f c 类库的文档视图 ( d o c u m e n t v i e w ) 结构:文档类对象负责数据的存储与管理、视图类对象通过 二维曲线坐标图负责显示数据内容。 主要完成的工作包括:为系统软件做出需求分析;设计功能模块;以v i s u a l c + + 为开发工具,充分利用m f c 类库提供的文档类实现数据管理;利用 w i n d o w s 图形设备接口( g d i ) 绘s u - 维坐标图来显示实验数据;设计并实现 了友好的用户界面;实现多通道数据采集及下位机控制。 2 第二章s p r 应用软件系统架构设计 第二章s p r 应用软件系统架构设计 s p r 生物传感器的应用软件是实验人员获得实验数据的中介桥梁。用户通 过使用该软件来控制数据采集的整个过程以及观察实验进行情况。 第一节软件系统需求分析 在多通道阵列式s p r 生物传感器检测系统中,需要实时观测多通道数据,同 时需要对每个单路信号进行控制和处理。诸如参数设置、窗口控制、功能选择 等。因而,p c 端软件需要完成如下工作: l 、获得需要监测的通道号; 2 、记录每个通道实验条件以及相关信息; 3 、设置采集参数,包括采集间隔、采集持续时间和蠕动泵转速; 4 、通过串口通信下达指令,同时将设置好的各项参数传递给下位机; 5 、通过查看基线来检查样品安装是否符合要求; 6 、利用数值分析,显示精确的共振角度数; 7 、实时监控实验过程,根据实验数据绘制曲线动态显示实验结果; 8 、每个通道拥有一个窗口,显示该通道实验数据的曲线; 9 、提供在同一坐标系内根据其他通道实验数据绘制多条曲线的功能; 1 0 、控制数据流,以特有的数据结构实现数据的接收和处理; 1 1 、提供可选择的路径保存实验结果到计算机的磁盘。 第二节功能模块划分 根据需求分析,设计系统框架。多通道阵列式s p r 生物传感器检测控制系 统软件由操作界面模块、文档类数据结构模块、视图类显示模块、串行通信模 块和实验数据保存模块五部分组成。它们之间逻辑关系如图2 2 1 所示。 第二章s p r 应用软件系统架构设计 图2 2 1 功能模块关系图 每个功能模块的具体分工及设计实现在下一节中给出,这里不详加叙述。 2 3 1 文档视图结构 第三节程序结构设计 文档视图结构( d o c u m e n t v i e wa r c h i t e c t u r e ) 是m f c 的精髓,是m f c 中 结构最为复杂,体系最为庞大,而又最富有特色的部分。m f c 之所以是 a p p l i c a t i o nf r a m e ,最重要的一个特征就是它能够将管理数据的程序代码和负责 数据显示的代码分离开来,这种能力由m f c 的d o c u m e n t v i e w 提供【l l 】。在 d o c u m e n t v i e w 应用程序中,应用程序的数据由文档对象代表,而数据的显示由 视图对象代表。文档和视图合作来处理用户的输入并绘制数据的文字或图形表 示。m f c 的c d o c u m e t 类是文档对象的基类,c v i e w 类是视图对象的基类。应 用程序的主窗口,其操作功能在m f c 的c f r a m e w n d 和c m d i f r a m e w n d 类中 实现,主要用作视图、工具栏以及其他用户界面对象的容器【l o 】。 用最简单的一句话描述,d o c u m e n t 就是数据的体,v i e w 就是数据的面。藉 着c d o c u m e t 管理数据,藉c v i e w 负责数据的显示,藉c d c 和c g d i o b j e c t 实 际绘图。 d o c u m e n t v i e w 之间的关系可以做一个比喻,v i e w 就像一个观景器,使用 者通过v i e w 看到d o c u m e n t ,也通过v i e w 改变d o c u m e n t 。v i e w 是d o c u m e n t 4 m f c 的文档视图架构为建立“管理磁盘数据”的应用程序提供了一个框架, 它支持两种类型的文档视图应用程序。单文档界面( s d i ) 应用程序只支持一次 打开一个文档。多文档( m d i ) 应用程序允许同时打开两个以上文档 1 7 1 。 由于本系统支持对多通道数据的采集和处理,需要每个通道的数据对应于 一个专门的文档。所以软件设计选择基于多文档结构。 2 3 2 创建工程框架 创建工程框架的步骤如下: 1 、启动m i c r o s o f tv i s u a ls t u d i o6 0 ,点击菜单 f i l e - n e w ,在 p o j e c t 锋j l j 表 符下选择m f ca p p w i z a r d ( e x e ) 项,实现用该向导生成一个可执行( e x e ) 文件。 填写工程名称d a t a o n l i n e ,选择保存路径。其他内容接受默认设置,点击 o k 】 按钮,进入应用程序生成向导【l8 1 。 2 、应用程序向导分六步完成应用程序框架的搭建。在其中的三个步骤上需 要做出更改。在s t e p 1o f 6 对话框内选择 m u l t i p l ed o c u m e n t 项,表明是一个基 于多文档的程序。在s t e p 4o f6 对话框内点击 a d v a n c e d 调出“文档模版属性字 符串”属性页,可以看到f i l ee x t e n t i o n :在其下面添加文档的扩展名s p r 。在s t e p 6o f6 对话框内,选择视图类的基类为c f o r m v i e w ,使视图具有对话框风格。 其他设置接受缺省选择【1 8 】。 至此,a p p w i z a r d 完成了应用程序的框架搭建工作,在指定目录下生成了应 用程序的基本文件。 2 3 3界面元素设计 应用程序框架已经具备的界面有:主框架窗口、子框架窗口以及f o r m v i e w 类型的视图。在此基础之上,需要添加一个 通道选择 对话框,一个具有三个属 性页的属性表单。每个属性页的标题为 实验信息 , 查看基线 和【数据采集 。该 属性表单挂接在继承于c f o r m v i e w 的视图类对象上。 工具栏包括: 打开 、 保存】、 参数设置】、 采集基线】、 连续采集 和 停止 采集 五个按钮。 第二章s p r 应用软件系统架构设计 下拉菜单项包括:方法,报告,系统设置,窗口和帮助。 通道选择 对话框:十个复选框分别表示1 1 0 号通道。一个g r o u p b o x 表示 这十个复选框为一个组。一个确定按钮,一个取消按钮。 实验信息 属性页:一个静态文本框和一个编辑框为一组,共4 组,分别表 示实验标题、实验人姓名、实验单位和实验简介。一个独立的静态文本框表示 实验时间。另有两个g r o u p b o x ,分别为实验条件组、样品情况组和实验参数设 置组。在实验条件组内,有8 对静态文本框和编辑框的组合。分别表示:入射 光的波长、敏感膜的材料、敏感膜的折射率、入射光路的中心矩、入射光的中 心角、传感芯片的折射率、芯片表面的金属膜材料、金属薄膜的厚度等。在样 品情况组内,有两对静态文本框和编辑框的组合。分别表示样品成分和样品折 射率。还有一个 保存实验信息 按钮。另外,有一个保存文件路径设置按钮及路 径显示编辑框。 查看基线】属性页:十个表示通道号的复选框和一个确定按钮,用来表示要 求在图片控件内绘制那几个通道的实验曲线。一个静态文本框和编辑框,用来 显示通过插值算法得到的共振角度数。一个图片控件,用来绘制实验曲线。 数据采集】属性页:十个表示通道号的复选框和一个确定按钮,用来表示要 求在图片控件内绘制哪几个通道的实验曲线。一个图片控件,用来绘制实验曲 线。 以上是对各功能界面的基本设计【l9 1 。 2 3 4 文档类数据结构设计 在多通道阵列式s p r 生物传感器检测系统中,由于多通道结构的存在使得 这里选择多文档视图结构为框架基础。每个通道的实验数据和实验信息对应于 一个自己的文档对象。所以在文档类的数据结构设计过程中,以一个通道的数 据为例,来考虑数据的结构组成和表达方式。 对在每个通道内进行的实验而言,需要保存下来的数据有两部分。一部分 来自视类用户输入的实验信息;另一部分来自串口,也就是下位机采集的 实验结果,需要以曲线的形式表现出来。对于第一部分数据可以使用m f c 自带 的c s t r i n g 类型的变量来保存。对于第二部分用来绘制曲线的数据没有现成的类 可以利用,于是需要自己设计一个名为c c u r v e 的类,用c c u r v e 类型的变量来 6 第二章s p r 应用软件系统架构设计 保存曲线数据。 线条由颜色和坐标点构成,所以c c u r v e 应该有mp e n c o u l o r 成员变量。而 一长串的坐标点需要用数组来管理。数组内存放c p o i n t 类型的变量。c p o i n t 的 实际内容则来自下位机上传的实验结果数据。 每个通道可以进行两种实验:查看基线和连续采集。所以,需要给文档类 添加c c u r v e 类型的指针变量,分别指向基线曲线和连续采集的实验曲线。这里, 设计两对c c u r v e 类型的指针变量,一对儿用来保存绝对数据,另一对儿用来保 存在特定坐标系下的坐标点。前者用于永久保存,后者用于绘图。 至此,文档类的数据结构设计完毕。 2 3 5 视图类曲线的绘制 视图是数据的窗口,为用户提供了文档的可视的数据显示,它把文档的部 分或全部内容在窗口中显示出来。视图还给用户提供了一个与文档中的数据交 互的界面,它把用户的输入转化为对文档中数据的操作。 本程序的视图类挂接了一个属性表单的结构。因此,视图类对数据的操作 和显示工作就转嫁给了各属性页对话框。 实验信息 页面实现数据的操作, 查 看基线】和 数据采集 页面的图片控件上绘制曲线图。因而对数据进行操作的时 候要通过层层访问父窗口指针的方式来经由视图类得到文档类对象的指针,从 而获得绘制曲线的数据。 对于绘图工作而言,另一个很重要的工作就是坐标系的建立。需要根据具 体的曲线来设置合适的坐标系,目的是在窗口客户区有限的空间内能够将实验 结果数据更加精确的显示出来。 2 3 6 串行通信模块设计 串行通信由于接线少,成本低,在数据采集和控制系统中得到了广泛的应 用。本程序也采用这种通信方式。数据传输速率默认为9 6 0 0 b p s 。使用微软提供 的串口编程控件m s c o m m 。 串行通信包含三个方面的内容:发送部分、接收部分和通信协议。 1 、发送部分。在实验过程中,用户通过计算机的应用软件控制下位机的工 作。内容包括:初始化步进电机移动模式;设置蠕动泵的转速;给下位机下达 7 第二章s p r 应用软件系统架构设计 指令采集实验结果;给下位机回馈数据握手。利用计算机的串行接口与下位机 进行通信,可以实现发送上述指令的功能。本程序将m s c o m m 控件安置在主框 架窗口,故在工具栏内设置三个按钮 采集基线 连续采集 停止采集 分别发送 相应的指令。 2 、接收部分。对于上位机而言,需要接收来自下位机的两类数据:采集到 的实验数据和命令握手数据。m s c o m m 控件具有自己的串口事件响应函数 o n o n c o m m m s c o m m l 0 。每当串1 3 有数据到达时就会激发调用该函数 3 4 1 。所以 所有对接收到的数据的处理分析都在这个函数中实现。由于控件隶属于主框架 窗口,所以该函数是主框架类的成员函数。这个函数有两个重要功能:一是将 接收到的数据经过一系列类型转换,存入与通道号相应的文档中:二是调用绘 图函数,实时绘制曲线。该函数是框架类的成员函数,所以要访问文档需要经 过框架类的另一个成员函数g e t t h e d o c ( 1 卜- 实现对所有文档的调用。该函 数通过全局变量t h e a p p 获得文档模板,由模板来访问它的文档对象链表,通过 将通道号与文档标题相比较的方法来找到自己的文档。进而将数据存入相应成 员变量。 3 、通信协议 通信协议是下位机与上位机沟通的桥梁。协议的意义在于得到一个双方都 接受的数据格式。应当包括的内容有:数据以何种格式发送出去;如何从接收 到的某种格式的数据串中提取出需要的信息;以及在发送和接收过程中如何保 证这些数据的正确性,即数据校验。在第六章会详细说明这部分内容。 2 3 7 数据保存模块设计 数据保存模块旨在将实验采集到的数据和实验人员输入的实验信息保存到 计算机的磁盘内。在m f c 应用程序中把这个磁盘文件读写的过程称为 s e r i a l i z a t i o n ,即串行化。通过m f c 实现巧妙的运算符重载同时借助于c a c h i v e 类对象,它们一起简化了串行化过程。这一过程的根本目的在于把应用程序持 久性数据保存到磁盘上或再从磁盘读回需要的数据。负责这件重要任务的,是 m f cc o b j e c t 类中一个名为s e r i a l i z e 的虚函数,文件的“读”和“写”操作都通过 它完成。这是m f c 文档视图体系结构的基础构件之一【1 0 1 。 本程序文档内容是借着层层类向下管理,所以需要每一层的工作准确无误, 第二章s p r 应用软件系统架构设计 层层传递下来就可以完成整份数据的文件操作。根据前面的数据结构设计,程 序的文档读写操作有如下分工: 框架类调用文档类的s e r i a l i z e 函数,用以操作文档。 文档类再往下调用曲线类( c c u r v e ) 的s e r i a l i z e 函数,用以操作曲线。 曲线类再往下调用集合类数组的s e r i a l i z e 函数,用以操作点数组。 框架类调用s e r i a l i z e 函数时会传来一个c a c h i v e 类对象并通过其成员函数 i s s t o r i n g ( ) 来判断当前工作需要“读”还是“写”。 通过以上设计的实现就可以完成扩展名为s p r 的文件的读写工作了。也就是 实现了与本次实验相关的所有数据的保存功能。 9 第三章软件界面模块实现 第三章软件界面模块实现 主程序界面是应用程序提供给用户访问其它功能模块的平台,根据实际需 要,s p r 生物传感器p c 端软件系统的主界面采用了传统的“菜单i 具栏状态栏” 风格,本章1 5 节详细介绍了各个主界面窗口的构成及界面功能实现。 第一节主框架- - - c m a i n f r a m e 类 框架窗口为应用程序的用户界面提供结构框架,它是应用程序的主窗口, 负责管理被它包容的所有窗口。一个应用程序启动时会创建一个最顶层的框架 窗口主框架。多文档( m d i ) 应用程序的主框架窗口类c m a i n f r a m e 继承于 c m d i f r a m e w n d 类,该窗口是所有m d i 文档子窗口的容器,并与子窗口共享菜 单【1 2 1 。这里m f c 程序已经生成了一部分代码来实现主框架的基本功能,在此 基础之上需要改变窗口的标题以及设计特定的工具栏。 3 1 1改变窗口的标题 应用程序运行的时候要求各窗口的标题栏内显示软件名称,对于本程序而 言,需要将主框架窗口的名称改为:“s p r 2 0 0 8 在线工作站”;子窗口的名称改为: “通道六”,其中六号表示对应不同文档的通道序号。 1 、主窗口标题的改变 m d i 类型窗口标题中,主窗口标题形式为:主窗口标题+ ( 活动) 文档标题。 标题的改变有两种方法: 方法一:利用r e s o u r c e v i e w 打开工程的资源,修改s t r i n gt a b l e 中的 i d rm a i n f r a m e 的值。将原来的“s d i t i t le _ 1 1 n t i t l e 1 1 t i t l e d o c u m e n t i a t i t l e d o c u m e n t ”改为“s p r 2 0 0 8 在线工作站n t i t l 扎i l 1 1 t i t l e d o c u m e n t k n t i t l e d o c u m e n t 。这样改变后,主窗口标题栏的形式就为“s p r 2 0 0 8 在线工作站”。 方法二:在c m a i n f r a m e 的成员函数p r e c r e a t e w i n d o w 中添加一条语句: 1 t is t r t i t l e = ”s p r 2 0 0 8 在线工作站”: i l ls t r t i l e 是c f r a m e w n d 的保护成员。c m a i n f r a m e 则是c f r a m e w n d 类的 1 0 第三章软件界面模块实现 派生类。执行上述代码后,标题栏的名称即可更改为“s p r 2 0 0 8 在线工作站”。 在这两种改变方法中,第二种方法优先级高。也就是说,改变了ms t r t i t l e 的值后,i d rm a i n f r a m e 的值就不起作用。 2 、子窗口标题的改变 在默认情况下,m f c 自动将子窗口标题设为该子窗口所打开文档的标题。 所以,改变改子窗口文档的标题就可以显示为子窗口标题被改变了。 为b o o lc m d i t i t l e d o c :o n n e w d o c u m e n t 0 函数添加语句如下: c d a t a o n l i n e a p p * p a p p = ( c d a t a o n l i n e a p p * ) a f x g e t a p p ( ) ;1 1 获得全局对象 i n tc o u n t = c c h a n n e l c h o o s e :g e t c h a n n e l n u m ( p a p p 一 m _ _ p c h a n n e l c h o o s e d l g ) ; 获得通道序号 c h a rm e s s a g e 1 o 】; w s p r i n t f ( m e s s a g e , s d i ,”通道 , c o u n t ) ; s e t t i t l e ( m e s s a g e ) ; 设置文档标题为“通道1 ”、“通道2 ”,数字序号由所选通道序号决定。 3 1 2 工具栏的设计与实现 工具栏是w i n d o w s 应用程序中一个非常重要的图形界面元素,它提供了一 组顺序排列的带有位图图标的按钮。工具栏把常用的菜单命令集合起来,以按 钮的形式提供给用户使用,目的是为了方便用户操作。在d a t a o n l i n e 工程中, 在r e s o u r c e v i e w 选项卡的t o o l b a r 文件夹下有一个工具栏资源: i d rm a i n f r a m e ,双击这个资源i d ,即可在资源编辑窗口中打开工具栏资源。 可以看到,这是一些带有位图图标的按钮,用户通过这些位图就能大概知道每 个按钮的功能。在默认方式下,工具栏按钮包含图像,不包含文本。用 c t o o l b a r :s e t b u t t o n t e x t 可在按钮表面添加字符串。给每个按钮指定文本后,用 c t o o l b a r :s e t s i z e s 可以调整按钮尺寸,使它适合字符串长度【1 0 1 。在 c m a i n f r a m e :o n c r e a t e 函数中添加如下代码: m _ w n d t o o l b a r s e t b u t t o n t e x t ( 0 , 打开”) ; m _ w n d t o o l b a r s e t b u t t o n t e x t ( 1 ,”保存”) ; mw n d t o o l b a r s e t b u t t o n t e x t ( 3 , i t 设置参数”) ; 第三章软件界面模块实现 m w n d t o o l b a r s e t b u t t o n t e x t ( 5 , 采集基线”) ; mw n d t o o l b a r s e t b u t t o n t e x t ( 6 , 连续采集”) ; m 停止采集”);wndtoolbarsetbuttontext(8, m _ w n d t o o l b a r s e t s i z e s ( c s i z e ( 4 8 ,4 2 ) ,c s i z e ( 4 0 ,19 ) ) ; 为按钮添加文本之后,要调用s e t s i z e s 函数以固定按钮的大小。同时,按钮 位图宽度也必须调整到能装下按钮文本。经过编辑的工具栏如图3 2 1 所示: 白口 批 _t _ 打开 傈存 :设置参数:聚集基线连续采集;停止采集 图3 2 1 工具栏示意图 为了查看工具栏上某个按钮的属性,可以在资源编辑窗口中,在该按钮上 双击鼠标左键,即可弹出该按钮的属性对话框。通过这个对话框可以看到该按 钮的i d 号,并可在其中修改。为每个工具栏按钮修改其要执行的命令i d ,并调 用c l a s s w i z a r d 在消息映射表m e s s a g e m a p 页下选择工具栏按钮相应i d ,选择 c o m m a n d 命令后点击a d df u n c t i o n 就可以为相应i d 的按钮添加命令响应函 数了。这里的 设置参数 按钮用来调用参数设置对话框,其具体代码请见附录 c 1 。另外三个按钮 采集基线】 连续采集 停止采集 的功能是通过串口给下位机 下达指令,并且初始化串口控件的相关属性,具体代码请见附录c 2 c 4 。各个 按钮的i d 和消息响应函数名称如下: o n s e t p a r a m e t e r o n i d s e t p a r m e t e r :c o m m a n d o n s t a r t c o n t i n u e o n i d s t a 尺c o n t i n u e :c o m m a n d o n s t a r t s i n g l co n i d s t a 丹s i n g l e :c o m m a n d o n s t o p o ni ds t o p :c o m m a n d 由于将串口通信控件安置在主框架窗口,所以在添加控件的过程中依然是对 主框架类的修改,其原理属于串口通信模块,所以具体过程见第六章6 4 1 节, 这里不详述。 第二节通道选择对话框- - - c c h a n n e l c h o o s e 类 i d 为i d dc h a n n e lc h o o s e 的对话框资源与c c h a n n e l c h o o s e 类相关 联。它的标题为 通道选择 ,其内包含的各控件的d 及与其邦定的变量和消息 响应函数如下: 1 2 第三章软件界面模块实现 i d cc h a n n e l l i d cc h a n n e l l0 i d cc h a n n e l 2 l d cc h a n n e l 3 i d cc h a n n e l 4 i d cc h a n n e l 5 l d cc h a n n e l 6 i d cc h a n n e l l d cc h a n n e l 8 i d cc h a n n e l 9 o n c a n c e l 0 n o k b 0 0 l b 0 0 l b 0 0 l b o o l b 0 0 l b 0 0 l b 0 0 l b 0 0 l b 0 0 l b 0 0 l 0 ni d c a n c e l :b nc l i c k e d o ni d o k :日nc l i c k e d 该对话框界面如图3 2 1 所示: 3 2 1 实现功能目标 图3 2 1 通道选择对话框界面 mb c h a n n e l l r nb c h a n n e l l0 mb c h a n n e l 2 mb c h a n n e l 3 mb c h a n n e l 4 mb c h a n n e l 5 mb c h a n n e l 6 mb c h a n n e l l mb c h a n n e l 8 mb c h a n n c l 9 1 屏蔽掉主框架窗口生成的时候自动新建的文档视图功能,取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 襄阳职业技术学院《医学细胞生物学与遗传学实验》2023-2024学年第二学期期末试卷
- 江苏省盐城市阜宁中学2025届高三下学期第二次教学质量监测数学试题含解析
- 山东省潍坊市寿光市2025年初三毕业考试数学试题含解析
- 山东省肥城市泰西中学2025届高三下学期教学质量监测化学试题含解析
- 上海工程技术大学《院线经营与管理》2023-2024学年第一学期期末试卷
- 六盘水幼儿师范高等专科学校《中医药概论》2023-2024学年第二学期期末试卷
- 金华市磐安县2025年数学三下期末教学质量检测试题含解析
- 四川水利职业技术学院《钢琴伴奏与弹唱》2023-2024学年第一学期期末试卷
- 浙江省江北区市级名校2024-2025学年语文试题基地校初三毕业班总复习平面向量、复数形成性测试卷语文试题试卷含解析
- 中国科学技术大学《移动互联网应用开发技术》2023-2024学年第一学期期末试卷
- 俄罗斯介绍模板
- 50以内加减法练习题
- 全民国家安全教育日培训课件模板(可编辑)
- 江苏省盐城市建湖县2023-2024学年七年级下学期期中语文试题
- 印刷厂常用生产工艺、设备作业指导书一整套
- 小班语言《轻轻地》课件
- 甘肃省农垦集团有限责任公司人才招聘考试试题及答案
- 安全生产投入台账(模板)
- 彩色多普勒血流成像讲解
- 电力配网安全培训课件
- 试验检测单位安全培训课件
评论
0/150
提交评论