毕业设计(论文)便携式心电图监测软件系统的研制_第1页
毕业设计(论文)便携式心电图监测软件系统的研制_第2页
毕业设计(论文)便携式心电图监测软件系统的研制_第3页
毕业设计(论文)便携式心电图监测软件系统的研制_第4页
毕业设计(论文)便携式心电图监测软件系统的研制_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、毕业设计(论文)毕业设计(论文) 题目名称:便携式心电图监测软件系统的研制题目名称:便携式心电图监测软件系统的研制 年年 级:级: 本科本科 专科专科 学生学号:学生学号: 学生姓名:学生姓名: 指导教师:指导教师: 学生单位:信息工程学院学生单位:信息工程学院 技术职称:讲师技术职称:讲师 学生专业:电子信息工程学生专业:电子信息工程 教师单位:信息工程学院教师单位:信息工程学院 便携式心电图监测软件系统的研制 摘要:心电图(ecg)是一种可反映心脏功能变化的检测方法,已在临床医学上获得 了普遍认可和较广泛的应用。本文对心电图监测的原理、方法和关键技术等进行了 研究,并且利用可视化程序设计语

2、言 vc+开发了相应的工作于 windows 环境下的 软件系统。文中简要介绍了心电图监测的基础,讨论了其中软件系统的主要任务及 其解决方案;对该系统的核心部分,即利用面向对象技术与工具(visual c+ 6.0) 开发的心电图监测软件系统,从功能、构成及设计要点等方面进行了重点介绍。初 步的实验结果表明,该软件系统在主要的功能和性能上已基本完成心电图监测系统 的要求,为今后将该心电图监测系统投入临床实验和应用打下了较好的基础。 关键字:心电图;usb2.0 接口程序;vc +;mfc research on software system of portable electrocardio

3、gram monitoring abstract: electrocardiogram (ecg) is an approach to measurement of heart functions. in order to develop a relevant system with advanced functions and high performances, the principles, methods and primary techniques of ecg based diagnosing and/or monitoring of ecg was studied. furthe

4、rmore, a relevant software system by using a visual programming tool namely vc+ has been developed, which works with windows os. in this dissertation, biomedical principles of ecg based diagnosing and/or monitoring of the electrocardiogram are introduced firstly. secondly, the functions and performa

5、nces that the software system comprised are discussed along with some possible approaches to them. finally, the corresponding software system was given in detail, with emphases on its functions, its structure and key of its implementation. the preliminary experiments show that the software system de

6、veloped is basically practical in terms of its main functions and performances, and that it has some merits in preciseness of measuring, convenience of manipulating and reliability of operating. thus, our efforts have completed basic system requirements,which comprises the software system and a usb-

7、based data acquisition system, to become qualified for clinical applications. keyword: electrocardiogram, usb interface procedures, vc +, mfc 目目 录录 第 1 章 绪论.1 1.1 课题背景及意义.1 1.2 国内外研究现状、生产需求状况.1 1.3 本文主要工作及内容安排.3 第 2 章 心电图的基本原理.4 2.1 心电图产生的基本原理.4 2.2 心电图检测的基本原理.5 第 3 章 便携式心电图监测软件系统方案论证证.7 3.1 系统硬件设计方

8、案.7 3.2 系统软件设计方案.7 3.3 系统软件开发方法介绍.9 3.4 主机端 usb 接口数据接收.10 第第 4 章章 便携式心电图监测软件系统开发便携式心电图监测软件系统开发.12 4.1 心电图监测软件系统界面程序设计.12 4.1.1 总体界面设计.12 4.1.2 检测方式的实现.13 4.1.3 监测方式的实现.21 4.2 编程要点与设计技巧.22 第 5 章 软件系统调试及实验结果.26 5.1 调试情况概述.26 5.2 实验结果及改进建议.27 结论.28 致谢.29 参考文献.30 第 1 章 绪论 1.1 课题背景及意义 众所周知,随着科学技术的推进、人类社会

9、的发展进步,全球医疗仪器的发展 也是日新月异。21 世纪的医疗行业主要呈现以下两个特点:第一、未来的医疗世界, 主要的代表产品是纳米机械元件、随身佩戴式化学感测器、居家保健应用医疗器材 等。第二、信息与医疗技术紧密地结合在一起。而心脏病一直是威胁人类生命的头 号杀手,是发病率和死亡率最高的疾病之一。随着生活水平和健康意识的提高,人 们需要随时对心脏进行健康监护并且能在比较危急的情况下进行及时的诊治。所以, 便携式心电图监测软件系统的研制具有非常重要的意义。 心电的自律性、兴奋性和传导性,都以生物电为活动基础。心脏电活动的变化 与某些心脏疾病,尤其是各种类型的心率失常的发生有着密切的联系。心电图

10、是记 录心脏电活动状态的记录,对了解心脏的节律变化和传导情况有着重要的价值1。 本课题的主要目标是研制便携式心电图监测仪,利用可视化程序设计语言 vc+,设计工作于 windows 环境下的心电图监测软件系统它应具备数据采集、 波形及参数显示、报告打印等基本功能。该软件系统与相关的 usb 接口心电数据采 集系统相配合,便可构成高性/价比的便携式心电图监测系统。它将既可用于门诊病 人诊断、住院病人监护,又可用于居家动态监护,其可视化界面也将更便于操作。 因此,本课题接触生物医学工程学科的发展前沿,具有重要的理论意义和研究价值。 1.2 国内外研究现状、生产需求状况 心脏之于人体,如同发动机之于

11、汽车。在一个人的一生中,如果他的寿命 70 岁, 心脏平均每分钟跳动 70 次,那么他的心脏就要跳动近 26 亿次。一旦心脏停止跳动 而且通过抢救不能复跳,那就意味着,一个人的生命结束了。 近年来,心脏病患者日益增多,已成为人类生命的头号杀手。心电图是心脏疾 病诊断的重要方法。然而在临床中一些心脏病患者在短时间内其心电图并无异常, 这就需要长期住在医院中进行监护和治疗,不仅给患者造成了不小的经济压力,也 给医院带来了不小的门诊压力。因此,在信息技术、微电子技术和医疗器械技术非 常发达的今天,功能更强、体积小巧的便携式心电图仪成为开发者研究的热门。 当前,拥有便携式心电图全球领先技术的地区主要是

12、日本、欧美等经济发达地 区以及中国台湾地区2。 2002 年 9 月,日本光电工业株式会推出一种体积小、重量轻,可以挂在脖子上 的便携式心电图计“rac-3103”。该产品的最大特点是体积仅为之前同类产品的 40% 左右,重量只有 98 克。由于便携式心电图计“rac-3103”体积小、重量很轻,所 以可以挂在脖子上后装入衣服口袋中,也可以挂在腰间。由于采取了防雾设计,因 此即使放在外衣里边也不会受蒸气的影响。在功能方面, “rac-3103”具备数据收集、 波形、参数显示、报告打印、生命状态识别及异常状态报警等功能,而且“rac- 3103”通过改进电极而增强了抗干扰能力。 “rac-310

13、3”价格为 95 万日元(约合 7917 美 元)。现在,便携式心电图计“rac-3103”的销量在 3000 台以上。 2004 年 12 月,日本欧姆龙保健品公司与在日本心电图仪领域占第一位的日本 福田电子,成功地联合开发出家用便携式心电图仪“hcg-801”。 “hcg-801”有指电极 和胸电极 2 个电极。只要将右手食指放到指电极上,同时把胸电极直接接触到左胸, 就能测定出 30 秒钟的心电图。测定后心电图会显示在液晶面板上,同时还会显示诸 如“心率过快,心电图好像有紊乱”等 13 种信息。显示信息只是心电图的分析结果, 并不报告预测的病名等信息。机身内置的内存可记录 5 次心电图,

14、sd 卡可记录 300 次心电图。2005 年 1 月 11 月起在日本关东上市,2005 年夏天在日本全国上市。 “hcg-801”的价格比“rac-3103”便宜很多,但是还是蛮昂贵的,为 36750 日元(约 合 350 美元) 。 中国台湾知名企业微星(msi) ,在 2007 年 1 月 8 日登场的美国消费电子展 (ces)上,秀出世界上第一台可直接测量心脏健康状况的心电图概念笔记本 ces,是全球首款“ecg”(心电图)笔记本。通过内建的电子心电图测量仪以及外 接式的感应器(sensor) ,使用者可以不限时间地点的纪录自己的心脏健康状况。所 记录下来的心电图,可以利用 emai

15、l 将数据寄出,也可利用记忆卡存储记录,将心 电图送交给检验所或者是医院诊断。微星心电图概念笔记本如图 1-1 所示。 图图 1-1 微星全球首台心电图概念笔记本微星全球首台心电图概念笔记本 国内由于信息技术落后,精通各方面软件技术的顶尖人才少,研究还处在起步 阶段。但是令人可喜的是,现在已经有很多医疗器械公司投入巨资和组织专业人才 致力于便携式心电图监测软件的研制。相信不久的将来,中国将成为便携式心电图 仪的主要研发生产国家3。 1.3 本文主要工作及内容安排 根据分析、调研结果,我们将研制高性/价比的便携式心电图监测系统。其特点 是:利用嵌入式系统技术、逻辑/模拟可编程器件和表面焊接工艺等

16、,设计功能更强、 体积小巧、便于携带的数据采集盒,它可通过 usb 接口与笔记本电脑或台式机方便 地连接;编制测量精度和智能化程度高的软件,其可视化界面也将更便于操作。这 样,所研制的系统将既可用于门诊病人诊断、住院病人监护,又可用于居家动态监 护,因而将具有较强的竞争力。本文的主要工作是对上述系统的软件部分进行研究 和实现,具体包括: 1.开发相应的检测程序界面。 2.利用 vc+编程,实现具备数据采集、波形及参数显示、参数测算、报告打 印等基本功能的软件系统。 在后续章节中,第二章将简要介绍心电图产生的基本原理、检测方法等;第三 章将讨论便携式心电图监测软件系统的设计方案及主机端 usb

17、接口数据接收;第四 章将详细介绍所开发的软件系统的开发方法、处理流程及程序设计等;第五章将总 结全文,说明对所开发的软件系统的调试、测试方法及结果,指出存在的问题及可 能的解决方法/思路。 第 2 章 心电图的基本原理 本章将主要介绍心电图产生的基本原理及检测方法,为后续的便携式心电图监 测软件系统设计打下一简要的基础。 2.1 心电图产生的基本原理 频率范围为 0.01250 hz (标准临床应用 ecg 带宽为 0.05100 hz), 其体表 电压为 04mv 左右。 心脏的基本活动是心电活动及机械活动(收缩和舒张) ,而每一个心动周期 (cardiac cycle)都是先有心电活动,后

18、出现机械活动,所以形成了“兴奋-收缩耦联”。 心脏本身的生物电变化通过心脏周围的导电组织和体液,反映到身体表面上来,使 体表不同部位在每一心动周期中也都发生有规律的电变化活动。 心脏电的自律性、兴奋性和传导性,都以生物电为活动基础。心电活动的变化 与某些心脏疾病,尤其是各种类型的心率失常的发生有着密切的联系。心电图是记 录心电活动状态的记录,对了解心脏的节律变化和传导情况有着十分重要的价值。 正常心脏的激动来源于窦房结发出的激动。窦房结有节律的定时发出激动,沿 房间、结间传导束分别传入两侧心房及房室结。窦房结位于右心房上部,激动首先 传入右心房,稍后传入左心房,相继引起右心房和左心房的除极作用

19、而产生 p 波。 激动自心房下传自房室结后,传导速度骤然减慢。当激动缓慢通过房室结后,便以 较高的速度穿过房室束、束支以及蒲肯野纤维到达心室,几乎同时传入左右心室的 心内膜,随后从内膜传至外膜。心室除极过程中产生的除极向量环在各个导联中的 qrs 波群。心电图反映心脏激动的综合过程,它产生的基础是一个个心肌细胞的动 作电位。静息状态下,细胞膜内外的离子浓度差别很大,形成“跨膜电位”;当心肌 细胞收到刺激时,在浓度剃度、电场剃度以及细胞膜上钾、钠、钙通道蛋白质的选 择通透性及主动转运机制的作用下,通过控制各离子在膜内外的转移,造成细胞膜 内外的为电荷分布变化,完成除极、复极的过程,形成细胞动作电

20、位。心电细胞的 除极、复极可以看作是一个等效电偶,刺激传播则可以认为是等效电偶的移动。对 各个电偶的电矩进行矢量合成,可以得出瞬时综合心电向量。在各周期中,瞬时心 电向量作周期变化,其变化轨迹称为心电向量环。临床诊断中广泛应用体表心电图 所反映的就是立体心电向量环二次投影的结果。第一次投影将立体向量环在额面极 横面上,形成平面向量环。第二次投影将平面向量环按不同角度投影在移动的心电 图纸上(25mm/s),便形成心电图形。简单而言,就是按照心脏激动的时间顺序,将 此体表电位的变化记录下来,形成一条连续曲线,即为心电图。而且,在正常情况 下,每次心动周期在心电图上均可出现相应的一组波形。 以上简

21、单介绍了心电图产生的基本原理,这也是心电图能够反映心脏特性变化 的理论依据。简单的说,心电图是心房及心室除极和复极过程中电位变化的记录, 心电图各导联上的波形是心电图向量环在相应体表前额面上的导联轴的两次投影。 但由于人体可以认为是一个容积导体,心电的变化可以在体表获得,因而临床使用 的心电图并不是直接从心电向量环获得,而是采用采集记录的方法。临床应用的心 电图是通过在体表特定部位设置电极并使用一定的连接方式构成心电导联,由心电 图记录各导联心电信号的变化情况,供医生对病人的心脏功能进行评价4。 2.2 心电图检测的基本原理 心肌极化的生物电位经置于体表的电极、导联线送至心电信号采集系统。心电

22、 信号采集系统从原理上可分为输入回路(前置放大) 、滤波电路、后极放大电路等。 如图 2-1: 图图 2-1 心电图检测原理框图心电图检测原理框图 检测到的心电信号幅值在 0.054 mv,频率在 0.0572hz。而检测中存在的 主要干扰信号有电极板与人之间的极化电压、50hz 工频干扰、仪器内部噪声和仪器 周围电场磁场电磁场的干扰等。心电信号中 50hz 工频干扰可以利用自适应模板法 消除,则心电图机模拟部分可以采用如图 2 所示的硬件结构。心电信号经电极或导 联线采集后,先要进行电压放大。电压放大器一般由两级组成,前级采用负反馈差 动放大电路。 前置放大电路有高的输入阻抗,一般都在 10

23、m 以上,通常采用射极跟随的缓冲 滤波 后极放大前置放大 放大后的 心电信号 心电信号 传感器接人体 显示放大后波形 放大器。此外还应有过电压、过电流的保护电路,有右腿驱动电路或屏蔽驱动电路 以减少 50hz 干扰等措施。 滤波电路设计中,由于 72hz 以上的干扰信号较强而 0.05hz 以下的干扰信号相 对较弱,所以在滤波电路中,采取先低通滤波取出 72hz 以下的信号,然后接高通 的方式,这样就能滤除极化电压信号得到心电信号。 后级放大器主要是进行电流放大,以及对信号进行滤波以获得特定的频率响应 特性,这包括阻容耦合电路、闭锁电路、增益选择、截止频率和 50hz 陷波等5 6。 第 3

24、章 便携式心电图监测软件系统方案论证证 在理解和掌握心电图的有关基本概念、基本原理、参数计算及其检测方法的基 础上,根据用户需求并结合调研结果,我们提出了研制高性/价比的便携式心电图监 测系统的整体方案并且进行了初步论证。下面,将根据该系统的研制目标,对该系 统的整体设计方案以及硬件系统的设计要点加以说明,以便读者较为全面地了解该 系统的设计原理和工作过程,从而更便于理解软件系统的研制目标、设计思路和开 发方法。 3.1 系统硬件设计方案 根据上述研制目标,整个系统被设计为由基于 usb2.0 接口硬件数据采集系统 和基于 vc+语言编写的软件监测系统组成。其硬件系统主要由心电信号采集电路、

25、生理信号放大电路、mcp3208 型 a/d 采样板、usb 接口电路等组成。心电等信号 数据经 usb 接口总线驱动上传到 pc 主机上,在主机上,通过一定的波形分析与处 理获得对心率的诊断。 对于心电信号的采集电路如图 3-1 所示。它主要由波形检测电路和滤波电路等 组成。 图图 3-1 心电信号采集电路框图心电信号采集电路框图 系统中的 usb2.0 接口电路具有总线供电(+5v)特性,可以与笔记本电脑相连以 构成移动监护系统, 3.2 系统软件设计方案 心电图监测软件系统按功能分主要有数据采集、数据处理与显示、数据后处理 三大主要模块。对于数据采集部分一般称为下位机程序,其作用是完成心

26、电信号的 实时采集,即控制有关硬件电路,完成心电信号的采集并将其数据通过 usb 接口上 传到 pc 主机中,而另外两部分又称为上位机程序,其作用是以良好的人机界面, 对传输上来的数据进行实时显示及后处理,包括波形显示、波形回放、波形特征点 的识别与修正,心率的计算以及诊断结果打印等各项操作。它们统称为心电图监测 软件系统该软件系统的界面结构图如图 3-2: 图图 3-2 树形用户界面结构树形用户界面结构 软件系统启动后,首先进入主窗口,主窗口探出病案录入对话框,在此对话框 填写基本信息后,如果系统以前有同样的 id,则询问是否覆盖,否则显示启动系统 成功。进入主界面后,有检测功能和监测功能可

27、供选择。检测功能包含以下几个基 本功能:波形采集、波形显示、波形暂停、波形前进、波形后退、文件波形回放、 波形保存。监测功能包括波形监测、波形保存、打印预览、打印等基本功能。 在利用该软件系统进行心电图监测功能时具体实现流程图如图 3-3: 病案录入 始 监测方式 波形保存 波形监测 数据保存 打印预览 打印 波形后退 波形前进 波形暂停 波形显示 波形采集 启动系统 主窗口 始 检测方式 文件波形回放 开始 病案录入 打印 监测相应功能检测相应功能 检测方式? n y 结束 启动系统 图图 3-3 软件整体流程图软件整体流程图 3.3 系统软件开发方法介绍 我们选择 microsoft 公司

28、出品的面向对象的程序设计语言 visualc+6.0 作为 开发工具,它是目前为止 windows 环境下进行大型软件开发的首选。visual c+6.0 不仅是一个 c+编译器,而且是一个基于 windows 操作系统的可视化 集成开发环境(integrated development environment,ide) 。它由许多组件组成, 包括编辑器、编译器、调试器以及程序向导 appwizard 类、类向导 classwizard 等开发工具。这些组件通过一个名为 developer studio 的组件集成和谐的开发环 境。其特点如下: 1.利用 appwizard 可以简单快速地生成

29、一个应用程序框架,而不需程序员加入 一句程序代码; 2.利用 appstudio 资源编辑器可以使用户界面的创建简单直观,所见即所得; 3.利用 classwizard 可以使消息或命令自动与消息处理函数或控制函数相联系, 程序员只需考虑函数核心代码的实现; 4.利用 visual c+的 components gallery 和 controls gallery 可以加入现成的组 件和控制。诸如 activex 控制、闪烁窗口、定制状态条等组件。 visual c+贯穿了面向对象的程序思想,其核心是 microsoft 基本类库(microsoft foundation class, mfc

30、)称之为“应用程序框架” 。它一方面用类封装了 windows api,另一方面使用称之为“消息映射”的机制把 windows 消息和命令传递到窗口、 文档、视图以及 mfc 应用程序中的其它对象。因而 mfc 成功地将面向对象和事件 驱动编程概念联系起来,并得到很好的配合。而且使用 mfc 编写 windows 应用程 序简单方便,代码量小9 10 11。 3.4 主机端 usb 接口数据接收 本系统中的 usb 设备主机端实现数据采集的程序流程图如图 3-4,其具体过程 是首先获取 usb 设备句柄,其次读取配置描述符,读取设备描述符,然后就是选择 usb 通信接口,读取管道信息,获取有效

31、通道,进行数据采集。 获得 usb 设备句柄 hdevice 读取设备描述符读取管道信息读取配置描述符 选择一个有效数据管道 开始获取一个 usb 中的数 据 图图 3-4 数据采集流程图数据采集流程图 其中获取 usb 设备句柄为程序的关键部分,它主要由程序中的 deviceiocontrol 函数完成,如下为它的关键代码。 bool winapi deviceiocontrol( /需要操作的设备句柄 handle hdevice, /所要进行的 io 操作 dword dwiocontrolcode, / io 操作的数据输入缓冲区地址 lpvoid lpinbuffer, /lpinb

32、uffer 指向的缓冲区的大小 dword ninbuffersize, /io 操作的数据输出缓冲区地址 lpvoid lpoutbuffer, / lpoutbuffer 指向的缓冲区的大小 dword noutbuffersize, /向 lpoutbuffer 中写入数据的长度大小 lpdword lpbytesreturned, /操作异步和同步选择参数 lpoverlapped lpoverlapped ); 它首先需要或得所操作的设备句柄,然后就是进行相应的 io 操作,将 io 操作 的数据输入缓冲区地址,并获得操作异步和同步选择参数。 另外一个重要的函数是 createfil

33、e 函数,它主要完成文件的创建以及读写等功能, 其具体实现代码如下: handle winapi createfile ( lpcwstr lpfilename, /指向文件名的指针 dword dwdesiredaccess, /访问模式(写/读) dword dwsharemode, /共享模式 lpsecurity_attributes lpsecurityattributes, /指向安全属性的指针 dword dwcreationdisposition, /如何创建 dword dwflagsandattributes, /文件属性 handle htemplatefile /用于复

34、制文件句柄 ); 第第 4 章章 便携式心电图监测软件系统开发便携式心电图监测软件系统开发 在完成系统方案论证和软件开发方法的介绍之后,这一章主要介绍心电图监测 软件系统的开发。对于心电图监测软件系统的程序设计主要分两部分,一部分是 usb 驱动程序的设计,另一部分是 usb 接口程序的设计。下面将详细介绍它们的 实现过程。 4.1 心电图监测软件系统界面程序设计 4.1.1 总体界面设计 对于我们研制的心电图监测软件系统,应该具备检测和监测两种功能。检测部 分是采集一段心电波形后,再对这段波形进行参数判断,从而判断病人病情:对于 监测部分,主要完成对心电图的长时间监测,如果波形出现异常,应及

35、时产生报警。 程序总界面图如图 4-1 系统总界面图所示。 图图 4-1 系统总界面图系统总界面图 在该系统界面中,上面的黑色的文本框为显示波形的区域,中间为按钮栏,用 于控制波形的显示,最下一栏为现实当前的软件相关设置以及病人的相关情况。功 能栏又分为了检测方式和监测方式。 4.1.2 检测方式的实现 心电图监测软件系统的诊断部分主要完成对病人心功能基本参数的测算,为有 关心脏疾病的临床诊断提供依据。因此,该部分最主要的任务是要准确标识心电图 (ecg)中各个特征点的位置,从而计算其心率(hr)等心功能参数。相应地,在系统 中具有病人信息设置、波形采集、波形显示、波形暂停、单步波形回放、文件

36、波形 回放、波形保存、当前波形回放、特征点识别、特征点手动修改、参数计算、波形 监测及结果打印等功能。 在使用 vc+语言进行编程时,各功能模块的实现方法如下: 1.病历信息设置 在准备检测时,首先要将病人的有关信息进行注册并存放在信息文件和病人的 数据库中,产生序列号 id 以便与数据库中对应的记录关联,id 也是软件中数据库 管理和数据分析的主索引,负责查找对应病人的各种文件。在心电图监测软件系统 整体框架下,每当打开系统诊断部分的工作界面时,系统会自动弹出病人信息设置 告警框,要求输入病人信息。病人信息对话框包括编号(id)、姓名、性别、年龄、 科室等内容,这些信息存放在专门管理病人档案

