基于Linux和MiniGUI的心电监护仪设计

发布者:pingbashou最新更新时间:2013-09-12 来源: eefocus关键字:ARM9  Linux  界面开发 手机看文章 扫描二维码
随时随地手机看文章

 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
} ;[page]

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

关键字:ARM9  Linux  界面开发 引用地址:基于Linux和MiniGUI的心电监护仪设计

上一篇:基于LPC2131嵌入式系统μCOS-II实现CAN通讯
下一篇:基于物联网的智能冰箱设计与实现

推荐阅读最新更新时间:2024-03-16 13:27

基于ARM9 AT91RM9200T的嵌入式网络接口
  1 引言   当今时代设备网络化是当今科技发展的趋势。如何使用嵌入式系统将设备的远程控制、数据的远程传输数据转发到网络上呢?嵌入式网关使用嵌入式Linux操作系统,数据存储芯片SDRAM、FLASH,网络控制芯片DM9161等,实现网络通讯的传输方案便是基于这种思想而设计的。   2 硬件设计   本系统采用ATMEL公司生产的微处理器AT91RM9200T 。其处理速度可达200MIPS,同时它也具有USB、Earthnet、支持RS485的红外串口、IIC、SPI、SSC等丰富的片内资源。网口控制芯片DM9161, SDRAM和Flash接口。系统的硬件结构框架如图1所示。 2.1 AT91RM9200T简介
[单片机]
基于<font color='red'>ARM9</font> AT91RM9200T的嵌入式网络接口
Linux 6.5内核增加对高通开源GPU Adreno 690的支持
即将推出的Linux 6.5内核将把对高通Adreno 690 GPU的支持添加到开源的MSM内核图形/显示驱动程序中。A690主要用于骁龙8cx第三代(SC8280XP)平台,而联想ThinkPad X13s笔记本电脑和其他硬件也采用了该平台。 MSM Adreno Direct Rendering Manager (DRM)驱动程序已经排队支持Adreno A690,包含近200行代码,超过了对现有Adreno 600系列硬件的支持。该支持是通过Linaro提供的。 本周,Adreno A690支持作为drm-msm-next的一部分被送入,DRM-next的MSM驱动变化将在即将到来的Linux 6.5内核合并窗口排
[嵌入式]
ARMv8 Linux内核源码分析:__flush_dcache_all()
1.1 /* * __flush_dcache_all() * Flush the wholeD-cache. * Corrupted registers: x0-x7, x9-x11 */ ENTRY(__flush_dcache_all) //保证之前的访存指令的顺序 dsb sy //读cache level id register mrs x0, clidr_el1 // read clidr //取bits (Level of Coherency for the cache hierarchy.) //需要遵循cache一致性的cac
[单片机]
ARMv8 <font color='red'>Linux</font>内核源码分析:__flush_dcache_all()
传Google智能手表已在开发界面会很像Google Glass
    虽然针对 Google 的智能手表还没有太多的细节透露出来,一份来自 AndroidAuthority 的报告声称有消息源透露了一些细节。根据这份没能提供多少答案的报道,Android 智能手表已经在柏林、曼彻斯特晃荡很久了,最近在山寨城也现身了,报道说这意味着“这款手表很快就会发售了”。 我们上次从分析家们那里得到的信息是说最早也要等到 2014 年这款手表才会发售,但是 AndroidAuthority 声称他们已经获得了设备的详细信息:不只是“功能上会很像 Google Glass,”报道还说 Google 的智能手表“不是一个独立的设备”并”需要连接到智能手机上”。 这份报告没提供什么非常可信的预期发布时间。报告
[手机便携]
linux 下arm汇编语法
第一部分 Linux下ARM汇编语法 尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。 一. Linux汇编行结构 任何汇编行都是如下结构: ]] 每一个段以段名为开始, 以下一个段名或者文件结尾为结束。这些段都有缺省的标志(flags),连接器可以识别这些标志。(与armasm中的AREA相同)。 下面是ELF格式允许的段标志 标志 含义 a 允许段 w 可写段 x 执行段 定义段
[单片机]
DSP/ARM双核系统的通信接口设计
  嵌入式系统的核心是嵌入式微处理器和嵌入式操作系统。早期的嵌入式系统硬件核心是各种类型的8位和16位单片机;而近年来32位处理器以其高性能、低价格,得到了广泛的应用。近年来,又出现了另一类数据密集处理型芯片DSP。DSP由于其特殊的结构、专门的硬件乘法器和特殊的指令,使其能快速地实现各种数字信号处理及满足各种高实时性要求。随着现代嵌入式系统的复杂度越来越高,操作系统已成为嵌入式系统不可缺少的部分。免费的嵌入式操作系统,如 Linux等,随着自身不断的改善,得到了飞速的发展。Linux是一个免费的、强大的、可信赖的、具有可伸缩性与扩充性的操作系统。Linux实现了许多现代化操作系统的理论,并且支持完整的硬件驱动程序、网络通信协议与多
[单片机]
DSP/ARM双核系统的通信接口设计
linux系统与51单片机实现串口数据交互
// 以下是 用于 linux IO INPUT AND OUT PUT 参考代码详细 参考一下网站 写得都很详细 其中函数代码和所遇问题测试摘自一下网站,感谢他们提供的函数资源 大家可以先去看看函数模型以及方法 个人觉得他们归纳的比较好 //http://www.cnblogs.com/meronzhang/archive/2012/11/24/2786165.html //http://www.cnblogs.com/meronzhang/archive/2012/11/24/2786166.html //http://www.doc88.com/p-9045754154843.html 以下是代码 其中,mian函数和5
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved