0 引言

随着人们生活节奏加快,人口逐渐老龄化,心脏疾病成为危害人类健康和生命的主要疾病之一。心电监护系统为心脏病人诊断和治疗提供了一个有效的手段,对心脏疾病的防治和诊断具有重大的意义,本介绍一种基于Linux 和MiniGUI 的心电监护系统,能够满足患者随时随地对心电进行方便快捷的监测,及时地发现异常情况并采取有效的措施,从而更好地保护人们的身体健康。

1 硬件系统设计

本系统采用S3C2440 处理器作为控制中心,S3C2440 是基于ARM920T 内核的16 /32 位RISC 嵌入式处理器,最高主频可达532MHz,提供64MSDRAM、64M Nand Flash 以及2M Nor Flash 的存储设备,独立的16kB 指令缓存和16kB 数据缓存,LCD 控制器,3通道的异步串口,SPI 同步串口,117 位通用的I /O 口,1个内部时钟,8通道10 位的ADC,触摸屏接口,以太网控制器、PCMCIA 接口、USB 接口等,具有高性能、低功耗、高性价比等特点,主要用于视频会议、网络监控,GPS 定位/导航仪等,特别是医疗电子设备。系统的整体硬件结构如图1 所示,能够实现对心电信号采集、处理、显示、存储等功能。

图1 系统总体硬件结构

2 软件系统设计

2. 1 构建嵌入式Linux

心电界面的开发是基于MiniGUI 的嵌入式Linux系统。在各种嵌入式操作系统中,Linux 以其结构清晰、源代码公开、功能强大、又易于移植得到广泛的使用。本系统内核采用2. 6 版本的内核,Linux 2. 6 内核在性能、模块支持、可用性、可测量性等方面有大幅度的提高。一个完整的嵌入式Linux 系统主要包括BootLoader( 引导程序) 、内核和根文件系统3 个方面。本系统中Bootloader 采用VVi,文件系统采用Yaffs。根据目标平台实际的需要,对引导程序、内核和文件系统进行裁减、配置,最后把编译好的ViVi 以及生成的Linux 内核和文件系统的镜像文件烧录到平台中并运行,嵌入式Linux 构建完毕。

2. 2 图形用户界面MiniGUI

MiniGUI 是基于Linux 的轻量级的图形用户界面支持系统,是由原清华大学教师魏永明主持开发,遵循GPL 公约。所支持的操作系统已不仅仅限于Linux,它还可以在uClinux、uC /OS-Ⅱ、eCos 和Vx-Works 等系统上运行。已验证的硬件平台包括Intelx86,ARM ( ARM/AMR9 /StrongARM/xScale ) ,Power-PC,MIPS,M68K ( DragonBall /ColdFire ) 等。对MiniGUI 移植,首先下载MiniGUI 的源代码libminigui-1. 6. 10. tar. gz ( MiniGUI 函数库源代码) 和minigui-minigui-res-1. 6. 10. tar. gz( MiniGUI 所使用的资源,包括基本字体、图标、位图和鼠标光标) ,然后编译安装并将MiniGUI 的资源拷贝到目标平台上,最后修改目标平台的/etc /MiniGUI. cfg 文件,对目标平台MiniGUI 的运行环境进行配置。

2. 3 心电采集界面设计

2. 3. 1 主界面

MiniGUI 中有3 种窗口类型: 主窗口、对话框和控件窗口,心电采集界面是采用对话框进行设计,对话框编程是一种快速构建用户界面的技术,MiniGUI提供了一种基于模板的机制,利用DLGTEMPLATE和CTRLDATA 两个结构体来表示,DLGTEMPLATE用来定义对话框本身,结构体CTRLDATA 用来定义控件。利用这两个结构体模板,用户可以根据需要在程序中定义自己的对话框和控件。主界面的对话框定义如下:

static DLGTEMPLATE DlgInitProgress =

{

WS_BORDER WS_CAPTION,

WS_EX_NONE,

0,0

, 240, 320,

" 欢迎使用心电信号采集系统" ,

0,0

10,NULL,

0

} ;

用CTRLDATA 定义对话框中所有的控件并用数组表示,对话框常常使用控件来实现提示或者设置等功能,定义控件数组模型如下:

static CTRLDATA CtrlInitProgess[]=

{

{ CTRL_STATIC,

WS_CHILD|WS_VISIBLE| SS_NOTIF

|WS_BORDER,

0,0

, 240,

30

IDC_STATIC1,

“欢迎使用心电信号采集系统”,

0

}

;

{

} ;

} ;

