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 采用ViVi,文件系统采用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 进行心电界面开发,能够对心电信号进行采集、波形显示及处理,实现心电信号的实时监护的目的。该心电监护仪结合了目前现有的心电监护仪的优点,体积小、重量轻,并且具有操作界面简洁、可扩展性强等优点,对各种心率失常及各种心脏病变有较高的诊断价值。

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

  1. 嵌入式系统开发设计---嵌入式系统开发设计

    嵌入式系统设计的主要任务是定义系统的功能.决定系统的架构,并将功能映射到系统实现架构上.这里,系统架构既包括软件系统架构也包括硬件系统架构.一种架构可以映射到各种不同的物理实现,每种实现表示不同的取舍 ...

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

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

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

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

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

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

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

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

  6. arm linux sms,基于arm处理器的手机短消息加密系统 encryption system for sms based on arm.pdf...

    基于arm处理器的手机短消息加密系统 encryption system for sms based on arm 第 22卷 第 期 电子测量与仪器学报 Vol.22 No.2 2 4 - - 20 ...

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

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

  8. 嵌入式linux开发环境 cpu,嵌入式Linux开发环境的搭建之:U-Boot移植-嵌入式系统-与非网...

    5.2  U-Boot移植 5.2.1  Bootloader介绍 1.概念 简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序.通过这段程序,可以 ...

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

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

最新文章

  1. android camera工程师,浅析Android Camera架构
  2. MySQL数据库优化技巧大全
  3. Java判断文件是否为图片文件(GIF,PNG,JPG)
  4. vue改变页面顶部浏览器标题栏图标
  5. 【腾许Bugly干货分享】“HTTPS”安全在哪里?
  6. gulp基础使用方法记录
  7. 周末直播丨细致入微 - OEM Grid Control 配置部署与使用
  8. java restful项目打包_构建入门Restful Web服务
  9. Android Studio如何查找和替换
  10. Spring-外部配置的值是如何通过@Value注解获取的?
  11. 西门子STEP7、博图里的数据块(DB)编址规则
  12. 维修iphone6无服务器,苹果6通病——插卡无服务维修思路和教程
  13. Keil5安装教程(包含C51与MDK共存)WIN10 亲测可用
  14. 阿里云服务器可选系统有哪些?如何选择?
  15. 计算机没有安装cad2006,win7系统不能正常安装cad2006的解决方法
  16. python实现怼人小程序
  17. alpha测试什么意思,和Beta测试有何区别?
  18. 合肥工业大学计算机与信息学院导师介绍,合肥工业大学计算机与信息学院导师介绍:方宝富...
  19. sql/oracle数据库之取整函数round()、ceil()、floor()等等及示例
  20. 关于两个周期函数的和的周期性的讨论

热门文章

  1. 信噪比如何计算?如何产生固定信噪比的带噪信号?
  2. Centos7 更换yum软件源
  3. CFAIyolo5自瞄源码分享
  4. Latex 小于等于,大于等于,不等于
  5. 2022安全员-C证操作证考试题库及在线模拟考试
  6. 2022水利水电安全员考试单选题库预测分享
  7. php反弹教程,详解NC反弹shell的几种方法
  8. 184644-83-5,MTSES用于研究蛋白质上的半胱氨酸残基
  9. Uninformed Students: Student-Teacher Anomaly Detection with Discriminative Latent Embeddings论文复现及解析
  10. 【P1379】 八数码难题