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
   114   115   116   117   118   119   120   121   122   123   124