通过上述方法生成的心电监护仪主界如图2 所示。心电采集界面主要有心电数据采集与显示、存储、分析等功能,采用多线程编程,为采集、显示、存储、分析各建立一个专门的线程。多线程进行数据采集可以有效地加快程序的反应速度、增加执行的效率。

图2 电监护仪主界面

在MiniGUI 中,使用消息驱动作为应用程序的创建构架。在消息驱动的应用程序中,计算机外设发生的事件都由支持系统收集,将以事先的约定格式翻译为特定的消息。应用程序一般包含有自己的消息队列,系统将消息发送到应用程序的消息队列中。从消息队列中读取这些消息,并由窗口过程函数来处理这些消息。本系统界面通过鼠标键的按击,翻译成特定的消息,若收到的是控件消息,则判断ID,根据应用程序进行相应的消息处理。

2. 3. 2 心电采集与显示

心电数据采集采用定时器进行采集和显示,定时器使用SetTimer 函数创建,创建时需要指定定时器标识号以及定时时间,当定时时间到达时,定时器将会产生MSG _ TIMER 消息,本系统的心电采集频率为200Hz。

从A/D 寄存器读取三通道的数据存入数组中,并将数组中的数据在液晶显示器上绘出。在MiniGUI 中实时绘图采用GDI,GUI 系统的一个重要组成部分就是GDI,即图形设备接口( Graphics Device  Interface) 。通过GDI,GUI 程序就可以在计算机屏幕上,或者其它的显示设备上进行图形输出,包括基本绘图和文本输出。所有绘图相关的函数均需要有一个设备上下文,为了提高绘图效率,在这里建立私有设备上下文,所建立的设备上下文在整个窗口生存期内有效,从而免除了获取和释放的过程。利用hdc =GetPrivateClientDC( hDlg) 可获得私有设备上下文。然后调用MoveTo ( HDC hdc, int x, int y) 和LineTo( HDC hdc, int x, int y) 对数组中的数据进行画线,由于采集到的心电数据较小,因此在对其进行画线之前根据显示区域对所有数据进行适当放大,这样可以使心电波形在液晶显示器上直观显示。

2. 3. 3 心电数据分析

在心电数据显示和分析线程中,由于心电信号容易受到各种干扰的影响,为了滤除心电信号中的干扰成分,首先要进行数字滤波处理,采用FFT 滤波和滑动平均滤波的方法使图像得以平滑,并采用差分方法进行R 波检测。当采集到5 秒的数据的时候,程序启动心电数据分析线程,对存储在数组中的心电数据进行分析,主要进行R 波检测,并且在液晶显示器上显示。

2. 3. 4 心电界面程序的编译

心电界面程序首先是在PC 机上编写的,为了能够在目标平台上运行,必须先进行交叉编译,编译

如下:

#arm-linux-gcc -I /home /include -L/home /lib-O2 -oxindian xindian.c -lminigui -lmgext -lm -ljpeg-lpthread-lpng

这时生成心电界面程序的可执行文件,将其下载到目标平台中即可运行。

3 结束语

本文研制的心电监护仪采用高性能的ARM9 微处理器为核心,在其上移植Linux 操作系统,并用  MiniGUI 进行心电界面开发,能够对心电信号进行采集、波形显示及处理,实现心电信号的实时监护的目的。该心电监护仪结合了目前现有的心电监护仪的优点,体积小、重量轻,并且具有操作界面简洁、可扩展性强等优点,对各种心率失常及各种心脏病变有较高的诊断价值。

分享到:QQ空间新浪微博腾讯微博人人网微信

欢迎分享本文,转载请保留出处:http://www.eechina.com/thread-156056-1-1.html     【打印本页】

