Page 119 - 201909数码世界9.9
P. 119
科技交流
2.2 双缓冲技术绘制心电波形 系统人机界面包括文件、实时回放、波形检索、 I/O 输出、帮
双缓冲技术是 GUI 编程中常用的技术。所谓的双缓 助等菜单。
冲就是把需要绘制的控件保存到一个图像中, 然后在把 文件菜单用于管理心电数据,具有打开、关闭、另存为、
图像拷贝到需要绘制的控件上。从 Qt4 版本开始,所有 打印等子菜单,通过文件菜单可以选择心电数据文件,解析
的窗口部件默认都使用双缓冲进行绘图。使用双缓冲, 心电数据时遵循 hea 文件、dat 文件、atr 文件的顺序,因此
QWidget 能够自动处理闪烁 [6,7] 。首先要想把闪烁减弱 , 需要 对打开的文件做扩展名的筛选,选择对话框中只显示 hea 文
setBackgroundMode(NoBackground); 设置 widget 的背景模式 件,避免只选择了 dat 或者 atr 文件造成数据解析错误。实
为 NoBackground. 其次重载 widget 的 paintEvent() 函数 , 如 时回放菜单具有:D/A 回放、重新回放和回放暂停等子菜单。
下 : 在心电信号输出到心电监护设备时,可以通过实时回放来监
void MyWidget::paintEvent(QPaintEvent *e) { 测信号,与心电监护设备中的算法仿真结果进行比对校核。
QPainter painter(&pixmap); 波形检索菜单实现波形屏幕检索、数据保存和幅度改变。当
QPainter painterWidget(this); 打开一个心电信号后,即可通过检索菜单通过调用心电数据
//......//Drawing 在屏幕中静态绘制心电波形,可通过滑动条拖动显示不同时
painterWidget.drawPixmap(QPoint(0,0), pixmap); 间的数据。鼠标左键可取得数据的起点,右键取得数据的结
} 束点,通过起始和结束时间点截取心电数据中的片段数据用
本系统在心电波形实时回放模块中应用了 Qt 的双缓冲技 于重点研究。I/O 输出菜单实现向 D/A 转换板卡输出心电数据,
术,实现了无闪烁的波形回放,可以实时查看波形的动画情况。 经过转换后再输出到心电监护设备中,下设开始传送、暂停
2.3 多线程技术 传送和终止传送等子菜单。
作为基于 C++ 的跨平台 GUI 系统,Qt 提供了丰富的多线程
编程支持。主要从三个方面对多线程编程提供支持: 4 结论
一、构造了一些基本的与平台无关的线程类; 本文基于 Qt 类库 , 实现跨平台的 MIT-BIH 心电数 据管理
二、提交用户自定义事件的 Thread-safe 方式; 系统,实现了标准数据库文件的读取、检索、数据断面的截取
三、多种线程间同步机制,如信号量,互斥锁。Qt 中最重 保存。同时经过 D/A 转换后,心电数据作为信号源输出到心电
要的线程类是 QThread,要开始一个新的线程,需要重新实现 监护设备,用于计算机仿真和心电算法的验证,弥补了临床实
QThread::run(),如果两个线程同时希望访问同一个数据时, 验数据不足的缺陷,在医学研究中将有广阔的应用前景。
对数据进行保护是很必要的。QMutex 类提供了一个互斥锁,一
个线程锁定互斥量,并且在它锁定之后,其它线程就不能访问
锁定的数据,必须等到解锁后再访问。 本系统在作为信号源将
心电波形输出到心电监护设备,或者输出到心电算法仿真系统 参考文献
中时,需要实时监测心电波形,由此需要两个线程分别来实现 [1]TheMIT-BIHArrhythmiaDatabase.PhysioNet[Online].
波形输出和波形监测功能,并通过线程间通信实现输出的波形 Available:http://www.physionet.org/Physiobank/
和监测显示的波形同步。 database/mitdb/
[2]TheMIT-BIHSTChangeDatabase.PhysioNet[Online].
3 心电管理系统的实现 Available:http://www.physionet.org/Physiobank/
心电数据管理系统主要为心电监护设备提供信号输入,将 database/stdb/
心电信号输出到心电监护设备中用于算法仿真实验,并同时对 [3]TheMIT-BIHMalignantVentricularArrhythmiaDataba
心电信号进行动画回放显示,系统可以截取保存一段数据用于 se.PhysioNet[Online].Available:http://physionetcps.
针对性研究,可以对数据进行检索查看。系统主要包括软件平 unizares/physiobank/database/vfdb/
台设计和 PC 机与硬件的连接输出。根据各模块问相互独立、视 [4] 宋喜国 , 邓亲恺 .MIT-BIH 心率失常数据库的识读及应用
图数据相互分离的设计思想,将软件划分为以下几个部分:数 [J]. 中国医学物理学杂志 ,2004,21(4): 230-232.
据服务层、连接传输层和人机交互层。 [5] 阴玺 . 心电远程监护系统的数据库系统设计与数据压缩算
数据服务层为整个系统提供了数据操作的基础支持,从心 法研究 [D]. 重庆大学,2007,5-6.
电数据文件中识读心电数据,并调整格式,为其他模块提供基 [6] 蔡志明 , 李立夏 . 精通 Qt4 编程 [M]. 北京:电子工业出版社,
础数据,包括心电数据与硬件 IO 及人机视图之间的交互等;连 2008.
接传输层为外接的心电监护设备提供信号源输出,通过 D/A 转 [7] 贾仕俊 , 秦开宇 , 陈华伟 , 李志强 . 基于 QT 的数据图形化
换将心电数据库中的数字信号转为临床应用的模拟信号,应用 设计与分析 [J]. 软件导刊 2011(7).
与心电算法的仿真研究;人机交互层实现静态的心电波形检索, [8] 万长胜 . 用 Qt 进行面向对象软件的设计与开发 [J]. 核电
对波形进行整体浏览,实现特殊波形的截取和保存,同时实现 子学与探测技术,2004(3):311-313.
动态波形的回放,实时监测输出到心电监护设备中的波形状态。
122... ...123