37、的 microsoft excel 工作表中,如图 4-2 病人信息设置对话框一旦病人信息设定,在以后的检测步骤中工作界面会自动显 示病人信息。 图图 4-2 病人信息设置对话框病人信息设置对话框 实现时,首先建立了一个类 cmsgdlg ,定义了以下变量: m_id = _t(0001);/病人 id m_name = _t(飞飞);/病人姓名 m_old = _t(22 岁);/病人年龄 m_part = _t(内科);/病人姓名 m_doc = _t(阿飞);/医生姓名 m_gender = _t(男);/病人性别 m_date = _t();日期 获取系统时间时,用了 ctime 类,

38、代码如下。 ctime tm; tm = ctime:getcurrenttime(); m_date = tm.format(%y.%m.%d); 通过以上调用,可以得到系统时间,方便存档以及显示。 开始时初始置窗体位于最顶层,通过设置 setwindowpos()函数参数实现,获取 文件主路径通过调用 getmodulefilename()实现,然后设置 excel 文件路径为 spath + msg.xls,然后向向 excel 写入数据,如果之前有病人标号的,在 excel 对应行加入,当点击设置时询问是否覆盖,当确定时,最后覆盖以前的数据。 图形如图 4-3 所示。 图图 4-3 是

39、否覆盖数据是否覆盖数据 最后数据完全写入成功以后显示系统启动成功 2.数据采集 数据采集模块主要完成心电信号的数据“采集”(即通过usb接口接收下位机上 传的数据)以及显示。当按下数据采集按钮后,系统首先调用usbopendriver (inbytes;) if(m_databuffer.size()= =data_length) /缓存满,弹出一个数据 m_databuffer.pop_front(); m_databuffer.push_back(inbufferi); /每次压入一个数据 a=inbufferi; /低8 位 i+; m_databuffer.push_back(inbu

40、fferi); b=inbufferi; /高8 位 i+; if (a0) a = 256+a; if (b0) b = 256+b; c=256*b+a; /高位数据左移8位上低位数据为当前数据 m_databuffer_ecg.push_back(int) c); save_data_buffer_ecg.push_back(int) c); /采集数据放入存盘数据缓存 当通过循环读取数据盘文件来模拟数据采集和显示的过程时,将数据采集缓存 中的数据转换到数据缓存中的具体实现代码如下,其中m_databuffer_ecg 为心电数 据的数据缓存。 具体代码如下: if(flag) /心电信

41、号转换过程 int a = rec_data_bufferi; /源代码段中的高位数据 int b = rec_data_bufferi-1; /源代码段中的低位数据 /第一位被当成了符号判断位,而实际数据不是,因此进行补码变化 if (a0) a = 256+a; if (bgetclientrect(/获取绘制窗口的大小 static cdc * pdc = pwnd-getdc();/获取绘制区域的设备指针 cbitmap membitmap;/定义一个内存绘图区域 static cdc memdc;/定义一个静态内存设备上下文 memdc.createcompatibledc(pdc)

42、;/绘图设备与内存设备上下文相/关联 4)进行图形绘制 memdc.moveto()和 memdc.lineto()。 5)拷贝到屏幕 pdc-bitblt(rect.left,rect.top,rect.right,rect.bottom, 2. 文件读写 vc+提供了功能强大的 cfile 用于进行文件操作。每个文件都可以看成是一个 cfile 类的对象,建立文件、读写文件等工作都可以简化到调用 cfile 类的成员函数 来完成。在本系统中,在对数据进行分析和处理时都要从存盘文件中读取数据,在 读取时,首先构造 cfile 对象,然后获得文件长度,在分配分配缓冲区,大小为文 件大小;将文件

43、中的数据读写到缓冲区中;最后关闭文件释放缓存。 3. vc 下打印机的使用 在 windows2000 下,显示器和打印机、绘图仪都被视为输出设备。系统默认的 输出设备是显示器。要使用打印机,首先需要创建一个指向打印机的设备环境句柄, 然后通过该句柄调用相关的绘图函数把所需的文字和图形输出至打印机上。当打印 结束后,应删除这个设备环境句柄。 如果应用程序要把显示结果在打印机上打印出来,则此时 ondraw 函数就担负 着两重任务。显示时,onpaint 函数会调用 ondraw,此时设备环境为显示设备环境; 而当打印时,ondraw 函数会被另一个 cview 虚函数 onprint 调用,此

44、时设备环境 为打印机设备环境。onprint 函数被调用一次即可打印出整个页。 我们已经知道 onprint 函数调用了 ondraw,而 ondraw 即可以使用显示设备环 境,也可以使用打印机设备环境。映射模式应该在调用 onprint 函数之前就被设置。 为了能够打印出未被显示出来的一些内容,如页标题、页眉和页脚等,可以对 onprint 函数进行重载。onprint 函数由两个参数,它们是: 1)指向设备环境(pdc)的指针; 2)指向打印信息对象(cprintinfro)的指针,其中包括页面的尺寸、当前页码以 及最大页码。 在重载的 onprint 函数中,不调用 ondraw 函数

45、也同样能够支持打印逻辑,这样 它就和显示逻辑完全分开了。应用程序框架对每一个需要被打印的页都要调用一次 onprint 函数,而 cprintinfro 结构中则记录着当前页码。 在本系统中,我们要打印的是病人诊断结果报告,因此,首先利用 getinfo()函 数获得打印信息对象中的各项内容,然后在绘图函数 draw(cdc*pdc,crect*bitmaprect)中绘制各项内容,其中设备环境指针(pdc)指向 打印机设备。 第第 5 章章 软件系统调试及实验结果软件系统调试及实验结果 5.1 调试情况概述 心电图监测软件系统是与硬件数据采集系统紧密结合的,在我们的预期研制目 标方案中我们已

46、经设定它将与基于 usb2.0 接口的硬件数据采集系统相结合构成便 携式心电图监测系统。因此,对于它的调试我们必须按照从小到大、从易到难的方 向,分层次、分步骤地逐步进行,以便最大限度地孤立问题和加快进度。 我们将整个心电图监测软件系统的调试分为软件独立调试和联合调试两个阶段。 在软件独立调试过程中,主要通过读取磁盘文件中的心电信号数据实际运行待 测单元(模块)。在调试过程中,遇到以下问题: 1.多个窗口间传递消息时,获取每个窗口的句柄; 2.动态绘制波形时,本软件系统在运行一定时间后,出现内存泄漏; 3.usb 数据接受过程遇到了不能接受的问题。 经过指导老师帮助和自己翻阅了大量资料后,这两

47、个问题解决方法如下: 1.对于获取窗口句柄的问题,本软件系统采用了固定每个窗口在设备的位置, 利用 cwnd:windowfrompoint(cpoint point)获取需要子窗口的句柄和 cwnd:getparent()获取父窗口的句柄。这样,本软件系统就可以非常顺利地在窗口 间传递消息了。 2.而动态绘图中的内存泄漏问题是关系到本软件系统基本功能的实现,因此, 解决这个问题是十分重要的。内存泄漏产生原因主要是在绘制动态波形时,本软件 系统为了使显示的波形不出现闪烁,于是采取内存绘图,在将内存设备上下文复制 到设备上去,这样,本软件系统的绘图比一般的绘图方式更消耗内存资源。本软件 系统用了

48、很简单一个方法就解决了这个问题,让绘制图形的内存设备上下文在内存 中固定一个区域,即将设备指针和内存设备上下文设置为静态。 3.通过查阅 visual c+与 usb 接口相关的函数,实现了数据的采集。 在联合调试阶段,usb 设备与主机端的通信成为便携式心电监测系统是否能完 成设计的重要环节之一,也是在整个设计中最困难的一个环节。在经过一段时间查 阅资料和负责 usb 设备硬件的同学共同开发,最后,本系统利用了 windows 的 api 函数获得 usb 设备数据。 5.2 实验结果及改进建议 如上所述,本文研究了心电数据采集和心电波形显示,利用 vc+完成了 windows 环境下心电图

49、诊断/监护软件系统的开发,并且利用实际的生理信号完成了 该软件系统的实际测试。实验结果表明,所设计的系统已具备主要的预期功能。 通过实验与研究,我们可以得出以下结论: 1.心电数据采集通过 usb 设备采集到主机的方式为便携式心电监测系统的便 携成为了可能; 2.vc 开发的软件系统减少了一些硬件的显示设备,而且加上计算机的技术, 提高了整个系统的可靠性。 同时,通过实验与研究,本文作者认为还存在着以下问题需要考虑: 1.整个软件系统的界面虽美观大方,但需再进一步改进,更适应医院等的诊断 系统; 2.在监测方式下,系统获取的很多病人的心功能数据和相应的心电参数需要管 理,希望在接下来得工作能在

50、软件系统中加入数据库管理。 结论 经过 3 个多月的认真工作,终于完成了“心电图监测软件系统”的设计。本课题 是我大学期间唯一一次独立完成的课题,从老师给我课题任务后到软件系统设计的 实现,以及论文的完成,每前进一步对我来说都是新的挑战和尝试。以前,对“心电 图”方面的知识一无所知,而且对 visual c+及其开发工具 visual c+ 6.0 等相关知 识和技术不也很不了解,也就是在这样的情况下,我开始了毕业设计工作,并查阅 了一些相关资料,让自己对课题模糊的概念逐渐清晰,自己的设计也一步步地完善, 每一次改进都让我受益匪浅,一次小小的成功,自己都会感觉非常的奇妙。 便携式心电图监测软件

51、系统是由 visual c+编写的工作 windows 环境下的心电 图监测软件系统与基于 usb2.0 接口的心电采集系统组成的,本文只涉及了心电图 监测软件系统的设计思想以及相关技术问题。当然,该系统要实现的功能还不止目 前的基本功能,用户在使用时也会对系统的软件提出更新的要求,但总的来说,软 件系统的设计基本合理,达到了预期的基本要求。 这次毕业设计的经历将让使我终身受益。我真实的感受就是,毕业设计虽然是 一项蛮有挑战性的工作,但是只要真正用心去做,其实也是一项蛮有趣味的工作。 自己认真通过学习和研究,完成了本课题,真正体会到了其中的困难与乐趣。如果 不认真的学习,不去真正的研究课题,毕

52、业设计也就完成不了,更谈不上收获。 由于水平有限,时间比较紧迫,本设计和论文难免有不足之处,殷切希望读者 予以批评改正。 致谢 经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业 设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导, 以及一起做毕业设计的同学们的支持,想要完成这个设计是难以想象的。 在这里首先要感谢我的导师方艳红老师。方老师平日里工作繁多,但在我做毕 业设计的每个阶段,从查阅资料,设计草案的确定和修改,中期检查到后期的详细 设计,毕业实习等整个过程中都给予了我悉心的指导。我的设计虽然不是很难,但 是方老师仍然热情细心地纠正设计中的错误。除

53、了敬佩方老师的专业水平外,她的 治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和 工作。 其次要感谢和我一起作毕业设计的同学们,在本次设计中他们给了我许多技术 上的帮助和精神上的鼓励,如果没有他们的热心辅导,我此次设计的完成将变得非 常困难. 然后还要感谢大学四年来所有带课的老师,为我打下电子专业知识的基础。 最后感谢信息工程学院和我的母校西南科技大学四年来对我的大力栽培。 参考文献参考文献 1 解永生.便携式动态心电信号数据采集器的设计j.电子技术应用,2000,24(2):10-12. 2 李志坚,邵庆余,潘燕.12 导联同步心电图异常波形数据库生成系统和波形分析初

54、步j.山东 生物医学工程,2002,21(1):7-9. 3 朱新建.新型移动式心电远程监护系统的终端研制d.重庆:第三军医大学,2003. 4 萧世文.usb2.0 硬件设计m.北京:清华大学出版社,2003. 5 j.p.marques,吴逸飞.模式识别原理、方法及应用m.北京:清华大学出版社,2002. 6 吴宝明,阎庆广,李刚.高抗干扰移动式心电远程监护系统研制a.无锡:中国生物医学电子 学学术年会,2003:198-215. 7 zhitao lu, dong you kim and w.a.pearlman.wavelet compression of ecg signals by

55、 the set partitioning in hierarchical trees algorithma. ieee trans.biomed.eng,2002,47(7):849-856 8 r.istepanian, l.hadjileontiadis and s.panas.ecg data compression using wavelets and higher order statistics methodsa.ieee transactions on information technology in biomedicine, 2001,5(2):108-115. 9 黄维通

56、.visual c+面向对象与可视化程序设计m.北京:清华大学出版社,2003. 10 黄维通.visual c+面向对象与可视化程序设计习题解析与编程实例m.北京:清华大学出 版社,2003. 11 王正军.visual c+6.0 程序设计从入门到精通m .北京:人民邮电出版社,2006. 12 w.s.chen,l.hsieh and s.y.yuan.high performance data compression method with pattern matching for biomedical ecg and arterial pulse waveform?j.compute

57、r methods and programs in biomedicine,2004,74(1):11-27. 13 y.zigel,a.cohen,a.abu-ful,a.wagshal and a.katz.analysis by synthesis ecg signal compressionj.computers in cardiology,2004,24(9):279-282. 14 郑莉,董渊.c+语言程序设计m.北京:清华大学出版社,2004. 15 心电数据.mit 数据库,. 附录附录 实现便携式心电图监测软件系统的部分主要代码: /数据转换

58、程序 void cecgv1_0dlg:buffertodata(puchar pbuf) uint i, j, k; uchar a, b; for(i = 0 , j = 0; i 4096;j +) a = *(pbuf + i); b = *(pbuf + i + 1); k = (uint)(b databufferj = (k / 4095.0) * max_rang; i += 2; if(gpipebuffer.size() != displaylen) for(i = 0 ; i getclientrect( /获取绘图控件大小 cbrush bkbrush(hs_cross

59、,rgb(0 x50, 0 x50, 0 x50); /设置网格颜色 pdc-setbkcolor(rgb(0, 0, 0); /设置绘图控件背景颜色 pdc-settextcolor(rgb(255, 0, 255); /设置文本颜色 pdc-fillrect(rect, /填充绘图控件 cpen* ppen = new cpen; ppen-createpen(ps_solid, 3, rgb(255, 0, 255); /初始化画笔 cgdiobject* poldpen = pdc-selectobject(ppen); /绘制坐标轴 pdc-moveto(rect.left + 30

60、, rect.bottom - 20); pdc-lineto(rect.left + 30, rect.top + 20); pdc-moveto(rect.left + 30, rect.bottom - 20); pdc-lineto(rect.right - 30, rect.bottom - 20); /绘制 x 轴箭头 pdc-moveto(rect.left + 30, rect.top + 20); pdc-lineto(rect.left + 27, rect.top + 25); pdc-moveto(rect.left + 30, rect.top + 20); pdc-

温馨提示

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

评论

0/150

提交评论