监护仪系统都是Linux吗,基于Linux和MiniGUI的心电监护仪设计相关推荐

  1. 监护仪系统都是Linux吗,基于Linux和MiniGUI的心电监护仪设计-嵌入式系统-与非网...

    0 引言 随着人们生活节奏加快,人口逐渐老龄化,心脏疾病成为危害人类健康和生命的主要疾病之一.心电监护系统为心脏病人诊断和治疗提供了一个有效的手段,对心脏疾病的防治和诊断具有重大的意义,本介绍一种基于 ...

  2. 监护仪系统都是Linux吗,基于Linux和MiniGUI的心电监护仪设计 (1)

    0 引言 随着人们生活节奏加快,人口逐渐老龄化,心脏疾病成为危害人类健康和生命的主要疾病之一.心电监护系统为心脏病人诊断和治疗提供了一个有效的手段,对心脏疾病的防治和诊断具有重大的意义,本介绍一种基于 ...

  3. 华为自研系统鸿蒙为什么也要基于linux来开发?

    众所周知,目前国内已有众多的国产系统,基本上均源自linux,以linux为基础进行二次开发.比如红旗linux.深度等等. 但不知道为什么,一说起某系统是基于linux而来,很多网友就瞧不起,并且会 ...

  4. 音影系统linux,搭建基于linux桌面环境的影音平台_linux教程

    视频.音频的处理加工一直是计算机在多媒体方面的重要应用,传统上是 Unix 工作站的天下.由于 Linux 是 Unix 操作系统的变体,从某种程度上说,它天生适用于图形市场.目前已有一大部分市场被 ...

  5. 应用linux系统的机器人,一种基于linux的机器人系统及方法与流程

    技术特征: 1.一种基于linux的ros+android+移动底盘rtos深度融合的机器人系统,其特征在于,包括器人主板.移动底盘以及云端,所述机器人主板为linux系统.ros系统以及androi ...

  6. linux电子相册,基于Linux电子相册的.doc

    基于Linux电子相册的 本科毕业论文(设计) 题目: 基的 基于的设计与实现 摘要:Linux操作系统,设计制作出了这款电子相册.本系统以C语言知识为主,并结合QT和C++面向对象的思想,运用Uni ...

  7. 基于LINUX数控系统,基于Linux+RT—Linux的数控系统研究

    第 21卷第4期 2007年 12月 河 海 大 学 常 州 分 校 学 报 J0URNAL OF HOHAI UNIVERSITY CHANGZHOU Vo1.21 No.4 Dec.2007 文章 ...

  8. linux ultraiso_基于Linux的定制系统——Zorin OS评测:能否取代即将衰亡的Win7?

    随着Windows 7即将在2020年1月15日失去扩展支持,很多不愿意换新电脑的用户都慌了神,因为这之后,普通用户的Win7将不会收到更多的安全补丁.先不谈某公司会不会像当年一样推出"Wi ...

  9. linux系统连接校园无线网络,基于Linux环境下校园无线网络安全平台的设计与实现...

    摘要: 无线网络具有灵活性和移动性,安装便捷,联网成本低,可以随时随地上网.校园网无线功能可以提供日常互联网连接外,还能够将校内的精品课资源,网络电子学习资源,OA系统的使用等都转移到移动设备上实现. ...

最新文章

  1. 在疯狂的前端世界,为什么选择学习React
  2. Android系统源码编译最重要的一步
  3. sql service 从创建访问用户到数据库访问 【SQL】
  4. poj 3254 Corn Fields 状态压缩dp
  5. 叠加原理 戴维南定理
  6. nao机器人行走速度_震撼!寒冬腊月里惊现多台历途外墙清洗机器人
  7. 服务器远程重新做系统吗,服务器远程做系统安装系统
  8. android 资源如何下沉,关于Android业务模块下沉的一些实践及总结
  9. mysql 刷新二进制日志_使用binlog日志恢复MySQL数据库删除数据的方法
  10. Web前端工程师,互联网行业,炙手可热的翘楚!
  11. Java并发编程之安全发布对象的四种方法
  12. Jni调用so动态库
  13. Mysql分区表概述、分区类型、分区管理
  14. 用 SLF4j/ Logback打印日志
  15. 百数智慧社区细分领域合作案例展示
  16. NLP | 深入浅出word2vec
  17. 89C51数码管循环显示数字0~15
  18. Prescan测试场景和工况的建模方法,导入功能
  19. maven 项目运行找不到类
  20. 2021福建省安全员官方 单选题题库及答案

热门文章

  1. ABAP程序打印Spool Request到PDF
  2. SAP标准成本核算重要环节详解
  3. SAP登陆界面TITLE修改方法(Method of SAP Logon GUI Title Modification)
  4. 如何让报表告别繁琐?简单操作实现报表联动!
  5. 最具中产气质的“网易考拉”,离“中国版Costco”还有多远?
  6. linux常用ogg脚本,ogg基本监控脚本
  7. java使用druid maven_SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置...
  8. Python中self的用法
  9. Python文件操作中进行字符串替换(保存到新文件/当前文件)
  10. python-封装方法用于读取excel