终端主程序流程 图如图8.2所示: 硕士学位论文 图8—2系统主程序流程图 Fig 8-2 main application of system 信号和槽机制是QT编程的基础,当信号函数发射后会自动调用对应的槽函 数执行所需操作,即通过信号插槽机制完成各个类信息的交换从而实现图形用 户界面上各个按键、菜单等的具体功能。连接的com!ect()语句为如下形式: connect(sender,SIGNAL(signal),receiver, SLOT(slot)); 这里的sender和receiver为指向QO场ect的指针,signal和slot为不带参数的函数 名,实际中,I扫SIGNALO宏和SLOTO宏将它们的参数转换成相应的字符串。 第八章系统应用程序开发 8.3.1信号采集、显示和存储 终端从数据采集模块采集到的数据,经过ADC驱动,通过用户应用程序进 行采集、在LCD上的动态显示和数据在SD卡上的存储。在ECG and GPRS类中 通过paintEvent事件完成信号波形显示窗口坐标系及心电波形的绘制;dectect0 从设备文件adc中读取心电数据通过QFile类对象进行存储为后续异常检测做准 备。在QT中读取AD转换器采集到的数据主要有两种方法,一种是多线程读取, 另一种是采用定时器中断读取。在此采用设置定时器获取AD转换的数据。 8.3.2数据压缩 本文未对算法进行改进处理,仅将windows下算法的C语言程序进行移植, 达到终端上心电数据压缩的目的。研究表明,基于SPECK的算法获得的压缩比 要略高于基于EZW或SPIHT的算法;但在有损压缩中,基于SPECK的ECG压 缩其重构信号的质量与EZW接近,但随着压缩比的增加明显低于SPIHT算法 的质量。因此根据需要分别试用三种算法,实际应用应从实时性、信号质量和 编码可伸缩性考虑选择好合适的ECG数据压缩算法。 8.3.3数据无线传输 数据处理完成后,即可通过系统编程开启串口并设置好串口波特率、奇偶校 验、数据位等参数,建立GPRS网络无线传输环境并通过应用程序实现数据传输。 终端应用程序中各个类之间的信号/槽连接情况如图8.3所示。 硕士学位论文 ECG_and』PRS ●■ Send0 Detection Connected Abnormal 0 _●一 、—, 0 L readReady 0 Timeout 0 clicked0 detect0 connectToServer 0 sendRequest 0 Readfromserver O 图8-3终端应用程序中各个类之间的信号/槽连接情况 Fig 8-3 signal/slot connection ofclasses in application 在此采用TCP协议进行数据交换。QT中由QTcpSocket类和QTcpServer类 ^t, 分别构建TCP通信的客户端和服务器端。其中,需要传输的数据封装在 sendRequestO中完成,再通过tcpSocket.wTite(block)向服务器发送这个数据块最 矗j, 终完成数据由系统到网络数据中心之间的无线传输。系统检测到异常则触发 sendO信号连接服务器端并发送检测结果及心电数据;由readReadyO信号触发 readf.romserve哟实现对远端医生或监护中心发送过来信息的读取。 终端还实现了电话和短信联系的功能,所以操作均可在应用程序界面中完 Ⅺ 。… 成。应用程序中先通过QT Designer设计好数字、字母、符号等通信中需用到的 按键内容,由应用程序解析创建的按钮上显示信息获取到电话号码和短信的内 容,然后通过往串口写入控制的AT指令完成短信和电话的相关功能。 服务器端应用功能由3个类实现,其中,ClientSocket继承自QTcpSocket, 实现一个TCP套接字;DoctorServer继承自QTepServer,实现一个TCP协议的 服务器;Server是一个QDialog,负责服务器端的对话框显示与控制。各个类之 间的信号/槽连接情况如图8.4所示。 6l 第八章系统应用程序开发 DoctorServer readReady Server 0 updateCl i ent(double) readCl ient updateServer(double) updateClient(double) updateServer(double) 0 图8—4服务器端的各个类之间的信号/槽连接情况 Fig 8-4 signal/slot connec'tion of classes in∞rycr 其中,ClientSocket类中的readyReadO信号触发readClientO槽实现数据的接 收和显示。各个类之间由updateClient(double)触发updateServer(double)将获得的 心电数据传输到Server类中以便显示波形。 8.3.4应用程序移植 将程序所有源码放置在同一目录下,客户端程序在宿主机上采用交叉编译 后的qmake工具生成所需的.pro文件和Makefile,make生成可执行文件,并制 作.desktop文件和icon,将可执行文件、.deslaop文件、icon文件放置到开发板 文件系统中。 8.3.5运行测试 客户端在开发板上用命令pppd call gprs建立网络连接,先打开服务器端再运 行客户端应用程序。实验主要做了三方面的测试:一、传输速率测试;二、获 取的心电波形显示效果;移动通信。如图8.5、8.7、8.8所示,系统实现了基本 的短信通信。实验实时采集到的心电信号无异常情况出现,在此通过Labview 编程输出心电信号接入并触发数据发送。图8.5为终端的波形显示界面。 硕士学位论文 图8-5终端波形显示界面 Fig 8-5 waveform display of terminal 实验表明传送的心电数据能够由接收端接收并显示,传输距离可达到GPRS网络 覆盖的所有地方,确实能实现“永远在线”,一旦建立GPRS连接,就可以随时发 送数据,不需再拨号。但是由于借助GPRS移动通讯网络,因网络的复杂性及用 户数量影响,用户较多时会出现心电波形时断时续的现象,我们添加了数据存 储模块因而不会造成心电数据的丢失。理论上GPRS网络的传输速度可达 171.2kb/s,但是实际上的传输速率远达不到。检测几个不同时间段的下载速度大 概为4.6KB/s一'7.2KB/s,即传输速率大约在36一'56kbps之间,基本满足生理数 据的传送速度要求。经测试发现,传输过程中采用UDP协议进行数据传输出现 包丢失的概率较大,获取的心电波形失真较严重,最后系统选择采用TCP协议进 行数据传输以保证准确性。 第九章总结与展望 第九章总结与展望 9.1总结 移动医疗应用标志着电子化医疗系统开始从传统的桌面远程医疗平台向无 线移动医疗平台转变。本文结合ARM9嵌入式开发平台与GPRS技术设计实现了 一个移动医疗系统终端,其体积小、功耗低,硬件上采用了高性能的ARM9 ￥3C2410微处理器,其强大的数据处理能力为后续的数据处理提高效率提供了保 障;构建了ARM.Linux+Qt平台,稳定性好,功能强大,并可进行功能扩展; Labview编程实现的模拟心电信号发生器易于扩展,方便进行多生理参数的测 试;设计的存储模块可实现较长时间的现场数据存储;采用合适的ECG信号压 缩算法,有效降低了数据存储空间,也提高了无线传输效率;利用GPRS网络可 方便地实现病患与医院监护中心或医生之间生理数据无线传输,提高医生的诊 断效率。 9.2展望 未来移动医疗系统和服务将呈快速发展的态势,提供更为方便多样的医疗 保健服务具有重要意义。同时,用更好的无线通信技术及网络技术的应用也将 移动医疗终端较好地高度共享医院原有的信息系统,并使系统更具移动性和灵 活性,有助于简化工作流程,提高整体工作效率,更重要的是它能有效减少医 疗差错。通过嵌入式技术的应用提高移动医疗设备的性能,其开发结果可作为 专门的医疗个人数字助理(PDA)产品的一部分。 由于进度问题,系统并没有实现将获取的ECG数据与标准ECG数据库数据进 行比较检测异常,需要后续改进实现。传输过程中若数据包比较小即使在传输 速率低下时也基本不会有错误产生,而一次传输数据量较大时,易造成数据包 硕士学位论文 丢失。因此,可迸一步优化数据压缩算法提高传输速度的同时亦可减少误码率。 但是应用程序实现中还有一些不完善的地方,导致压缩效果并不是太好,这也 有待进一步改进。 最后,由于基础设施规划和发展,电信条例,偿还,许可证和认证,医疗 事故赔偿责任,保密等问题移动医疗发展受到一定的制约,希望政策发展能为 移动医疗提供更好的应用测试平台,若障碍得以清除,那么移动医疗将实现“普 及卫生保健"的模式,实现世卫组织的“人人享有卫生保健"目标。 参考文献 参考文献 【1】http://www.tech-ex.corrdequipmenffmedical/news/00364102.html 【2】P.Salditt.Trends in medicM device design and manufacturing.Journal of SMT, 2004,17(3):19—24. 【3】鲍淑娣,张元亭.远程医疗穿戴式生物医疗仪器阴.中国医疗器械信 息,2004,10(5):1-3. 【4】滕晓菲,张元亭.移动医疗:穿戴式医疗仪器的发展趋势叨.中国医疗器械杂 志,2006,30(5). 【5】R S.H.Istepanian,E.Jovanov,and Y T.Zhang.Inlroduction to the special on section m-Health:beyond seamless mobility and global wireless healthcare Technologies in Biomedicine, connectivity【J】.IEEE Tram,on Information 2004,8(4):405-4 1 4. 【6】http://www.ocn.corn.cn/reports/2006 1 8 1yiliaoqixie.htm 【7】刘杰.移动医疗“潜伏105亿元”.访摩托罗拉解决方案业务全球医疗行业总监 Robert[J].中国医院院长,2010,12:78.79. 【8】林敏,乔自知.移动医疗的需求与发展思考【J】.移动通信,2010,6:31—35. 【9】樊娟.移动医疗:一场新变革叨.中国卫生产业,2008,5(4):83.87. 【10】尹占芳,吕文红,郭银景等.基于CDMA的移动医疗系统的研制川.医疗设备 信息,2002,6:4.7. 【1 1]National Library of Medicine.Mobile Telemedicine Testbed[R].Health Applications for the National Information Infrastructure,1 998,8. 【12]S.Pavlopoulos,E.Kyriacou,八Berler TELEMEDICINE SYSTEM BASED ON et a1.A NOVEL EMERGENCY WIRELESS COMMUNICATION Transactions on TECHNOLOGY-"AMBULANCE”阴.IEEE Information 硕士学位论文 Technology in Biomedicine,1 998,2(4):26 1—267. 【13]Q J.Mandellos,D.K.Lymperopoulos,M.N.Koukias Telemedicine System for Ambulance et a1.A Novel Mobile Evaluation. Transport【C】.Design and Proceedings of the 26th Annual International Conference of the IEEE EMBS San Francisco,CA,USA?September 1-5,2004. Telemedicine System for Home Care and of the 26th Annual International 1-5,2004. 【14]M.V M.Figueredo,J.S.Dias.Mobile Patient Monitoring【C】.Proceedings Conference of the IEEE EMBS San Francisco,CA USA?September 【15]Omneya Issa,Jean-Charles Gregoire.A Service Admission Scheme for Cellular Computer Engineering,2006. Kaschwig et Networks[J1.Electrical and [1 6]Frank Steuer,Thomas Geithner,Thomas a1.A Connectivity Heterogeneous Management System for Vehicular Telemedicine Applications in Networks【J】.1 st Workshop Experiences on On Experimental Evaluation and Deployment Vehicular networks,2008. Park et a1.A mobile telemedicine system 【1 7]Dong-Keun飚In,Sun K Yoo,In?Cheol for remote consultation in cases of acute stroke阴.Journal of Telemedicine and Telecare,2009,1 5:1 02-1 07. 【1 8]Etmhoe Kim Jaeyoung Choi.A Context Management System for Supporting Context-Aware Applications阴.Embedded and Ubiquitous Computing,2008. 【1 9]SungI-Iye Hong,SangYong Kim,Jungchae Kim et a1.Portable emergency telemedicine system OVer wireless International broadband and 3G networks[J].3 1 st Annual Conference of the IEEE EMBS,Minneapolis,2009. [20]Eric Page,Serge Cazeau,Philippe Ritter.ahysiological approach to monitor in congestive heart failure:application of a patients new implantable device-based system to monitor daily life activity and ventilation阴.The 参考文献 European Society of Cardiology,2007. 【2 1]Asadullah Shaikh,Muniba Memon,Nasrullah Memon Oriented Architecture in Telemedicine Healthcare Conference on et a1.The Role of Service System【C】.International Complex,Intelligent and Sol,rare Intensive Systems,2009. Embedded System and and Rfid [22]s.Srinivasan,Dr.H.Ranganathan,S.Vani.An Solution For Transport Related Issues【C】.Computer Automation Engineering(ICCAE),20 1 0. 【23]徐马陵.无线让医疗移动起来IN].每周电脑报,2006,8. 【24]Xiumin Shi,Bida Wang,Pan Pan.A CDMA—based Mobile Embedded on Telemedical System for Healthcare川.IEEE/ICME International Conference Complex Medical Engineering,2007. 【25]Chin-Feng Lin,Shih-Ii Hung,Kuo—Tseng Chang.An 802.1 1n/Satellite 2一in-1 OFDM—based Transport Global Architecture for Seamless Mobile Telemedicine[J]. Mobile Congress,2009:1?6. 【26]周笑,李明,卜佳俊,杨智.移动远程医疗监护系统的设计与实现叨.计算机工 程,2010,10:251-253. [27]Fei Hu,Yu Wang,Hongyi Wu.Mobile Query and Telemedicine Sensor Lifetime Networks晰nl Low-Energy Data Network Considerations阴.IEEE TR ANSACTIONS ON MOBILE COMPUTING,2006,5(4): Lee;Yiu-Tong on [28]Ching?-Sung Wang;Jung?-Hunag Application and Technologies Engineering,2007. Chu.Mobile Telemedicine Biomedical GSM阴.Bioinformatics and 【29]Tepci Tang,Jeng Ku.Mobile Mobile Care Telemedicine Based on Medical Grid and and Mobile Network叨.Wireless Communications,Networking Computing,2007. 硕士学位论文 【30】张红霞.嵌入式MES数据采集及传输终端的设计与实现【D】.上海交通大 学,2008. 【31]马勇.嵌入式系统在医疗监护领域的应用[D】.吉林大学,2006. 【32]:E彩峰,刘知贵,彭桂力.基于蓝牙技术的移动医疗监护系统研究川.视频技 术应用与工程,2007,5(3):91.92. 【33]Hermann Strass.Embedded medical and biological applications[J】.Embedded Computing Design,2006,6. 【3413乏1J[]伟,刘长兴.移动医疗系统临床应用的必要性川.实用医学杂志,2010,2: 182.183. 【35]EL-ARM-830型教学实验系统手册【M】.北京精仪达盛科技有限公司,2005. 【36】陈艳.引导加载程序vivi的分析和移植研究阴.电子设计应用,2006,11 112.114. I,. 【37]杜文军,侯立刚,王艳梅.基于ARM的Linux移植分析与实现四.辽宁石油化工 大学学报,2009,29(2):56.59. 【38】邵华枫,黎静,黄勇.Vivi在便携式心电监护系统设计中的应用【J】.现代电子技 术,2010,15:146.148. “ 【39】阙大顺,杜玮,岳鹏.Ⅵ、,i在S3C2410上的移植研究阴.武汉理工大学学 报,2007,29(12):47—50. 【40】刘广亮.VⅣI在S3C2410开发板上的启动分析阴.内肛科技,2007,8:121、 157. 【41】刘洪广,叶明,孟明.ⅥVI的USB传输功能扩展闭.机电工程,2007,24(9): 11-13. 【42】梁风梅,曲振华.基于VⅣI的嵌入式便携播放器设计与实现川.电脑开发与 应用,2009,22(7):3 1.32、75. 【43】刘庆敏,田岚,何国圆等.智能化GPRS DTU的嵌入式混合文件系统[J】.计算 参考文献 机工程,2009,35(12):256.258. 【44]于明,曾祥烨.ARM9嵌入式系统设计与实例开发教程【M】.北京:电子工业出 版社,2006. 【45]朱珍民,段斌.嵌入式实时操作系统及其应用开发嗍.北京:北京邮电大学 出版社,2006. 【46】王磊,陶梅.精通LabVIEW 8.x【M】.电子工业出版社,2008. [471王成,崔茂龙,张颖.基于Labview7的生理信号检测实验平台的设计【J】.实验 室研究与探索,2005,24(6):27.29、53. 【48】戴红娅,董洁,辜承慰等.基于LabVIEW的听诱发反应多功能声刺激器川.医 疗卫生装备,2010,31(9):13.17. 【49]马草原,郭双强,李国欣.基于LABVIEW的串口调试与数据分析【J】.工矿自 动化,2005,4:74.76. [50]文U彬,许金林,王泽林等.基于labview的虚拟多功能信号发生器的实现阴.科技 博览,2009,02:182—183. 【51]三E兴元,孟娟.基于小波变换和矢量量化的二维ECG数据压缩算法【J】.中国 生物医学工程学报,2007,26(3):336—341. 【52]q:兴元.复杂非线性系统中的混沌[M】.北京:电子IqVtB版社,2003:114— 150. 【53]T培康,沈凤麟.用DCT压缩ECG数据的新方法唧.中国生物医学工程学 报,1995,14(4):332-338. 【54]赵安,宝明,卓豫.基于整数小波变换和嵌入式编码的ECG信号压缩川.北京 生物医学工程,2006,25(6):606-610. 【55】廖嘉,周兴斌.基于ARM9的嵌入式GPRS的设计与实现【J】.计算机与现 代化,2009,2:129—131 【56]韦东山.嵌入式Linux应用开发完全手册【M】.北京,人民邮电出版社,2008 硕士学位论文 【57]陈勇,田江明.Qt4在嵌入式Linux系统下的移植研究阴.科技信息,2010,31: 421、423 【58]张方辉,王建群.Qt/Embedded在嵌入式Linux上的移植叨.2006,16(7): 64.66 7I 攻读学位期间成果 攻读学位期间成果 【l】苏秋玲,李伟鹏.智能GPRS终端嵌入式系统构建叨.医疗卫生装备,2011, 2: 17.20. 【2】陈姿羽,李伟鹏,苏秋玲.移动医疗系统的Bootloader设计与实现【J】.科学 技术与工程,2011 硕士学位论文 附录 s3c2410 adc.c #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include¨s3c24xx.adc.h¨ #undef DEBUG //#define DEBUG 群ifdef DEBUG #define #else DPRINTK(x…){printk(__FUNCTlolN—_t’(%d):¨L-Ln蛆);研圳耐圾);) 附录 #define #endif DPRlNTK(x…)(void)(0) 糊efie DEVICE NAME¨adc¨ static void—iomem}base_addr; typedef struct{ wait_queue_head_t wait; int channel; int prescale; }ADC_DEV; DECLARE_MUTEX(ADC_LOCK); static int OwnADC=0; static ADC—.DEV adcdev; static volatile int ev_adc=0; static hat adc_data; static struct clk?adc_clock; #define ADCCON (?(volatile ||氏DC control unsigned long?)(base addr+ S3C24 1 0 ADCCON)) #defie #define S3C24 1 0 ADCTSC (*(volatile .1|KbC touch screen unsigned S3C24 1 0 ADCTSC)) ADCDIjy control (?(volatile unsigned ADCDLY)) ADCDAT0 IIADC start or b_terval Delay #define (*(volatile .|l KQC unsigned S3C241 0 ADCDAT0)) conversion data 0 硕士学位论文 #define ADCDATI(*(volatile unsigned long?)(base__addr+ S3C2410_ADCDATl))//ADC #define ADCUPDN conversion data 1 (木(volatile unsigned long?)goase_addr+0x14)) //Stylus Up/Down interrupt status #def'me PRESCALE DIS #define PRESCALE EN #define PRSCVL(x) #define ADC (O“14) (1《14) ((x)《6) ((X)“3) (1《0) (1《15) NPUT(x) #deljine ADC S11ART #define ADC ENDCVT #define START_ADC_AIN(ch,prescale)\ do{| ADCCON=PRESCALE—EN ADCCON I PRSCVL(prescale)I ADC INPUT((ch));、 I=ADC_START;\ }while(0) static irqretum_t adcdone int—handler(int irq,void?dev id) < if(OwnADC){ Mc—data=ADCDAT0&Ox3ff; ev—ado=l; wake_up_interruptible(&,adcdev.wait); 75 附录 static ssize—t s3c2410__adc._read(struct file幸flip,char?buffer,size—t count,loft—t ?ppos) { char str[20]; int value; size——t len; if(down trylock(&ADC-LOCK)一0){ OwnADC=l; START_ADC_AIN(adcdev.channel,adcdev.prescale); wait_event._interruptible(adcdev.wait,evadc); DPRINTK(”AIN[%d】=0x%04x,%dXa¨,adcdev.channel,ade_data, ADCCON&Ox80 7 1:O); value=Me_data; sprintf(str,¨%5d”,Me data); copy_to_user(buffer,(char?)&ado_data,sizeof(ade_data)); 0wnADC=0; up(&ADC.-LOCK); >else{ value=-1; ) len=sprintf(str,”%dkn”,value); if(count>_len){ int r=copy_to_user(buffer,str,len); 76 硕士学位论文 return r?r:len; >else{ return—EINVAL; > static int s3c2410_adc_open(struct inode?inode,struct file?flip) { init_waitqueue_head(&(adcdev.wait)); adcdev.channel=O; adcdev.prescale=Oxff; DPRINTK(”adc opened\n”); return 0; static int s3c2410_adc_release(struct inode?inode,struct file幸filp) { DPRINTK(”adc closed\n”); return O; > static struct file_operations owner"THIS open: devfops 2{ MODULE, s3c24 1 0_adc_open, s3c2410 adc read. read: release:s3c24 1 0 adc release, }; 附录 static struct miscdevice misc={ .minor=MISC_DYNAMIC_MINOR, .nflme=DEVICE_NAME, .fops=&dev_fops, ); static int....—.init dev_init(void) { intret; base_addr=ioremap(S3C2410 PA ADC,Ox20); if(base_addr—NULL){ printk(KERN_ERR”Failed return-ENOMEM; to remap register blockkn”); } adc_clock=clk__get(NULL,”adc¨); if(!adc__clock){ printk(KERN_ERR”failed to retum-ENOENT; get adc clock source、:n”); > clk_enable(adc_clock); 卜normal臌一l ADCTSC=0; ret = request_irq(IRQ_ADC, adcdone—int—handler, IRQF_SHARED, DEVICE_NAME,&zdcdev); if(ret){ 硕士学位论文 iounmap(base_addr); rcturll ret; , > ret=misc_register(&misc); printk(DEVICE_NAME”\tinitializedkn¨); returil ret; static void....——exit dev_exl't(void) { free_irq(IRQ_ADC,&adcdev); iounmap(base_addr); if(adc_clock){ clk_disable(adc_clock); clk_put(adc_clock); adc—clock=NULL; } EXPORT_SYMBOL(ADC_LOCK); module_init(dev_init); module.exit(dev_exiO; 致谢 致谢 移动医疗系统的实现,是我在学习了嵌入式系统设计技术基础、移动通信 基础、linux操作系统与锄架构芯片知识后结合医疗需求完成的课题。在这个 过程中,首先要感谢我的导师李伟鹏教授,他提供了充裕的仪器设备和舒适的 实验环境,使我能专注于课题的实现;他让我参与嵌入式系统实验的带教,使 我较快地熟悉了实验操作,掌握了嵌入式开发流程;他尽力解答我在课题进行 中的疑惑,让我受益匪浅。感谢系里老师给予的帮助,感谢实验室师兄师弟, 与他们的交流让我对嵌入式开发有更深入的了解。