(电路与系统专业论文)多通道spr生物传感检测系统监测软件的设计与实现.pdf_第1页
(电路与系统专业论文)多通道spr生物传感检测系统监测软件的设计与实现.pdf_第2页
(电路与系统专业论文)多通道spr生物传感检测系统监测软件的设计与实现.pdf_第3页
(电路与系统专业论文)多通道spr生物传感检测系统监测软件的设计与实现.pdf_第4页
(电路与系统专业论文)多通道spr生物传感检测系统监测软件的设计与实现.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(电路与系统专业论文)多通道spr生物传感检测系统监测软件的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 基于表面等离子共振( s p r ) 现象的传感器已经成为生物传感检测领域的 研究热点。本论文的研究工作是“s p r 多通道生物医学检测系统产品开发”( 天 津市科技支撑计划重点项目) 的一部分,主要完成了多通道s p r 生物传感检测 系统监测软件的设计与实现,具体工作包括以下几个方面: 一、需求分析的严格论证。从传感检测系统的特点入手,对监测软件完成 的任务进行了分析,对数据要求进行了归纳总结,对性能指标进行了论证,对 实验流程进行了总结描述。 二、软件结构设计。依据需求分析,以模块化、面向对象为设计思想,使 用u m l 对监测软件的结构进行了设计和描述。 三、软件各模块的设计与实现。对监测软件各模块的实现方案进行了设计, 包括:通信协议的实现;数据接收模块的实现;图形组件、快速绘制算法的设 计;配置的实现;文件结构的定义与文件存取的实现;人机交互接口的设计等。 四、实现了软件的编码。在v c 6 0 环境下,对软件进行了编制。 五、运行测试。在完成监测软件的编写工作后,对软件进行了大量测试, 提高了软件的可靠性和鲁棒性。运行结果表明,监测软件能够稳定完成传感检 测系统下位机硬件电路的控制,实现数据的接收、显示、保存和历史文件的读 取等工作。 通过本论文所做工作,实现的监测软件具有如下特点:一、在实验流程设 置上更科学;二、图形显示更直观,当前通道的采集细节的大图显示与多通道 缩略显示的结合使得用户更易监视多个通道的变化;三、对u i 可用状态的自动 控制使得显示更加明了、操作更加明确;四、完善的文件数据结构定义方便实 现文件的再处理。 关键字:s p r 多通道传感器,性能指标,结构设计,v c 6 0 a b s t r a c t a b s t r a c t s e n s o rb a s e do ns u r f a c ep l a s m o nr e s o n a n c e ( s p r ) p h e n o m e n o nh a sb e c o m e a na t t r a c t i v ef i e l do nb i o s e n s o rr e s e a r c h t h i sp a p e ri sp a r to f ”d e v e l o p m e n to f m u l t i c h a n n e ls p rb i o m e d i c a ld e t e c t i o ns y s t e mp r o d u c t ”( t i a n j i nt e c h n o l o g i e sr & d p r o j e c t ) ,i h a v ec o m p l e t e dd e s i g na n di m p l e m e n t a t i o no fm u l t i 。c h a n n e ls p r b i o s e n s o rs y s t e mm o n i t o rs o f t w a r e ,t h em a i nw o r ki n c l u d e st h ef o l l o w i n g : 1 r i g o r o u s d e m o n s t r a t i o no f r e q u i r e m e n ta n a l y s i s s t a r t f r o mt h e c h a r a c t e r i s t i c so ft h es e n s o rd e t e c t i o ns y s t e m ,t h et a s kf i n i s h e db ym o n i t o rs o f t w a r e w a sa n a l y z e d ,d a t a r e q u i r e m e n t w a ss u m m a r i z e d ,p e r f o r m a n c ei n d e xw a s d e m o n s t r a t e d ,t h ee x p e r i m e n t a lp r o c e d u r ew a ss u m m a r i z e da n dd e s c r i b e d 2 t h es t r u c t u r eo fs o f t w a r e b a s e do nt h er e q u i r e m e n ta n a l y s i sa n dt h ed e s i g n i d e ao fm o d u l a ra n do b j e c t o r i e n t e d ,id e s c r i b et h es t r u c t u r eo fm o n i t o rs o f l s w a r e w i t l lu m l 3 d e s i g na n di m p l e m e n t a t i o no fe v e r ys o f t w a r em o d u l e id e s i g n e de v e r y m o d u l eo fm o n i t o rs o f t w a r e ,i n c l u d i n g :i m p l e m e n t a t i o no fc o m m u n i c a t i o np r o t o c o l ; i m p l e m e n t a t i o no ft h ed a t ar e c e i v i n gm o d u l e ;t h ed e s i g no fg r a p h i c a lc o m p o n e n t s a n de f f i c i e n t l yr e n d e r i n ga l g o r i t h m ;i m p l e m e n t a t i o no fc o n f i g u r a t i o n ;t h ed e f i n i t i o n o ff i l es t r u c t u r ea n dr e a l i z a t i o no ff i l ea c c e s s i n g ;t h ed e s i g no fh u m a n - c o m p u t e r i n t e r a c t i o ni n t e f f a c e ;a n ds oo n 4 d e v e l o p m e n to fs o f t w a r e b a s e d o nv c 6 0 ,id r e wu pt h em o n i t o rs o a r e 5 r u nt e s t a f t e rlc o m p l e t e dt h em o n i t o rs o f t w a r ed e v e l o p m e n t ,t h es o f t w a r e w a st e s t e dw i t hm a n yt i m e s ,a l lt h ea b o v ew o r ki m p r o v e dt h er e l i a b i l i t ya n d r o b u s t n e s so ft h es o f t w a r e t h er e s u l t ss h o wt h a tt h em o n i t o rs o f t w a r ec a ns t e a d y c o n t r o lt h eh a r d w a r ec i r c u i to fb i o s e n s o rs y s t e m ,a n dt h ed a t ag e n e r a t e db yt h e b i o s e n s o rs y s t e mc a nb ea c c u r a t e l ya c q u i r e d ,d i s p l a y e da n ds a v e d ,a n da l s oc a nb e c o m p a r e dw i t ht h eh i s t o r i c a lr e c o r d s b a s e do nt h ew o r kt h a tih a v e6 n i s h e d t h em o n i t o rs o f t w a r eh a ss o m ef e a t u r e s f i r s t ,i tm a k e st h ee x p e r i m e n t a lp r o c e d u r em o r er e a s o n a b l e s e c o n d ,p r e s e n t a t i o n g r a p h i c sf e a t u r e sm a k et h ee x p e r i m e n tm o r ev i s i b l e ,b e c a u s et h ed a t a a n dd e t a i l s i i 舶mm ec u 盯e n tc h 枷e 1c a nb ed i s p l a y e du s i n ga b i gp i c t u r ea n di n f o i t n a t l o nf r o m o t l l e rc h a i l n d sc a i lb ep r e s e n t e dw i t ht h u m b n a i l s ,w e c a l lo b s e r v et h ec h a n g ef r o m e v e r vc h 锄e 1 t h i r d ,w h e t h e rt h eu is t a t e i sa v a i l a b l ei sa u t o m a t i c a l l yc 0 1 1 仃0 l l e d , w h i c hm a l 【e st h ed i s p l a ym u c hs i m p l e r , a n dm a k e st h e o p e r a t i o nm o r cs p e c l n c f i n a l l y p 曲c td e f t n i t i o no ff i l ed a t as t r u c t u r e i sa v a i l a b l et or e a l i z em e m 砌e n t o f t h ef i l e k e y w 。r d s :m u l t i c h a n n e ls p r s e n s o r , p e r f o r m a n c ei n d e x ,s t r u 咖ed e s i 弘,v c 6 o i i i 第一章绪论 第一章绪论 第一节s r p 检测系统发展介绍 表面等离子共振( s u r f a c ep l a s m o nr e s o n a n c e ,s p r ) 的研究源自于上个世 纪,2 0 世纪初,w o o d 1 在实验中观察到了s p r 现象,此后,s o m m e r f e l d 在1 9 0 9 年使用公式得出了s p w ( 表面等离子波) 卜1 。2 0 世纪6 0 年代后期,o t t o 等人p 1 1 继续论证了光引发的s p r 现象。2 0 世纪7 0 年代,科学家们又继续论证了s p r 在生物传感检测方面的作用h 一川,从此,应用于生物医学方面的传感器家族中 又多了一种基于s p r 现象的光电传感器一9 1 。 2 0 世纪9 0 年代,b i a e o r e a b 公司研制出了以s p r 为核心的生物传感芯片, 借助s p r 的众多优良特性,生物传感分析技术p u 取得了长足进步,迄今为止, 多家欧美公司已经开发出了众多商业型的基于s p r 现象的传感器系统。 在国内,对s p r 现象及其应用的研究也如火如荼【1 2 ,1 3 1 4 1 5 1 6 17 1 ,本文即是讨 论了由南开大学生物医学技术检测研究室自主研制的多通道s p r 生物传感器检 测系统中监测软件的设计与实现。 第二节多通道s p r 传感检测系统简介 如图1 1 所示,基于s p r 现象的多通道传感器系统的检测原理为:监测软 件发出扫描命令后,下位机硬件电路控制电控平移台移动,从而将嵌在其上的 光源对准预定位置( 光通过此位置正好反射到敏感膜区域) ,光源发出的p 偏振 光经过嵌在三角形棱镜底面上的凸透镜后产生会聚,经过棱镜左侧表面的金属 镀膜反射后,在底面上的敏感膜区域发生全反射。由于敏感膜引起反射介质改 变的原因,入射光会在棱镜表面产生消逝波,从而使一定角度范围内反射光的 能量减弱,在经过棱镜右侧表面的金属镀膜反射后,通过嵌在棱镜底面上的凸 透镜产生平行光束。光电二极管将接收到的平行光束转换为电信号后,经过放 大、滤波和a d 处理后,送入上位机监测软件处理显示,就可看到不同角度光 强的变化,通过与已知数据进行比对,即可得到检测结论。利用电控平移台调 整光源位置,将其对准不同的预定位置,即可实现多通道的检测。 第一章绪论 豢鲜 载缉j 圈 图1 1 多通道s p r 生物传感检测系统 第三节主要研究内容 本论文主要实现了多通道s p r 生物传感检测系统监测软件的设计与实现, 主要研究的内容包括以下几个方面: 1 、监测软件的需求分析。在总结项目前期所做的工作后,通过多次讨论研 究,总结出多通道s p r 生物传感检测系统监测软件所需要实现的功能,包括数 据需求、结构定义、实验流程等。 2 、可视化实时显示。实现采集数据和计算后数据的多种实时显示方式,包 括二维坐标图、文字显示、列表显示、缩略图显示等。 3 、软件编码的实现。在v c 6 0 集成开发环境中,编写了监测软件,使用 面向对象、模块化、动态链接库等技术,提高了软件开发的效率,增强了软件 运行的可靠性、健壮性和扩展性。 第四节关键技术 l 、软件的结构与设计。使用模块化结构便于功能的分离;使用面向对象设 计便于功能的扩展和增强。 2 第一章绪论 2 、利用w i n d o w s 操作系统的消息机制,使用观察者模式的思想构建数据 接收模块。 3 、图形绘制时,使用一种数据压缩算法,实现图形快速绘制。 3 第二章监测软件的需求分析 第二章监测软件的需求分析 在软件开发中,分析是软件生命周期粗粒度划分下的第一个阶段【1 8 】,明确 了软件将要做什么。本监测软件的需求分析对软件的开发具有指导性和策略性 的作用,它能够立竿见影的控制和管理软件的开发,利于不同开发人员间在软 件开发、维护等方面的交流和协作,易于用户对软件的了解,从而提高软件开 发的质量。 第一节数据需求 根据课题承担项目的实际需要,通过监测软件可以得到的数据有以下几类: 1 、实验条件数据。本类数据主要包括实验名称、通道信息以及通道对应的 样品信息等。其中样品信息主要包括样品名称、浓度、描述信息、检测时间等。 2 、采集数据。采集数据包括单次采集数据、连续采集数据以及实验前的通 道基线测试数据。单次采集数据主要包括泵速值、采集时间及采集到的不同入 射角对应的光强数据集。连续采集数据为从单次采集到的数据中计算得到的响 应数据集。基线数据内容类似单次采集数据。 第二节功能需求 监测软件所应该具备的基本功能如图2 1 所示,2 2 1 至2 2 4 小节是对图中 基本功能的详细描述。 2 2 1 数据接收 1 、串口操作。包括串口打开、数据读取、数据写入、串口关闭、数据清空 等功能,完成了与硬件电路的命令、握手、实验数据等各种数据的交互。 2 、数据接收和校验。在接收模块开设的接收线程中,监听串口进行数据的 接收,对接收到的数据进行校验,保证数据的正确性。 3 、消息通知。收到数据( 命令反馈或者实验数据) 后,发送消息到主框架, 4 第二章监测软件的需求分析 通过这些消息响应,可以完成数据的接收处理、数据接收状态的显示等功能。 多通道s p r 生物传感检测系统监测软件 数据接收数据处理曲线显示实时监控 数 据 接 收 和 校 验 消 息 通 知 角 度 变 换 连 续 值 计 算 数 据 存 储 苴 次 采 集 显 不 实 验 设 置 图2 1多通道s p r 生物传感检测系统监测软件结构 2 2 2 数据处理 命 令 发 送 界 面 状 态 1 、角度变换。根据数据通信协议,下位机硬件电路通过串口发送给监测软 件的不同入射角的光强数据是以1 6 位短整型十进制序列形式进行传输的,监测 软件在对数据进行量纲复原后,利用角度变换公式进行角度还原。 2 、连续值计算。监测软件对单次采集到的光强数据进行拟合后,计算得出 响应数据。 3 、数据存储。监测软件可以将实验数据存储在本地磁盘中,保存分为临时 存储和永久存储。临时存储发生在实验进行中,实验完成后可进行永久存储。 永久存储文件是对临时文件的合并,临时存储目录下产生的临时文件在下一次 监测软件启动后将被彻底删除。 2 2 3曲线显示 1 、选择好待检测通道,设置好样品参数,开始采集后,监测软件能够实时 显示当前选定通道的最新一次单次采集到的入射角光强数据曲线。产生单通道 采集历史列表,列出采集相对时。采集历史列表的每一项均关联对应的实验数 据,双击某通道的采集历史列表中的子项,可以显示出此子项对应的“入射角 5 第二章监测软件的需求分析 光强”数据曲线。 2 、对非当前选定通道,使用缩略图显示其连续采集数据曲线,连续采集数 据以时间一共振角曲线表示。 2 2 4 实时监控 1 、实验设置。监测软件能够新建实验,控制实验的开始、暂停、停止。实 验采集使用定时采集的方式,通过监测软件,用户可以选定需要采集的通道, 设置各通道样品属性以及采集时长,各通道的采集时长和频率均统一。 2 、命令发送。监测软件能够发送命令到下位机硬件电路,比如开机、复位、 待机、泵速、扫描等。 3 、界面状态。根据监测软件和下位机当前运行状态,软件界面上的按钮、 菜单项、状态栏等的状态能够实时更新。 第三节性能指标 在监测软件的设计开发中,性能指标叫是系统的技术性指标。依据本课题 项目的特点和需求,我们重点关注的是软件的采集频率、响应时间、存储限制、 可靠性、易用性、可扩充性等几个方面。 结合s p r 生物传感检测系统硬件电路的工作特点和指标后,我们可以计算 出软件的执行速度指标( 这里指采集频率的最低值) 。由于硬件电路需要使用低 功耗特性,在进行串口数据传输时,使用的波特率为9 6 0 0 b p s 。根据实际测试, 监测软件在扫描通道l ( 电控平移台坐标( 0 ,0 ) ,步进电机不用驱动电控平移台 移动的通道点) 时,一次采集需要的时间为9 3 s ,如果8 个通道全扫描,一次 采集需要2 5 m i n ,因此8 通道最高频率不应该低于3 m i n ( 留有余量,防止出错) , 可以根据选择的通道而采用不同的最低采集频率( 见4 5 1 2 节实现) 。 软件的响应时间主要是命令响应时间,受限于命令信息传输速度和硬件电 路的执行速度,对单个命令,软件的建议响应时间为1 2 s ,超时则认为硬件无 响应。 依据本地磁盘、内存的大小,我们可以计算出软件的存储限制。在进行采 集工作时,数据存储使用的是分通道临时文件磁盘缓存策略,数据文件的大小 6 第二章监测软件的需求分析 受限于所在磁盘驱动器的剩余空间;在保存为最终数据文件时,需要将分通道 产生的临时文件整合为一个单一的大数据文件,因此软件产生的数据文件最大 占用空间为当前磁盘驱动器剩余空间的1 2 。在读取( 导入) 历史数据文件时, 数据文件将被读取到内存中,其大小受限于内存的剩余可用空间。综合采集工 作、保存和读取三方面,软件存储的最终数据文件的最大值将是内存剩余空间 和当前磁盘驱动器剩余空间的1 2 中的较小值。 监测软件的可靠性。在生化实验中,数据是第一位的,为防止因为不可预 知的原因导致软件非正常关闭或者采集工作进行中软件崩溃而导致已有的数据 不可恢复,本软件在设计时,使用了分通道临时文件磁盘缓存策略( 根据实际 测试,工作时,数据实时被存储在磁盘上也完全能满足速度要求) ,将每次采集 得到的数据缓存在本地磁盘上,这样最大限度的减小了丢失数据的可能性。在 软件非正常关闭( 或者崩溃) 后,可以通过临时文件得到之前采集到的数据。 在数据接收模块编写完成后,经过近一年的多次实际测试比对,数据的正确性 得到验证。 监测软件的易用性。依照课题项目的需求,使用可视化图形界面实现了各 个功能。在实验步骤填写上按照实验流程顺序实现:采集到数据后使用图形、 表格、文字进行显示,便于查看。界面按钮、菜单子项等的状态在程序内部自 动判断后改变其自身的可用状态,保证了用户操作的正确性。增加按钮的提示, 编制帮助文档,最大限度的保障用户的方便使用。 监测软件的易扩充性。软件的各个模块均采用面向对象卜w 的设计方法,例 如图形控件上易于增加新的图形显示方式和功能,保证了较小的变动就可实现 用功能更强的控件来代替现有的控件。使用动态链接库等技术,将软件按功能 划分为不同模块,在接口不变的情况下,迅速实现用更优设计的模块来代替现 有的模块,这一技术已经用于数据接收模块。 此外,监测软件在实时性上也满足实验要求,能够实时接收数据并显示。 7 第三章监测软件的总体设计与开发 第三章监测软件的总体设计与开发 3 1 1问题定义 第一节监测软件的总体设计 在认真分析了s p r 生物传感器系统的硬件电路产生数据特点、工作机制以 及生物检测实验的一般特征基础上,我们为本监测软件定义了合理的数据结构, 并且使其能够输出便于存储和读取的文件格式。监测软件利用采集到的光强数 据序列,实时计算出共振角,多次采集即形成了共振角序列,通过这些数据, 图形组件能够实时绘制出“入射角光强”二维图和“时间共振角 二维图, 从而实时观测到实验情况。监测软件可以将采集数据实时显示出来并且在缓存 到本地磁盘的临时文件中,同时也可以将采集的历史记录以列表和文字的形式 显示在屏幕上,这样便于用户对历史数据的查询以及对实验状况的实时判断。 从工作流程上来说,监测软件是利用v i s u a lc + + 6 0 集成开发环境,使用 m f c 和w i n 3 2 混合编程,通过控制下位机硬件电路,以采集到的实验数据为基 础,达到实时监控、显示的目的。 3 1 2 设计目标 1 、采用动态链接库技术分离数据接收模块。将数据接收模块分离为动态链 接库,对外提供接口和发送消息,模块任务的专一使得编程和更新容易实现。 2 、使用消息传递机制完成数据接收和状态变化。在数据接收模块中使用观 察者模式,利用消息传递机制完成数据准备好通知。在框架的各模块间利用消 息传递机制完成按钮、菜单项、状态栏等状态的变化。 3 、使用面向对象的方法设计完成图形组件,保证了图形组件良好的复用性, 通过创建不同的图形组件对象、设置不同的属性,完成不同数据源的图形显示。 图形组件中,使用相对高效的算法完成数据的绘制。 4 、使用m f c 多文档完成多标签页界面,使用窗口分割技术完成“采集页 面”子框架窗口的分割,实现当前选定通道的“时间响应”坐标图、“入射角 8 第三章监测软件的总体设计与开发 光强”坐标图以及八通道的“时间响应”缩略图显示在一个页面上,同时可根 据定制隐藏其中某个窗口。 5 、依照实验流程,实现一次实验的新建,包括通道的选择、基线测试、样 品信息的填写、采集时长和频率的设定等。 3 1 3 软件的模块 模块化设计思想广泛应用于装备制造、建筑以及软件开发等领域。软件的 模块化设计是指在开发软件过程中,将软件划分为不同的模块,每一个模块实 现软件的一个子功能,模块内的内聚度尽可能的高,模块间的耦合度尽可能低 卜“,把这些模块组合起来,形成一个整体,完成指定的功能。模块化的设计方 法能够有效的降低软件的复杂度,提高软件的可重用性,便于软件测试以及升 级更新【2 2 】。 3 2 1开发环境 第二节监测软件的开发方案 软件的开发环境决定了软件的质量,监测软件的开发环境采用发布版本的 运行环境,在开发过程中穿插着检测实验,保证软件发布版本的运行质量。 3 2 1 1软件 操作系统:w i n d o w s2 0 0 0 及w i n d o w sx p 。 开发环境:v i s u a lc + + 6 0 3 2 1 2 硬件 主机性能要求:c p u 主频大于1 0 g h z ,内存大于5 1 2 m ,软件自身的内存 要求大约为2 0 m 。 软件采集工作的进行需要多通道s p r 生物传感器检测系统下位机硬件电路 与p c 机的正常连接,软件读取历史文件时不需要硬件电路与p c 相连。 硬件连接为:将s p r 硬件电路通过u s b 转串口线与p c 端的u s b 相连, 安装一个名称为f 1 2 3 2 u s b d r i v e r 2 0 e x e 的可执行程序,将u s b 模拟为串口。 9 第三章监测软件的总体设计与开发 3 2 2 实现方法 多通道s p r 生物传感检测系统监测软件由多个功能模块和用户交互界面组 成,在软件运行过程中,各个模块间存在着数据和消息的交互和传递。软件使 用m f c 和w i n 3 2s d k 开发,使用面向对象的程序设计方法实现交互操作,将 配置模块、图形组件、实验设置模块、用户交互操作、存储模块等集成在一起, 组成一个应用框架,再使用动态链接库技术将数据接收模块链接到框架中,完 成软件的实时控制、显示和存储功能。 3 2 2 1 基于m c 6 0 的多文档程序开发 v c 6 0 是m i c r o s o f t 公司于1 9 9 8 年推出的一款基于c c + + 语言的集成开发 环境,以m f c 库为支撑,同时也可以直接使用w i n 3 2 a p i ,是迄今使用最多的 v c 版本。 在v c 6 0 集成开发环境中,可以使用微软基础类库( m i c r o s o f tf o u n d a t i o n c l a s s e s ,m f c ) 作为应用程序引擎,m f c 以c + + 类的形式封装了w i n d o w s 提 供的a p i ,提供了应用程序框架。文档视图结构是m f c 提供的应用程序框架 的核心结构,其设计思想是将数据的操作与数据的表现分离开来,在文档中进 行数据的管理,包括定义和操作数据:在视图中引用文档中的数据,对数据进 行可视化表现,同时,通过视图提供与用户交互的接口,实现交互操作,同时 对数据的更新又反应到文档中的数据上。 通过使用m f c ,在v c 6 0 下,程序员可以进行单文档( s d i ) 、多文档( m d i ) 、 对话框三种类型的可视化应用程序的开发。单文档类型的应用程序在打开一份 实例后只有一个框架窗口,多文档类型的应用程序在一份程序实例中,可以打 开多个子框架窗口,每个子框架可以具有不同的文档类型。 由于监测软件需要具备实时采集和历史文件读取两种类型的功能,因此, 我们使用多文档开发监测软件,分别为实时采集和历史文件读取框架各创建一 个文档模板。 3 2 2 3 数据的实时显示 实时显示数据是指将即时采集到的实验数据以事先约定好的方式显示在屏 幕上,以为用户监控判断提供参考。多通道s p r 生物传感检测系统对实时数据 要求是,监测软件能够提供直观明了、操作性好且形式多样的图形用户界面。 10 第三章监测软件的总体设计与开发 要想将实验数据变为图形、列表项等格式,需要对数据进行预处理。在得 到实验数据后,根据事先约定的格式,对数据进行角度变换等,使其能够作为 一个坐标点正确显示到图形组件的坐标系中。通过添加实验数据与列表项的关 联,使代表实验数据的简要文字说明能够作为一个子项显示在历史采集列表上。 通过将实验数据填充到定义好的文件数据结构上,使其能够实时保存到临时文 件中。 3 2 2 3u m l 设计 统一建模语言( u n i f i e dm o d e l i n gl a n g u a g e ,u m l ) 在软件开发过程中被广 泛的使用卜“,在设计过程中,使用u m l 对监测软件在不同层次上的结构进行 了表示。图3 1 所示的为监测软件模块级包结构,在第四章中,我们将对每个 模块内部的u m l 实现进行介绍。 目鼬 图3 1 监测软件模块级包结构 第四章监测软件的各模块的设计与实现 第四章监测软件各模块的设计与实现 在第三章中,对监测软件的整体结构进行了简要介绍,在本章中,我们将 对监测软件各模块的实现进行详细的介绍。 第一节数据接收模块的设计 数据接收模块完成命令的下发和数据的接收工作,通过数据接收模块,监 测软件能够控制下位机硬件电路的工作状态,获取上传的实验数据。由于数据 接收模块的功能专一,我们以动态链接库的形式封装数据接收模块,在监测软 件运行时被其他相关模块调用。 本节第一小节对监测软件使用的通信协议及内容作简单介绍,后面几小节 介绍数据接收模块的实现和调用。 4 1 1通信协议 为使下位机硬件电路与本监测软件能够协同工作,实现信息交换,在设计 之初,制定了两者间的通信协议。如表所示通信帧格式,一帧数据由帧起始、 功能标志1 、功能标志2 、数据区、c r c 校验、帧结束等6 部分组成,每部分 的长度见表4 1 所示,一帧数据长度固定,共计3 2 个字节。表4 2 列出了当前 使用的各种功能帧。 表4 1上位机与下位机硬件电路通信的帧格式 功能帧起始功能标志1功能标志2数据区c r c 校验帧结束 长度 1 b1 b1 b2 5 b2 b2 b 表4 2 监测软件使用的功能帧介绍 功能起始标志1标志2数据区 c r c 结束 开机 0 x 3 a0 x 5 30 x 5 32 5 个0 x f f 开机握手 0 x 3 a0 x c 40 x c 42 5 个0 x f f 1 2 第四章监测软件的各模块的设计与实现 续表4 2 监测软件使用的功能帧介绍 功能起始标志1标志2数据区c r c结束 第3 字节为蠕动泵的 转速值,转速值范围 蠕动泵转为1 1 0 0 ,下位机收到 速控制 0 x 3 ao x a 70 x b 0 后转换为1 6 0 中的对 应数据;其余字节填 充0 x f f 蠕动泵转 第3 字节为蠕动泵的 速控制握 0 x 3 a0 x f a0 x b 0 转速值,转速值范围 为1 1 0 0 ;其余字节填 手帧 充0 x f f 第3 字节为需要扫描 通道扫描0 x 3 ao x a 70 x 5 d的通道号( 1 - 8 ) ;其 余字节填充0 x f f 通道扫描 第3 字节为需要扫描 握手帧 0 x 3 a0 x f a0 x 5 d的通道号( 1 8 ) ;其 余字节填充0 x f f 第3 到2 6 字节包含 1 2 个像素的值,每个 数据 0 x 3 a0 x d 80 x d 8像素的值占两个字 节;第2 7 字节为数据 帧编号( 0 8 4 ) 第3 到2 6 字节包含 数据 1 2 个像素的值,每个 0 x 3 a0 x f d0 x f d像素的值占两个字 握手帧 节;第2 7 字节为数据 帧编号( 0 8 4 ) 1 3 第四章监测软件的各模块的设计与实现 续表4 2 监测软件使用的功能帧介绍 功能起始标志1标志2 数据区 c r c 结束 第3 到1 0 字节为数 据;第1 1 字节为温 编号8 5 度;第1 2 到1 5 字节 数据帧 0 x 3 ao x d 8o x d 8为共振角值;第1 6 到1 9 字节为共振角 对应的光强值;第2 7 字节为数据帧( 8 5 ) 第3 到1 0 字节为数 据;第1 l 字节为温 编号8 5度;第1 2 到1 5 字节 数据握手0 x 3 a o x d 8 o x d 8为共振角值;第1 6 帧到1 9 字节为共振角 对应的光强值;第2 7 字节为数据帧( 8 5 ) 硬件电路 待机帧 0 x 3 a0 x 6 60 x 6 62 5 个0 x f f 硬件电路 待机握手0 x 3 a 0 x 4 a 0 x 4 a2 5 个o x f f 帧 硬件电路 关机帧 0 x 3 a0 x 9 50 x 9 52 5 个o x f f 硬件电路 关机握手0 x 3 a0 x 3 9o x 3 92 5 个o x f f 帧 :c r c 在进行校验计算时,校验计算的数据不包括帧尾,共计2 8 个字节; :0 x 0 d 、0 x 0 a 4 1 2 动态链接库的选择 在v c 6 0 中,可开发的动态链接库的种类有m f c 、w i n 3 2 动态链接库。 1 4 第四章监测软件的各模块的设计与实现 w i n 3 2 动态链接库提供的函数能被w i n d o w s 平台下非常多的集成开发环境所支 持和调用【2 4 2 5 2 6 ,2 7 1 。在本监测软件中,选择使用w i n 3 2 动态链接库作为数据接 收模块的实现形式,保证了后续在别的开发环境中开发前台程序时此模块的可 复用性。 4 1 2串口类的实现 监测软件进行采集工作时,通过串口与下位机硬件电路通信。 串行通信是指串口按位发送和接收字节。r s 2 3 2 c 是美国电子工业协会 ( e i a ) 于1 9 6 9 年制定的一种串行物理标准,它对信号线功能、电气特性等都 做了明确的规定,通信设备厂商都生产与此标准相兼容的通信设备,因此 r s 2 3 2 c 在工业上得到了广泛的应用卜。遵循r s 2 3 2 c 标准的硬件连接非常 简单,在多数情况下,对于一般的双工通信,仅需几根信号线就可以实现,例 如将一台p c 上的9 针串口中的t x d 、r x d 、g n d 接口通过信号线与外设( 或 别的p c ) 的r x d 、t x d 、g n d 相连,就实现了串行通信的硬件电路。在软件 编程方面,m i c r o s o f t 公司的w i n d o w s 操作系统在其内部对串口的打开、关闭、 接收、发送等各种操作进行了封装,并提供多种形式的接口,方便程序员实现 串行通信。 在对串口进行编程时,可以根据需要选择使用m i c r o s o f tc o m m u n i c a t i o n c o n t r o l ( m s c o m m ) 控件、第三方公司控件、w i n 3 2a p i 等方式进行实现,使 用w i n 3 2a p i 难度高于使用m s c o m m 控件和第三方公司控件,需要程序员自 己对串口进行各种设置,但更加灵活,功能也更加强大。 在本监测软件中,根据实际需要,使用w i n 3 2a p i 实现了一个串口操作类, 对外提供六个方法,如图4 1 所示。 c c o r e c o l l l l l n - m h c o m m :l o n g + g e t s a f e h a n d l e 0 + o p e n ( ) :b o o l + c l o s e ( 1 + r e a d d a t “1 :i n t + w r i t e d a t a 0 :i n t + p u r g e c o m m 0 图4 1 串口类c c o r e c o m m 1 5 第四章监测软件的各模块的设计与实现 获取串口句柄 返回私有成员变量mh c o m m 的所存储的串口句柄。 打开串口 打开接口参数为:串口号:波特率;奇偶校验;停止位;数据位长度。 利用c r e a t e f i l e ,设置为重叠方式独占方式,设置好波特率、奇偶校验、停 止位和数据位,重置超时为默认值,完成串口的打开,返回打开状态。 关闭串口 关闭打开的串口,关闭后,对串口不能进行任何操作。 “ 读串口数据 读接口的参数为:接收缓冲区首地址;缓冲区长度;最大等待时间 读操作是完成串口数据的读取。 串口数据的读取一般有以下几种方式:一是使用m s c o m m 控件时,获取 串口的数据读事件,在读事件中读取串口缓冲区中的数据;二是使用m s c o m m 控件进行查询读取;三是使用w i n 3 2a p i 同步阻塞读取,通常是创建一个专门 读取串口数据的工作线程,等待串口有数据后才返回;四是使用w i n 3 2a p i 的 重叠i o ,在设置读取串口事件后,对重叠结构中的事件进行判断后,依据结果 进行读取,此种方式的功能最强大,灵活性最高,难度也最大。 在本串口类中,使用异步重叠i o 的方式进行串口数据的读取,如图4 2 , 首先定义一个重叠结构( o v e r l 廿p e d ) 对象,对串口来说,只使用此结构中 的事件成员,对此事件成员进行创建。 利用w i n 3 2 函数s e t c o m m m a s k 进行接收到串口数据事件标志 e vr x c h a r 的注册。 注册成功后,马上进行事件的等待。事件的等待使用w a i t c o m m e v e n t 函数 进行异步操作,函数立即返回,通过判断返回值来判断串口中是否有数据来到。 如果没有数据来到,判断是否是未决的( p e n d i n g ) ,即没有数据来,然后利用 w a i t f o r s i n g l e o b j e c t 等待“最大等待时间”0 在收到数据后,事件标志与e vr x c h a r 进行“与 操作的结果为真。结 果为真后,使用w i n 3 2 函数c l e a r c o m m e r r o r 清除错误标志并获取串口输入缓 冲区中接收到的字符个数,然后使用r e a d f i l e 读取到串口输入缓冲区中的数据, 将其保存到“接收缓冲区”中,返回读取到的字节数。 最后,使用g e t o v e r l a p p e d r e s u l t 判断读取是否正确,完成读取操作。返回 1 6 第四章监测软件的各模块的设计与实现 读取的字节数。 图4 2 读串口数据流程 写串口数据 写接口的参数为:数据区首地址;需要写的长度。 写操作也使用异步重叠i o 的方式。首先定义一个重叠结构 ( o v e r l a p p e d ) 对象,对串口来说,只使用此结构中的事件成员,对此事件 成员进行创建。利用w r i t e f i l e 这个w i n 3 2a p i 把数据写入串口。返回写入到串 口中的数据流字节长度。 清空串口缓冲区数据 将p u r g e c o m m 这个w i n 3 2a p i 进行封装,完成串口缓冲区的清空操作。 4 1 3 对外接口及功能的实现 为适应多种i d e 的调用,在使用数据接收模块时,对外提供类似于w i n 3 2 a p i 形式的接口函数,因此4 1 2 节实现的串口类方法并不对外暴露,而是被数 据接收模块的相关接口所使用。 依据需求,接收模块对外提供的接口如表4 3 所示。 第四章监测软件的各模块的设计与实现 表4 3 数据接收模块提供的接口 接口功能 主程序传入所需参数后,在本接口函数中, 打开串口c c o r e c o m m 类全局对象打开串口,创建 退出事件,创建并启动接收串口数据线程。 关闭串口清除资源,释放内存,退出线程。 将需要接收消息的窗口句柄注入到数据接 收模块中。数据接收模块在需要发送消息 注册窗口 时,如果句柄有效,则发送消息给句柄所 代表的窗口。 将数据写入到串口中。调用c c o r e c o m m 写入数据 对象的写方法实现。 为了实现串口数据的接收,主程序在调用数据接收模块的打开串口方法时, 创建接收数据线程,在接收数据线程中循环接收串口中的数据。利用注册窗口 方法对需要接收消息的窗口句柄进入注册,在接收线程中,有数据来时,给主 程序相应的窗口发送接收到数据的消息,窗口收到消息后,在消息响应函数中 完成数据处理工作。 接收数据线程接收的数据有两种:一是数据帧;二是命令握手帧。图所示 为接收数据帧的流程,命令握手帧不进行帧序号判断步骤。 如图4 3 所示,进入接收线程后,数据的接收按以下步骤进行: 第一步,判断退出事件是否为有信号( 退出事件在创建时初始为无信号状 态,在主程序调用数据接收模块的“关闭串口”方法时被置为有信号状态) ,若 有信号,则接收线程退出;若无信号,则进入下一步; 第二步,利用串口类对象的读方法读串口数据,超时无数据,返回值不为 数据帧长度( 3 2 ) 则回到第一步;有数据,则进入下一步; 第三步,判断数据正确性。在4 1 4 小节中,对接收算法进行介绍。数据不 正确,回到第一步;正确,则进入下一步; 第四步,发送消息到窗口。如果使用数据接收模块的“注册窗口”方法注 册了有效的窗口句柄,则在接收到数据后,将会发送消息到指定窗口,然后回 1 8 第四章监测软件的各模块的设计与实现 到第一步。 图4 3 接收线程接收数据流程 4 1 4 接收数据算法分析 在接收到3 2 个字节的数据流后,需要对数据的正确性进行判断,判断分为 帧正确性、c r c 校验、帧序号( 仅数据帧需要) 几个方面,下面分别介绍其判 断算法。 帧正确性判断流程: 1 、从串口中读取3 2 个字节,若第一个字节为0 x 3 a ,判断最后两个字节是 否为0 x 0 d 、0 x 0 a ,如果是,则此帧正确;如果不是,则进行下一步; 2 、如果第一个字节为0 x 3 a ,最后两个字节不为0 x 0 d 、0 x 0 a ,则从此3 2 个字节中查找“0 x 0 d 、0 x 0 a 、0 x 3 a ”,找到其位置l 1 后,将其保存在中间数 1 9 第四章监测软件的各模块的设计与实现 据缓冲区t e m p b u f f e r 中,再从串口中读取3 2 l 1 个数据,判定读出的数据的最 后两个字节是否是0 x 0 d ,0 x 0 a ,如果

温馨提示

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

评论

0/150

提交评论