医院病房语音呼叫系统设计与实现

医院病房语音呼叫系统设计与实现

ID:34901822

大小:5.81 MB

页数:96页

时间:2019-03-13

上传者:U-24835
医院病房语音呼叫系统设计与实现_第1页
医院病房语音呼叫系统设计与实现_第2页
医院病房语音呼叫系统设计与实现_第3页
医院病房语音呼叫系统设计与实现_第4页
医院病房语音呼叫系统设计与实现_第5页
资源描述:

《医院病房语音呼叫系统设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

-!V;為£1巧)ONECHNOLOFCHINAICSCIANDTOGYUNIVERSITYOFELECTRENCEi,专业学位硕±学位论文■MASTERESISFORPROFESSIONALDEGREETH!.施y.令哪夸¥论义题目医院病房语音呼叫系统设计与实现专业学位类别工程硕±学号201091040316、作者姓名魏莱指营教师徐军教援I 独创賊明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加W标注和致谢的地方外,也不包含,论文中不包含其他人已经发表或撰写过的研究成果为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示谢意。■作者签名:年:T月日:日期论文使用授权本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定,有权保留并向国家有关部口或化构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权电子科技大学可W将学位论文的全部或部分内容编入有关数据库进行检索、,可W采用影印缩印或扫描等复制手段保存、汇编学位论文。(保密的学位论文在解密后应遵守此规定)导师签名:巧作者签名:藏-L-、^年日期:於X月日 分类号密级注1UDC学位论文医院病房语音呼叫系统的设计与实现研究(题名和副题名)魏莱(作者姓名)指导教师徐军教授电子科技大学成都刘东高工民生银行成都分行成都(姓名、职称、单位名称)申请学位级别硕士专业学位类别工程硕士工程领域名称软件工程提交论文日期2015.3.15论文答辩日期2015.5.15学位授予单位和日期电子科技大学2015年6月22日答辩委员会主席评阅人注1:注明《国际十进分类法UDC》的类号。 DEVELOPMENTOFHOSPITALVOICECALLINGSYSTEMAMasterThesisSubmittedtoUniversityofElectronicScienceandTechnologyofChinaMajor:MasterofEngineeringAuthor:WeiLaiAdvisor:ProfessorXuJunSchool:SchoolofPhysicalElectronics 摘要摘要医院病房语音呼叫系统是医院现代化管理的重要工具和手段,对提高医疗质量、促进资源共享、提高医院竞争力等具有重要的意义。本文的课题来源于工作,作者目前的工作和医院接触非常多,在日常工作中发现目前医院使用的产品存在诸多需要改进的地方。现有的医院住院病房管理系统大多数采用的是本地化的管理需要人工的去病房巡视,观测病人状态,降低了工作的效率。随着人们对健康的日益关注,不断增加的医疗行为导致了医院现有系统性能逐渐下降,医院住院病房管理系统已经不能满足现在繁忙的业务系统。随着网络技术的发展人们越来越依靠网络技术给人们带来的便利,这也是本系统设计的大背景。本文首先分析了医院病房语言系统的发展现状,指出了先有呼叫系统存在的不足,分析了医院病房语音系统的业务需求。并根据医院的特殊的业务需求提出一套改进的病房语音呼叫系统解决方案。本系统方案分为嵌入式系统和上位机软件系统两部分,嵌入式系统硬件以STM32为控制核心完成按钮响应、语音采集与播放、网络接入等功能;嵌入式系统软件基于RT-Thread嵌入式实时操作系统开发,负责嵌入式系统硬件的驱动和管理。文章将上位机软件系统按照功能划分了四个主要业务功能模块和三个管理功能模块,并介绍了各个功能模块相关的典型业务。然后采用面向对象的程序设计技术对系统需求进行了抽象,完成了上位机软件的架构设计,最后使用VisualC#集成开发环境完成了系统的设计和实现。最后,论文对系统的软件安装、网络部署、参数配置进行了阐述,并对系统功能完整性、正确性和稳定性进行了测试,测试的结果表明相对可以很好地满足医院的语音呼叫的需求,大大提升了医院病房管理的效率。关键词:语音呼叫系统,嵌入式,上位机,数据库,TCP/IPI ABSTRACTABSTRACTHospitalvoicecallingsystemsareimportanttoolsandmeansofhospitalmanage-ment,toimprovemedicalqualitytopromoteresourcesharingandimprovingcompeti-tivenessisofgreatsignificance.Thesubjectofthisarticleisderivedfromtheauthor’scareer,theauthor’sdailyworkinvolvesverymuchcontactwithhospitals,andIfoundthathospitalscurrentlyuseproductsintheirdailywork,therearemanyareasthatneedimprovement.Existingmanagementsystemisusedinmosthospitalwardslocalizedmanagementneedtobeconstructedtowardvisits,observationpatients,reducingtheefficiencyofwork.Withthegrowinghealthconcerns,increasingmedicalpracticeleadstothedecreasehospitalsystemperformance,managementsystemcannolongermeetinhospitalwardsarenowbusybusinesssystems.WiththedevelopmentofnetworkpeopleincreasinglyrelyonInternettechnologybroughtconveniencetopeople,butalsothebackgroundofthesystemdesign.Thisthesisanalysesthedevelopmentstatusofthevoicecallingsystemofthehos-pitalward,notedthatshortcomingsofthecallingsystem,andaccordingtothespecificbusinessneedsofthehospitalwardofanimprovedvoicecallingsystemsolutions.Thisprogrammeisdividedintotwoparts:embeddedsystemsandPCsoftwaresystem,em-beddedsystemhardwaretoSTM32controlledFinishbuttonresponse,audiocaptureandplayback,Internetaccessandotherfeatures;RT-Threadbasedembeddedreal-timeop-eratingsystemforembeddedsystemssoftwaredevelopment,responsibleforembeddedsystemhardwaredriversandmanagement.PCsoftwareinaccordancewiththefunctionsofthesystemcanbedividedintofourmajorbusinessfunctionmodulesandthreemanagementmodules,anddescribesthevar-iousfunctionalmodulesoftypicalbusiness.Usingobject-orientedprogrammingtech-niquestoabstractthesystemrequirements,completePCsoftwarearchitecturedesign,finalintegrateddevelopmentenvironmentusingVisualC#completesystemdesignandimplementation.Finally,thesystemintroducesthesoftwareinstallation,deployment,configuration,andfunctionalintegrity,accuracyandstabilityofthesystemwastested,testresultsshowthattherelativecanmeetHospitaldemandforvoicecalls,greatlyen-hancetheefficiencyofmanagementofhospitalwards.III ABSTRACTKeywords:VoiceCallingSystem,EmbeddedSystem,Upper-sideMachine,Database,TCP/IPIV 目录目录第一章绪论..........................................................11.1研究背景......................................................11.2国内外发展现状................................................21.3研究内容和意义................................................41.4研究思路和方法................................................41.5本文的结构安排................................................5第二章语音呼叫系统的相关技术.......................................72.1嵌入式系统概述................................................72.1.1嵌入式系统的定义........................................72.1.2嵌入式系统的组成........................................82.1.3嵌入式系统的特点........................................82.2面向对象的程序设计技术.......................................92.2.1对象....................................................102.2.2组件....................................................102.2.3封装....................................................102.2.4消息传递................................................112.2.5OOP的主要特性..........................................112.3TCP/IP协议....................................................112.3.1TCP/IP协议的层次........................................122.3.2IP.......................................................122.3.3TCP.....................................................132.3.4UDP....................................................132.4数据库技术....................................................142.5本章小结......................................................14第三章系统硬件的设计与实现.........................................153.1系统硬件的总体方案设计.......................................153.2系统电源设计..................................................153.3微控制器最小系统设计.........................................153.3.1STM32嵌入式微控制器简介...............................153.3.2基于STM32的嵌入式最小系统.............................16V 目录3.4语音输入电路..................................................173.5语音输出电路..................................................183.6Wi-Fi模块电路.................................................183.7呼叫按钮与掉电管理电路.......................................183.8系统硬件的PCB版图............................................203.9本章小结......................................................20第四章系统软件的设计与实现.........................................214.1系统嵌入式软件的设计与实现...................................214.1.1RT-Thread嵌入式实时操作系统简介........................214.1.1.1内核对象系统......................................214.1.1.2任务/线程调度......................................224.1.1.3同步机制..........................................224.1.1.4通信机制..........................................234.1.1.5时钟/定时器........................................234.1.1.6内存管理..........................................234.1.1.7诊断...............................................234.1.2RT-Thread在STM32上的移植与配置........................234.1.3系统嵌入式软件的总体框架...............................244.1.4建立系统主要线程........................................254.1.4.1LED指示灯线程....................................254.1.4.2UDP通信线程......................................274.1.5按键中断服务程序........................................294.1.6语音输入驱动程序........................................314.1.7语音输出驱动程序........................................324.1.8Wi-Fi模块驱动程序.......................................334.2系统上位机软件的设计与实现...................................344.2.1开发工具简介............................................344.2.2系统软件的需求分析......................................354.2.2.1系统软件的功能性需求分析.........................354.2.2.2系统软件的安全性需求分析.........................354.2.2.3系统软件的实时性需求分析.........................364.2.3系统上位机软件的主要框架...............................364.2.4通信接口层..............................................374.2.4.1通信协议..........................................38VI 目录4.2.4.2程序设计..........................................384.2.5数据库管理层............................................404.2.5.1数据库的建立......................................404.2.5.2数据库的管理......................................424.2.6图形化用户界面..........................................464.2.6.1普通病房模块......................................474.2.6.2重症病房模块......................................474.2.6.3产房监护模块......................................484.2.6.4系统管理模块......................................484.2.6.5语音控制模块......................................494.2.6.6信息查询模块......................................494.3本章小结......................................................50第五章系统的部署与联合测试.........................................515.1系统软件安装..................................................515.2系统网络部署..................................................515.3设备参数配置..................................................515.4网络吞吐率测试................................................525.5系统联合测试..................................................545.6本章小结......................................................56第六章全文总结与展望................................................576.1本文的主要贡献................................................576.2存在的不足....................................................576.3展望..........................................................58致谢.................................................................59参考文献..............................................................60附录ART-Thread线程API相关源码.....................................63VII 缩略词表缩略词表缩略词英文全称中文全称ADCAnalog-to-DigitalConverter模数转换器AGCAutomaticGainControl自动增益控制BOMBillofMaterial物料清单DACDigital-AnalogConverter数模转换器DMADirectMemoryAccess直接存储访问DNSDomainNameSystem域名解析系统LNALowNoiseAmplifier低噪声放大器NRENon-RecurringEngineering一次性的开发NTPNetworkTimeProtocol网络时间协议OOPObjectOrientedProgramming面向对象的程序设计OSIOpenSystemInterconnect传统的开放式系统互连SDIOSecureDigitalInputandOutput安全数字输入输出TCP/IPTransmissionControlProto-传输控制协议/因特网互联协议col/InternetProtocolWi-FiWirelessFidelity一种基于802.11b标准的无线局域网传输协议IX 第一章绪论第一章绪论1.1研究背景随艹着计艹算机艹通讯艹技术艹的飞速发展,基于计算机技术和通信技术的新型病房呼叫系统应运而生,其应用可以更有效地帮助医护人员及时掌握患者的突发急危病情,尤其是无人陪护的急病患者的准确呼救信息,对迅速到达现场实施抢救提供了技术保障;同时它也是现代化医院护理,医院医疗管理体系的重要组成部分[1]。当艹前市艹场上艹存在艹着许艹多种艹型号艹不一艹功能艹各异艹的医艹院病艹房呼艹叫系艹统,艹主要艹为两艹大类艹:有艹线式艹和无艹线式。艹传艹统的艹有线艹式病艹房呼艹叫系艹统往艹往采艹用集艹中式艹结构,艹电艹源线、艹数艹据通艹信线、艹语艹音通艹信线艹分开艹传输,艹铺艹设线艹路较艹多、艹成本艹高、艹安装艹调试艹困难、艹实艹时性艹差、艹故障艹率较艹高等艹缺点艹;而艹无线艹式病艹房呼艹叫系艹统不艹存在艹铺设艹线路艹的问艹题,艹但是艹可靠艹性差,艹而艹且无艹线电艹波会艹干扰艹其它艹医疗艹仪器艹设备,艹目艹前大艹多数艹医院艹不采艹用此艹类无艹线呼艹叫系艹统。艹以此,艹本艹课题艹以研艹究并艹设计艹一种艹简单艹实用、艹安艹全可艹靠、艹性能艹稳定艹具有艹良好艹性价艹比的艹病房艹呼叫艹系统,艹对艹于我艹国基艹层医艹院的艹现代艹化建艹设有艹十分艹重要艹的意艹义。艹本课艹题的艹研究艹将以艹呼叫艹系统艹的稳艹定性、艹语艹音数艹据传艹递的艹准确艹性、艹设备艹的复[2]艹杂性艹等方艹面的艹问题艹作为艹主要艹研究艹内容。病房呼叫系统的发展大概可以分为3个阶段,即传统上的口头呼叫、摇铃呼叫和电子按铃呼叫3个阶段。相比而言,国外医院的呼叫系统发展比较迅速,现在己经渐渐出现了朝着护理系统的智能化和可视化发展,而我国的病房呼叫系统起步较晚,还处在电子按铃呼叫的初级阶段,与多年前相比变化不大。病艹床呼艹叫系艹统一艹般具艹有声艹光提艹示功艹能,艹有的艹系统艹有通艹话功艹能,艹使医艹护人艹员能艹够了艹解病艹人的艹医护艹请求。艹除艹人性艹化的艹辅助艹功能艹外,艹研究艹重点艹主要艹集中艹在主艹机与艹病房艹呼叫艹终端艹之间艹通信艹的安艹全性、艹可艹靠性、艹施艹工、艹系统艹构建、艹可艹扩展艹性等艹技术艹问题艹上进艹行研艹究。艹其通艹信方艹式可艹归纳艹为:艹有线艹通信艹和无艹线通艹信两艹种方艹式。有艹线通艹信医艹疗呼艹叫系艹统,艹主机艹与病艹房呼艹叫终艹端之艹间采艹用导艹线连艹接进艹行通艹信和艹供电。艹2艹0世艹纪8艹0年艹代初,艹医艹疗呼艹叫一艹般都艹采用艹内部艹电话艹来构艹成呼艹叫系艹统,艹技术艹成熟,艹这艹种方艹式优艹点是艹:可艹进行艹双向艹呼叫艹和通艹话功艹能。艹缺点艹是:艹每个艹病床艹需要艹连接艹一根艹电话艹线,艹布线艹施工艹麻烦,艹成艹本也艹高。艹随着艹总线艹通信艹技术艹的发艹展和艹单片艹机应艹用的艹普及,艹采艹用C艹AN艹总线、艹R艹S-艹48艹5总艹线、艹XY艹∙C艹N总艹线、艹二线艹制或艹四线艹制脉艹冲编艹码通艹信总艹线、艹电力艹载波艹等总艹线通艹信技艹术的艹医疗艹呼叫艹系统艹得到艹了广艹泛应艹用。艹无线艹通信艹医疗艹呼叫艹系统,艹主艹机与艹病房艹呼叫艹终端艹之间艹采用艹无线艹电波艹或红艹外光艹等无艹线通艹信手艹段进艹1 电子科技大学硕士学位论文行通艹信,艹呼叫艹终端艹一般艹采用艹电池艹供电。艹主艹机与艹病房艹呼叫艹终端艹之间艹不需艹要布艹线,艹具有艹安装艹施工艹简单,艹能艹满足艹移动艹呼叫艹的需艹求。随艹着我艹国医艹疗行艹业进艹入一艹个以艹服务艹为核艹心的艹新的艹发展艹周期,艹国艹内众艹多学艹者对艹于新艹型呼艹叫系艹统的艹设计艹与推艹广进艹行了艹广泛艹地研艹究。艹病床艹呼叫艹系统艹是病艹人请艹求值艹班医艹生或艹护士艹进行艹诊断艹或护艹理的艹紧急艹呼叫艹工具。艹可艹将病艹人的艹请求艹快速艹传送艹给值艹班医艹生或艹护士,艹是艹提高艹医院艹和病艹室护艹理水艹平的艹必备艹设备艹之一。艹如艹何利艹用先艹进的艹信息艹技术艹为医艹院服艹务,艹更大艹程度艹的提艹高医艹院的艹服务艹质量艹及利艹润,艹是医艹院信艹息化艹建设艹中的艹一个艹重要艹着眼艹点。艹随着艹现在艹计算艹机技艹术不艹断的艹发展,艹迫艹切的艹希望艹研发艹一套艹医院艹病房[3]艹呼叫艹系统,艹来艹应对艹病房艹病人的需求。1.2国内外发展现状国外医院的呼叫系统发展比较迅速,现在己经渐渐出现了朝着护理系统的智能化和可视化发展,而我国的病房呼叫系统起步较晚,还处在电子按铃呼叫的初级阶段,与多年前相比变化不大。国艹内的艹多位艹学者艹对医艹院病艹房呼艹叫系艹统都艹做出艹了研艹究曾艹进辉艹在《艹基于艹DT艹MF艹的医艹院护艹理呼艹叫系艹统的艹设计艹与实艹现》艹一文艹中提艹出了艹系统艹以单艹片机艹AT艹89艹C5艹2为艹核心,艹采艹用信艹号发艹送芯艹片、艹信号艹接受艹芯片、艹语艹音播艹报芯艹片、艹发光艹二极艹管、艹数码艹管显艹示等艹外围艹电路艹以及艹相应艹的控艹制程艹序,艹实现艹了通艹过电艹话拨艹号进艹行单艹呼、艹群呼、艹显艹示、艹呼叫艹提示、艹查艹询、艹播报、艹对艹讲及艹护理艹级别艹的设艹置和艹删除艹等功艹能通艹过编艹码、艹传输艹及解艹码技艹术,艹能确艹保数艹据远艹距离艹传输艹且抗艹干扰艹能力艹强,艹避免艹了有艹线寻艹呼系艹统传艹输的艹不稳[4]艹定性艹。朱艹艳华、艹田艹行军、艹李艹夏青艹等在艹《基艹于P艹L3艹10艹5的艹病房艹呼叫艹系统艹设计艹》一艹文中艹提出艹了针艹对传艹统病艹房呼艹叫系艹统存艹在扩艹展困艹难或艹无线艹电干艹扰的艹现状,艹设艹计了艹基于艹可编艹程载艹波通艹信芯艹片P艹L3艹10艹5的艹新型艹病房艹呼叫艹系统。艹系艹统分艹控制艹器和艹载波艹终端艹两层艹结构,艹均艹以P艹L3艹10艹5为艹主控艹制单艹元,艹并以艹低压艹电力艹线为艹“总艹线”艹传输艹相应艹的控艹制命艹令。艹系统艹软件艹采用艹功能艹模块艹化设艹计思艹想,艹提高艹了系艹统移艹植性艹和可艹靠性。艹实艹测证艹明,艹新型艹病房艹呼叫艹系统艹不仅艹满足艹医疗艹单位艹的功艹能需艹求,艹而且艹具有艹扩展艹性强、艹维艹护方艹便、艹经济[5]艹实用艹等优艹点,艹有较艹强的艹推广艹价值艹。乔艹国鹏艹在《艹基于艹AR艹M的艹数字艹化病艹房呼艹叫系艹统》艹一文艹中详艹细介艹绍了艹基于艹AR艹M的艹数字艹化病艹房呼艹叫系艹统的艹设计。艹以艹微控艹制器艹ST艹M3艹21艹0为艹核心艹控制艹终端艹设备艹接收艹和发艹送,艹采用艹RS艹23艹2、艹RS艹48艹5及艹UD艹P通艹信技艹术,艹实现艹了终艹端设艹备与艹服务艹台之艹间语艹音和艹通讯艹命令艹传输。艹该艹系统艹在实艹际使艹用中艹效果艹良好。艹系艹统利艹用单艹片机艹的自艹动控艹制特艹性,艹使得艹系统艹稳定、艹可艹靠。艹系统艹采用艹的元艹器件艹均是艹常见艹的电艹子元艹器件,艹因艹此系艹2 第一章绪论统硬艹件成艹本较艹低。艹分机艹具有艹较低艹的功艹耗,艹并且艹具有艹较好艹的扩艹展性。艹主艹机与艹分机艹的通艹信稳艹定,艹实时艹性好,艹能艹满足艹各种艹规模艹医院艹的要艹求,艹有很艹好的艹应用艹前景。郭艹广颂、艹胡艹璞在艹《基艹于单艹片机艹的无艹线病艹房呼艹叫系艹统设艹计》艹一文艹中详艹细介艹绍了艹在传艹统病艹房呼艹叫系艹统的艹基础艹上提艹出一艹种基艹于单艹片机艹实现艹的无艹线病艹房呼艹叫系艹统设艹计方艹法给艹出了艹基于艹单片艹机和艹射频艹通信艹芯片艹nR艹F4艹01艹而设艹计的艹硬件艹原理艹图,艹并对艹影响艹无线艹通信艹性能艹的通艹信协艹议的艹设计、艹数艹据帧艹和防艹信息艹碰撞艹方法艹的实艹现及艹混合艹信号[6]艹PC艹B板艹设计艹等做艹了较艹详细艹的探讨。潘艹绍明、艹梁艹喜幸艹《基艹于信艹号叠艹加和艹无线艹电的艹病房艹呼叫艹系统艹设计艹与实艹现》艹一文艹中介艹绍了艹包括艹走廊艹主机、艹监艹控室艹主机、艹电艹脑上艹位机、艹手艹持式艹监控艹机和艹病床艹呼叫艹分机艹的病艹房呼艹叫系艹统。艹各床艹位的艹呼叫艹信号艹通过艹两根艹既作艹为信艹号传艹输又艹为各艹病床艹呼叫艹分机艹提供艹电源艹的电艹线发艹送到艹走廊艹主机,艹再艹由走艹廊主艹机以艹无线艹电的艹方式艹向监艹控室艹主机艹和手艹持式艹监控艹机发艹送。艹监控艹室主艹机和艹手持艹式监艹控机艹在接艹收到艹信号艹后将艹会做艹出相艹应处艹理和艹反应。艹本艹设计艹加入艹了无艹线电艹通信,艹提艹高了艹医务艹人员艹工作艹的灵艹活性,艹能艹在无艹线电艹覆盖艹范围艹的任艹何一艹个位艹置接艹收到艹病人艹的呼艹叫信艹号,艹保证艹了病艹人的艹呼叫艹信号艹能在[7]艹第一艹时间艹得到艹响应,艹很艹大程艹度上艹保障艹了病艹人的艹身体艹健康艹和生艹命安全。通艹过对艹上述艹研究艹成果艹的综艹合分艹析,艹和对艹目前艹医疗艹呼叫艹系统艹的工艹程实艹现的艹经验艹可以[2]艹把当艹前医艹疗呼艹叫系艹统产艹品中艹存在艹的不艹足,艹归纳艹为以艹下几艹类:1.有艹线通艹信医艹疗呼艹叫系艹统:艹病房艹和值艹班室艹之间艹需要艹大量艹的连艹线,艹安装艹布线艹复杂,艹检艹查维艹修困艹难,艹病房艹扩建艹不易艹及费艹用高,艹不艹固定艹应用艹场所艹使用艹不便。艹2.单艹工无艹线通艹信医艹疗呼艹叫系艹统:艹可靠艹性低,艹抗艹干扰艹能力艹差,艹发射艹功率艹大,艹对医艹疗设艹备有干扰。3.ZigBee协艹议无艹线通艹信医艹疗呼艹叫系艹统:艹载波艹频率艹高,艹穿透艹墙壁艹能力艹差,艹通信艹距离艹短;艹支持艹Zi艹gB艹ee艹协议艹的无艹线模艹块和艹微控艹制器艹成本艹相对较高。近艹年来艹设计艹生产艹的呼艹叫器艹已普艹遍采艹用了艹单片艹机,艹使其艹功能艹大为艹增强。艹同艹时,艹值班艹室与艹病房艹间的艹连线艹也大艹大减艹少,艹布线艹简洁艹方便,艹迎艹合了艹医院艹追求艹环境艹整洁艹的需艹求。艹即便艹如此,艹但艹还是艹无法艹摆脱艹电线艹的束艹缚,艹布线艹麻烦,艹遇艹到病艹房扩艹建或艹改造,艹系艹统则艹需要艹重新艹布线,艹产艹品的艹重复艹使用艹率低,艹致艹使成艹本增艹加,艹需要艹新一艹代的艹产品艹来改艹善。艹目前艹市售艹的各艹种呼艹叫器艹均不艹具备艹个性艹录音艹功能,艹而艹在临艹床实艹践中艹发现,艹好艹多的艹医院艹需要艹自己艹独特艹的录艹音内艹容,艹这对艹于医艹生的艹护理艹将有艹大好艹处,艹这也艹是本艹文所艹介绍艹的病艹房语艹音呼艹叫系艹统功艹能上艹的创艹新点之一。3 电子科技大学硕士学位论文1.3研究内容和意义伴艹随着艹医疗艹体制艹改革艹的不艹断深艹化和艹医疗艹事业艹的飞艹速发艹展,艹越来艹越多艹的人艹们需艹要迅艹捷、艹方便艹地得艹到医艹院的艹各种艹各样艹的医艹疗服艹务,艹这必艹将使艹医院艹之间艹的竞艹争日艹趋激艹烈。艹这使艹得衡艹量一艹个医艹院的艹综合艹水平艹高低,艹不艹再仅艹仅局艹限于艹软、艹硬件艹的建艹设上,艹更艹要比艹服务。艹原艹有的艹服务艹体系艹已不艹足以艹适应艹现代艹社会艹需求,艹谋艹求适艹合现艹代社艹会需艹求的艹客户艹服务艹系统,艹是艹所有艹企事艹业单艹位计艹划做艹的工艹作。艹这些艹工作艹有利艹于改艹善服艹务量,艹提艹高效艹率并艹增加艹企业艹效益,艹从艹而赢艹得良艹好的艹社会艹声誉。艹如艹何利艹用先艹进的艹信息艹技术艹为医艹院服艹务,艹更大艹程度艹的提艹高医艹院的艹服务艹质量艹及利艹润,艹是医艹院信艹息化艹建设艹中的[3]艹一个艹重要艹着眼艹点。医艹院的艹竞争艹越来艹越激艹烈,艹商业艹医院艹的生艹存是艹第一艹位的,艹提艹高档艹次和艹服务艹质量艹迫在艹眉睫,艹陪艹护问艹题一艹直是艹医患艹矛盾艹的主艹体,艹也是艹长期艹困扰艹卫生艹系统艹服务艹质量艹的大艹问题,艹使艹用无艹线呼艹叫系艹统,艹方便艹病人艹更快艹找到艹医生,艹以艹节约艹病人艹的宝艹贵时艹间。艹临床艹呼叫艹求助艹装置艹是传艹送临艹床信艹息的艹重要艹手段,艹关艹系病艹员安艹危,艹传统艹的有艹限呼艹叫系艹统历艹来受艹到各艹大医艹院的艹普遍艹重视。艹如艹果采艹用无艹线传艹输,艹会节艹约布艹线和艹改造艹线路艹的资艹金,艹为医艹院节艹约成艹本,艹并且艹及时、艹准艹确、艹可靠,艹简艹便可艹行,艹必然艹比目艹前的艹同类[8]艹产品艹更能艹受到艹医院艹及病艹人的艹认可,艹有艹更强艹的竞艹争力,艹必艹然能艹大力推广。本艹文主艹要涉艹及硬艹件设艹计、艹通信艹技术、艹软艹件工艹程等艹的基艹本理艹论。艹研究艹内容艹包括艹语音艹呼叫艹终端艹的供艹电、艹主控艹电路、艹通艹信接艹口和艹通信艹协议、艹语艹音采艹集与艹回放、艹数艹据存[9]艹储于艹访问等。临艹床呼艹叫装艹置是艹传送艹临床艹信息艹的重艹要手艹段,艹关系艹患者艹的安艹危。艹呼叫艹系统艹历来艹受到艹各大艹医院艹的普艹遍重艹视。艹为了艹方便艹患者,艹提艹高医艹院服艹务质艹量,艹医用艹呼叫艹系统艹已经艹成为艹了国艹内外艹各类艹医院艹中广艹泛使艹用的艹一种艹电子艹设备。艹它艹能从艹根本艹上解艹决传艹统医艹患之艹间所艹存在艹的一艹些服艹务纠艹纷等艹问题,艹可艹以静艹化医艹院的艹工作艹环境,艹避艹免无艹谓的艹争执。艹既艹可以艹帮助艹病人艹快速艹的呼艹叫医艹护人艹员,艹也可艹减轻艹医护艹人员艹巡视艹病房艹的辛艹劳,艹减轻艹医护艹人员艹值班艹的心艹理压艹力,艹在无艹呼叫艹时放艹心的艹作好艹其他艹医护艹工作,艹从艹而提艹高了[2,9]艹医护艹效率。艹因艹此,艹医用艹呼叫艹系统艹具有艹广泛艹的社艹会意艹义与艹重大艹的实艹用价艹值。1.4研究思路和方法本课题主要采用文献研究、需求调研与分析、总体方案论证、硬件设计和软件设计等方法,根据EDA/CAD、嵌入式系统和面向对象的程序设计等技术进行指导设计与测试。呼叫终端的硬件设计是整个病房呼叫系统设计的基础,在系统设计中占有非常重要的作用。而它的硬件设计中,最重要的组成部分就是主控处理器模块,主4 第一章绪论控处理器模块直接影响硬件终端的功能、性能优劣。因此,硬件方案的选择,其实就是终端硬件主控处理器模块和其他外设的确定,其决定了整个系统功能的优劣。本课题涉及两个部分的软件开发过程,上位机部分和下位机部分,下位机为单片机部分,是指病患和医生使用的终端器件,其软件开发是基于模块化的功能实现,需要针对医生和病人设计不同的终端呼叫设备,上位机部分为电脑上运行的软件,或主控部分,或服务器部分,应该针对市面主流操作系统进行开发,完成对整个系统呼叫要求的申请和处理。在通信方面,本系统设计时主要涉及物理层和媒体接入协议。当前市面上还没有为医院呼叫系统开发出专用的媒体接入协议,但是可以借鉴无线局域网的MAC协议的部分内容。针对静止或者移动缓慢的呼叫终端,可以通过有线网接入服务器,针对需要移动的终端可以选择带无线局域网的接入方式,可以考虑通过中心节点来控制局部网络,形成小型的多层局域网,或者选择微波中继站,或者ZigBee协议,来提高整个通信的一条距离,来减少整个系统的设计难度,当前最通用的无线局域网媒体接入协议可以根据硬件选择IEEE802.11、IEEE802.11b、IEEE802.11a、IEEE802.11g、IEEE802.11n等多种无线协议标准。课题研究中,将使用AltiumDesigner设计系统的硬件电路原理图和PCB版图,拟采用STM32单片机作为语音呼叫终端的微控制器,配合国内开源的RT-Thread嵌入式实时操作系统管理所有硬件设备并完成语音的网络传输。嵌入式软件开发工具选择KeiluVision/MDK-ARM,上位机软件采用Microsoft的VisualStudio/C#,数据库管理采用SQL。1.5本文的结构安排第一章,绪论,本章主要对系统研究的背景以及系统研究的国内外发展现状作了详细的分析,对本文的研究意义以及本文所做的工作做了详细的分析。第二章,语音呼叫系统的相关技术研究,本章对系统所用的到相关技术作了详细的介绍,对系统设计的软硬件技术以及系统的传输协议等进行了论述。第三章,系统的硬件设计与实现,本章对系统的下位机硬件进行了详细的设计,实现了下位机的通信,通过对通信协议的设计优化保证了整个系统的通信可靠性。第四章,系统的软件设计与实现,对上位机和下位机系统主要功能模块的设计和实现进行了详细阐述,并对上下位机进行联合调试,实现了整个系统的所有功能模块。5 电子科技大学硕士学位论文第五章,系统的部署与联合测试,对整个系统进行部署,对系统部署所需要的软硬件的环境进行了论述,以及系统的整个功能进行了测试,测试了系统功能的可用性以及系统的稳定性。第六章,总结与展望,总结了本文的工作,对系统发展的前景作了论述。本文提出了一种医院病房语音呼叫系统的解决方案,方便了医院对病房和病人的管理,解决了人工巡视病房的缺点,让病人随时可以方便地呼叫医护人员。系统硬件上采用无线传输以及微控制器电路设计,保证了系统的简洁、灵活、稳定、功耗低,底层硬件和顶层上位机系统通过无线网络实现互联,方便了系统的使用与部署。6 第二章语音呼叫系统的相关技术第二章语音呼叫系统的相关技术2.1嵌入式系统概述2.1.1嵌入式系统的定义嵌艹入式艹系统艹是以艹应用艹为中艹心、艹以计艹算机艹技术艹为基艹础、艹软件艹硬件艹可裁艹剪、艹适应艹应用艹系统艹对功艹能、艹可靠艹性、艹成本、艹体艹积、艹功耗艹严格艹要求艹的专艹用计艹算机艹系统。艹嵌艹入式艹系统艹是将艹先进艹的计艹算机艹技术、艹半艹导体艹技术艹和电艹子技艹术与艹各个艹行业艹的具艹体应艹用相艹结合艹后的艹产物。嵌入式系统包含有计算机,但又不是通用计算机的计算机应用系统。通用计算机与嵌入式系统对比见表2–1表2–1通用计算机与嵌入式系统对比特征通用计算机嵌入式系统形式和类型∙看艹得见艹的计算机。∙看艹不见艹的计算机。∙按其艹体系艹结构、艹运艹算速艹度和艹结构艹规∙形艹式多艹样,艹应用艹领域艹广泛,艹按艹应用艹模艹等因艹素分艹为大、艹中、艹小艹型机艹和微来分。机。组成∙通∙面艹向应艹用的艹嵌入艹式微艹处理艹器,艹总线艹艹用处艹理器、艹标艹准总艹线和艹外设。∙软和外艹部接艹口多艹集成艹在处艹理器艹内部。艹件和艹硬件艹相对艹独立。∙软艹件与艹硬件艹是紧艹密集艹成在艹一起的。开发方式∙开艹发平艹台和艹运行艹平台艹都是艹通用艹计算艹∙采艹用交艹叉开艹发方艹式,艹开发艹平台艹一般艹机。是通艹用计艹算机,艹运艹行平艹台是艹嵌入艹式系艹统。二艹次开艹发性∙应艹用程艹序可艹重新艹编制∙一艹般不艹能再编程7 电子科技大学硕士学位论文2.1.2嵌入式系统的组成嵌艹入式艹系统艹一般艹由嵌艹入式艹硬件艹和软艹件组艹成。艹硬件艹以微艹处理艹器为艹核心艹集成艹存储艹器和艹系统艹专用艹的输艹入/艹输出艹设备艹;软艹件包艹括:艹初始艹化代艹码及艹驱动、艹嵌艹入式艹操作艹系统艹和应艹用程艹序等,艹这艹些软艹件有艹机地艹结合艹在一艹起,艹形成艹系统艹特定艹的一艹体化艹软件。典型的嵌入式系统框架如图2–1所示。图2–1典型的嵌入式系统框架2.1.3嵌入式系统的特点嵌[10–13]艹入式艹系统艹具有艹以下特点:1.嵌艹入式艹系统艹通常艹是形艹式多艹样、艹面向艹特定艹应用艹的一艹般用艹于特艹定的艹任务,艹其艹硬件艹和软艹件都艹必须艹高效艹率地艹设计,艹量艹体裁艹衣、艹去除艹冗余,艹而艹通用艹计算艹机则艹是一艹个通艹用的艹计算艹平台。艹艹它通艹常都艹具有艹低功艹耗、艹体积艹小、艹集成艹度高艹等特艹点,艹能够艹把通艹用微艹处理艹器中艹许多艹由板艹卡完艹成的艹任务艹集成艹在芯艹片内艹部。艹嵌入艹式软艹件是艹应用艹程序艹和操艹作系艹统两艹种软艹件的艹一体艹化程序。2.嵌艹入式艹系统艹得到艹多种艹类型艹的处艹理器艹和处艹理器艹体系艹结构艹的支持通艹用计艹算机艹采用艹少数艹的处艹理器艹类型艹和体艹系结艹构,艹而且艹主要艹掌握艹在少艹数大艹公司艹手里。艹艹嵌入艹式系艹统可艹采用艹多种艹类型艹的处艹理器艹和处艹理器艹体系艹结构。在艹嵌入艹式微艹处理艹器产艹业链艹上,艹IP艹设计、艹面艹向应艹用的艹特定艹嵌入艹式微艹处理艹器的艹设计、艹芯艹片的艹制造艹已相艹成巨艹大的艹产业。艹大艹家分艹工协艹作,艹形成艹多赢艹模式。艹有艹上千艹种的艹嵌入艹式微艹处理艹器和艹几十艹种嵌艹入式艹微处艹理器艹体系艹结构艹可以艹选择。艹3.嵌入艹式系艹统通艹常极艹其关艹注成艹本;嵌艹入式艹系统艹通常艹需要艹注意艹的成艹本是艹系统艹成本,艹特艹别是艹量大艹的消艹费类艹数字艹化产艹品,艹其成艹本是艹产品艹竞争艹的关艹键因艹素之艹一。艹嵌入艹式的艹系统艹成本艹包括:8 第二章语音呼叫系统的相关技术(a)一次艹性的艹开发(Non-RecurringEngineering,NRE)成本;(b)产艹品成艹本:艹硬件艹物料(BillofMaterial,BOM)成艹本、艹外壳艹包装艹和软艹件版艹税等;(c)批艹量产艹品的艹总体艹成本艹=N艹RE艹成本艹+每艹个产艹品成艹本*艹产品艹总量艹;(d)每艹个产艹品的艹最后艹成本艹=总艹体成艹本/艹产品艹总量艹=N艹RE艹成本艹/产艹品总艹量+艹每个艹产品艹成本。4.嵌艹入式艹系统艹有实艹时性艹和可艹靠性艹的要艹求一艹方面艹大多艹数实艹时系艹统都艹是嵌艹入式艹系统,艹另艹一方艹面嵌艹入式艹系统艹多数艹有实艹时性艹的要艹求,艹软件艹一般艹是固艹化运艹行或艹直接艹加载艹到内艹存中艹运行,艹具艹有快艹速启艹动的艹功能。艹并艹对实艹时的艹强度艹要求艹各不艹一样,艹可艹分为艹硬实艹时和艹软实艹时。艹嵌入艹式系艹统一艹般要艹求具艹有出艹错处艹理和艹自动艹复位艹功能,艹特艹别是艹对于艹一些艹在极艹端环艹境下艹运行艹的嵌艹入式艹系统艹而言,艹其艹可靠艹性设艹计尤艹其重艹要。艹在大艹多数艹嵌入艹式系艹统的艹软件艹中一艹般都艹包括艹一些艹机制,艹比艹如硬艹件的艹看门艹狗定艹时器,艹软艹件的艹内存艹保护艹和重艹启动艹机制。艹5.嵌艹入式艹系统艹使用艹的操艹作系艹统一艹般是艹适应艹多种艹处理艹器、艹可剪艹裁、艹轻量艹型、艹实时艹可靠、艹可艹固化艹的嵌艹入式艹操作艹系统艹由艹于嵌艹入式艹系统艹应用艹的特艹点,艹像嵌艹入式艹微处艹理器艹一样,艹嵌艹入式艹操作艹系统艹也是艹多姿艹多彩艹的。艹大多艹数商艹业嵌艹入式艹操作艹系统艹可同艹时支艹持不艹同种艹类的艹嵌入艹式微艹处理艹器。艹可根艹据应艹用的艹情况艹进行艹剪裁、艹配艹置。艹嵌入艹式操艹作系艹统规艹模小,艹所艹需的艹资源艹有限艹如内艹核规艹模在艹几十艹KB,艹能艹与应艹用软艹件一艹样固艹化运艹行。艹一般艹包括艹一个艹实时艹内核,艹其艹调度艹算法艹一般艹采用艹基于艹优先艹级的艹可抢艹占的艹调度艹算法。艹高艹可靠艹嵌入艹式操艹作系艹统:艹时、艹空、艹数据艹隔离。6.嵌艹入式艹系统艹开发艹需要艹专门艹工具艹和特艹殊方艹法多艹数嵌艹入式艹系统艹开发艹意味艹着软艹件与艹硬件艹的并艹行设艹计和艹开发,艹其艹开发艹过程艹一般艹分为艹几个艹阶段艹:产艹品定艹义、艹软件艹与硬艹件设艹计与艹实现、艹软艹件与艹硬件艹集成、艹产艹品测艹试与艹发布、艹维艹护与艹升级。艹由艹于嵌艹入式艹系统艹资源艹有限,艹一艹般不艹具备艹自主艹开发艹能力,艹产艹品发艹布后艹用户艹通常艹也不艹能对艹其中艹的软艹件进艹行修艹改,艹必须艹有一艹套专艹门的艹开发艹环境。艹该艹开发艹环境艹包括艹专门艹的开艹发工艹具(艹包括艹设计、艹编艹译、艹调试、艹测艹试等艹工具艹),艹采用艹交叉艹开发艹的方艹式进艹行,艹交叉开发环境如图2–2所示。2.2面向对象的程序设计技术面艹向对艹象的艹程序艹设计(ObjectOrientedProgramming,OOP)是艹一种艹广泛艹使用艹9 电子科技大学硕士学位论文图2–2嵌入式系统的交叉开发环境的计艹算机艹编程艹架构。艹面艹向对艹象的艹程序艹设计艹的一艹条最艹基本艹的原艹则就艹是计艹算机艹程序艹是由艹单个艹的能艹够起艹到子艹程序艹作用艹的单艹元或艹对象艹组合艹而成的。2.2.1对象面艹向对艹象程艹序设艹计既艹是一艹种程艹序设艹计范艹型,艹同时艹也是艹一种艹程序艹开发艹的方艹法。艹对象艹指的艹是类艹的实例。OOP将对艹象作艹为程艹序的艹基本艹单元,艹将艹程序艹和数艹据封艹装其艹中,艹以提艹高软艹件的艹重用艹性、艹灵活艹性和艹扩展艹性。一艹个具艹体对艹象属艹性的艹值被艹称作艹它的艹“状艹态”。艹(艹系统艹给对艹象分艹配内艹存空艹间,艹而不艹会给艹类分艹配内艹存空艹间。艹这很艹好理艹解,艹类是艹抽象艹的系艹统不艹可能艹给抽艹象的艹东西艹分配艹空间,艹而艹对象艹则是艹具体艹的。2.2.2组件即艹数据艹和功艹能一艹起在艹运行艹着的艹计算艹机程艹序中艹形成艹单元,艹组艹件在艹面向艹对象艹的程艹序设艹计所艹设计艹的计艹算机艹程序艹中是艹模块艹化和艹结构艹化的艹基础。2.2.3封装也艹叫做艹信息艹封装,艹即艹确保艹组件艹不会艹以某艹种不艹可预艹期的艹方式艹改变艹其它艹组件艹的内艹部运艹行状艹态;艹只有艹在那艹些提艹供了艹内部艹运行艹状态艹改变艹方法艹的组艹件中,艹才艹可以艹访问艹其内艹部运艹行状艹态。艹每类艹组件艹都提艹供了艹一个艹与其艹它组艹件进艹行联艹系的艹接口,艹并艹且规艹定了艹其它艹组件艹对其艹进行艹调用艹的方艹法。10 第二章语音呼叫系统的相关技术2.2.4消息传递一艹个对艹象通艹过接艹受消艹息、艹处理艹消息、艹传艹出消艹息或艹使用艹其他艹类的艹方法艹来实艹现一艹定功艹能,艹这叫艹做消艹息传艹递机制(MessagePassing)。面艹向对艹象程艹序设艹计可艹以看艹作一艹种在艹程序艹中包艹含各艹种独艹立而艹又互艹相调艹用的艹对象艹的思艹想,艹这与艹传统艹的思艹想刚艹好相艹反:艹传统艹的程艹序设艹计主艹张将艹程序艹看作艹一系艹列函艹数的艹集合,艹或艹者直艹接就艹是一艹系列艹对电艹脑下艹达的艹指令。艹为艹了实艹现整艹体运艹算,艹面向艹对象艹程序艹设计艹中的艹每一艹个对艹象都艹应该艹能够艹接受艹数据、艹处艹理数艹据并艹将数艹据传艹达给艹其它艹对象,艹因艹此它艹们都艹可以艹被看艹作一艹个小艹型的艹“机艹器”,艹即艹对象。艹2.2.5OOP的主要特性为什么病房语音呼叫系统的开发要选用面向对象的程序设计呢?因为面向对象的程序设计实现了软件工程的三个主要目标:重用性、灵活性和扩展性。图4-1程序设计的层次面向对象的程序设计具备下列特性[14]:抽艹象性艹——艹即程艹序有艹能力艹忽略艹正在艹处理艹中的艹某些艹信息艹的某艹些方艹面,艹即对艹信息艹的主艹要方艹面进艹行关艹注的艹能力。多艹态性艹——艹即组艹件的艹引用艹以及艹类集艹会涉艹及到艹许多艹其它艹不同艹类型艹的组艹件,艹而且艹引用艹组件艹所产艹生的艹结果艹必须艹依据艹实际艹调用艹的类型。继艹承性艹——艹即允艹许在艹现存艹的组艹件基艹础之艹上创艹建子艹类组艹件,艹这统艹一并艹且增艹强了艹程序艹的多艹态性艹和封艹装性。艹简艹单地艹说来艹就是艹使用艹类来艹对组艹件进艹行划艹分,艹而且艹还可艹以定艹义新艹类作艹为现艹存类艹的扩艹展,艹于是艹这样艹就可艹以将艹类组艹织成艹树形艹结构艹或者艹网状艹结构,艹同艹时这艹也体艹现了艹动作艹的通艹用性。正是因为面向对象的程序设计具有以上的优越特点,才使得它满足病房语音呼叫系统的开发需求,方便程序接口的设计。2.3TCP/IP协议TCP/IP是TransmissionControlProtocol/InternetProtocol的简写,中艹译名艹为传艹输控艹制协艹议/艹因特艹网互艹联协艹议,艹又名艹网络艹通讯艹协议,艹是艹In艹te艹rn艹et艹最基艹本的艹协议、艹I艹nt艹er艹ne艹t国艹际互艹联网艹络的艹基础,艹由艹网络艹层的艹IP艹协议艹和传艹输层艹的T艹CP艹协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协艹议采艹用了艹4层艹的层艹级结艹构,艹每一艹层都艹呼叫艹它的艹下一艹层所艹提供艹的协艹议来艹完成艹自己艹的需艹求。艹通俗艹而言艹:T艹CP艹负责艹发现艹传输艹的问艹题,艹一有艹问题艹就发艹出信艹号,艹要求艹重新艹传输,艹直艹到所艹有数艹据安艹全正艹确地艹传输艹到目艹的地。艹而艹IP艹是给艹因特艹网的艹每一艹台联艹网设艹备规[15,16]艹定一艹个地址。11 电子科技大学硕士学位论文2.3.1TCP/IP协议的层次TCP/IP协艹议不艹是T艹CP艹和I艹P这艹两个艹协议艹的合艹称,艹而是艹指因艹特网整个TCP/IP协议族。从艹协议艹分层艹模型艹方面艹来讲,艹TCP/IP由艹四个艹层次艹组成艹:网艹络接艹口层、艹网艹络层、艹传艹输层、艹应艹用层。TCP/IP协艹议并艹不完艹全符艹合OSI(OpenSystemInterconnect)的艹七层艹参考艹模型,艹OSI是艹传统艹的开艹放式艹系统艹互连艹参考艹模型,艹是艹一种艹通信艹协议艹的7艹层抽艹象的艹参考艹模型,艹其艹中每艹一层艹执行艹某一艹特定艹任务。艹该艹模型艹的目艹的是艹使各艹种硬艹件在艹相同艹的层艹次上艹相互艹通信。艹这艹7层艹是:艹物理艹层、艹数据艹链路艹层(艹网络艹接口艹层)、艹网艹络层艹(网艹络层艹)、艹传输艹层(艹传输艹层)、艹会艹话层、艹表艹示层艹和应艹用层艹(应艹用层艹)。而TCP/IP通艹讯协艹议采艹用了艹4层艹的层艹级结艹构,艹每一艹层都艹呼叫艹它的艹下一艹层所艹提供艹的网艹络来艹完成艹自己艹的需艹求。艹由于艹AR艹PA艹NE艹T的艹设计艹者注艹重的艹是网艹络互艹联,艹允许艹通信艹子网艹(网艹络接艹口层艹)采艹用已艹有的艹或是艹将来艹有的艹各种艹协议,艹所艹以这艹个层艹次中艹没有艹提供艹专门艹的协艹议。艹实际艹上,TCP/IP协艹议可艹以通艹过网艹络接艹口层艹连接艹到任艹何网艹络上,艹例艹如X艹.2艹5交艹换网艹或I艹EE艹E8艹02局域网。2.3.2IPIP艹层接艹收由艹更低艹层(艹网络艹接口艹层例艹如以艹太网艹设备艹驱动艹程序艹)发艹来的艹数据艹包,艹并把艹该数艹据包艹发送艹到更艹高层艹–艹-T艹CP艹或U艹DP艹层;艹相反,艹I艹P层艹也把艹从T艹CP艹或U艹DP艹层接艹收来艹的数艹据包艹传送艹到更艹低层。艹I艹P数艹据包艹是不艹可靠艹的,艹因为艹IP艹并没艹有做艹任何艹事情艹来确艹认数艹据包艹是否艹按顺艹序发艹送的艹或者艹有没艹有被艹破坏,艹I艹P数艹据包艹中含艹有发艹送它艹的主艹机的艹地址[17]艹(源艹地址艹)和艹接收艹它的艹主机艹的地艹址(艹目的艹地址艹)。高艹层的艹TC艹P和艹UD艹P服艹务在艹接收艹数据艹包时,艹通艹常假艹设包艹中的艹源地艹址是艹有效艹的。艹也可艹以这艹样说,艹I艹P地艹址形艹成了艹许多艹服务艹的认艹证基艹础,艹这些艹服务艹相信艹数据艹包是艹从一艹个有艹效的艹主机艹发送艹来的。艹I艹P确艹认包艹含一艹个选艹项,艹叫作艹IP艹s艹ou艹rc艹e艹ro艹ut艹in艹g,艹可以艹用来艹指定艹一条艹源地艹址和艹目的艹地址艹之间艹的直艹接路艹径。艹对于艹一些艹TC艹P和艹UD艹P的艹服务艹来说,艹使艹用了艹该选艹项的艹IP艹包好艹像是艹从路艹径上艹的最艹后一艹个系艹统传艹递过艹来的,艹而艹不是艹来自艹于它艹的真艹实地艹点。艹这个艹选项艹是为艹了测艹试而艹存在艹的,艹说明艹了它艹可以艹被用艹来欺艹骗系艹统来艹进行艹平常艹是被艹禁止艹的连艹接。艹那么,艹许艹多依艹靠I艹P源艹地址艹做确艹认的艹服务艹将产艹生问艹题并艹且会[17]艹被非艹法入艹侵。12 第二章语音呼叫系统的相关技术2.3.3TCPTCP艹是面艹向连艹接的艹通信艹协议,艹通艹过三艹次握艹手建艹立连艹接,艹通讯艹完成艹时要艹拆除艹连接,艹由艹于T艹CP艹是面艹向连艹接的艹所以艹只能艹用于艹端到艹端的艹通讯。TCP艹提供艹的是艹一种艹可靠艹的数艹据流艹服务,艹采艹用“艹带重艹传的艹肯定艹确认艹”技艹术来艹实现艹传输艹的可艹靠性。艹T艹CP艹还采艹用一艹种称艹为“艹滑动艹窗口艹”的艹方式艹进行艹流量艹控制,艹所艹谓窗艹口实艹际表艹示接艹收能艹力,艹用以艹限制艹发送艹方的艹发送速度。如艹果I艹P数艹据包艹中有艹已经艹封好艹的T艹CP艹数据艹包,艹那么艹IP艹将把艹它们艹向‘艹上’艹传送艹到T艹CP艹层。艹TC艹P将艹包排艹序并艹进行艹错误艹检查,艹同艹时实艹现虚艹电路艹间的艹连接。艹T艹CP艹数据艹包中艹包括艹序号艹和确艹认,艹所以艹未按艹照顺艹序收艹到的艹包可艹以被艹排序,艹而艹损坏艹的包艹可以艹被重传[17,18]TCP艹将它艹的信艹息送艹到更艹高层艹的应艹用程艹序,艹例如艹Te艹ln艹et艹的服艹务程艹序和艹客户艹程序。艹应艹用程艹序轮艹流将艹信息艹送回艹TC艹P层,艹T艹CP艹层便艹将它艹们向艹下传艹送到艹IP艹层,艹设备艹驱动艹程序艹和物艹理介艹质,艹最后艹到接收方。面艹向连艹接的艹服务艹(例艹如T艹el艹ne艹t、艹FT艹P、艹rl艹og艹in、艹X艹W艹in艹do艹ws艹和S艹MT艹P)艹需要艹高度艹的可艹靠性,艹所艹以它艹们使艹用了艹TCP。DNS(DomainNameSystem,域名解析系统)在艹某些艹情况艹下使艹用T艹CP艹(发艹送和艹接收艹域名艹数据艹库),艹但艹使用艹UD艹P传艹送有艹关单艹个主艹机的艹信息。2.3.4UDPUDP艹是面艹向无艹连接艹的通艹讯协艹议,艹UD艹P数艹据包艹括目艹的端艹口号艹和源艹端口艹号信艹息,艹由于艹通讯艹不需艹要连艹接,艹所以艹可以艹实现艹广播艹发送。UDP艹通讯艹时不艹需要艹接收艹方确艹认,艹属于艹不可艹靠的艹传输,艹可艹能会艹出现艹丢包艹现象,艹实艹际应艹用中艹要求艹程序艹员编艹程验证。UDP艹与T艹CP艹位于艹同一艹层,艹但它艹不管艹数据艹包的艹顺序、艹错艹误或艹重发。艹因艹此,艹UD艹P不艹被应艹用于艹那些艹使用艹虚电艹路的艹面向艹连接艹的服艹务,艹UD艹P主艹要用艹于那艹些面艹向查艹询-艹–艹应答艹的服艹务,艹例如艹NF艹S。艹相对艹于F艹TP艹或T艹el艹ne艹t,艹这些艹服务艹需要艹交换艹的信艹息量艹较小。艹使艹用U艹DP艹的服艹务包括NTP(NetworkTimeProtocol,网络时间协议)和DNS(DNS也使用TCP)。欺艹骗U艹DP艹包比艹欺骗艹TC艹P包艹更容艹易,艹因为艹UD艹P没艹有建艹立初艹始化艹连接艹(也艹可以艹称为艹握手,艹因艹为在艹两个艹系统艹间没艹有虚艹电路艹),艹也就艹是说,艹与艹UD艹P相艹关的艹服务艹面临艹着更[17,18]艹大的艹危险。13 电子科技大学硕士学位论文2.4数据库技术上艹位机艹系统艹需要艹通过艹计算艹机通艹信接艹口采艹集所艹有下艹位机艹用户艹的用艹电数艹据,艹这些艹数据艹随时艹间积艹累会艹变得艹很庞艹大,艹好在艹它们艹都是艹有固艹定格艹式的艹数据,艹使艹用数艹据库艹对其[19]艹进行艹管理艹便自艹然而艹然地艹成了艹最佳艹选择。数艹据库艹技术艹是信艹息系艹统的艹一个艹核心艹技术。艹是艹一种艹计算艹机辅艹助管艹理数艹据的艹方法,艹它艹研究艹如何艹组织艹和存艹储数艹据,艹如何艹高效艹地获艹取和艹处理艹数据。艹是艹通过艹研究艹数据艹库的艹结构、艹存艹储、艹设计、艹管艹理以艹及应艹用的艹基本艹理论艹和实艹现方艹法,艹并利艹用这艹些理艹论来艹实现艹对数艹据库艹中的艹数据艹进行艹处理、艹分艹析和艹理解艹的技艹术。艹即:艹数据艹库技艹术是艹研究、艹管[20]艹理和艹应用艹数据艹库的艹一门艹软件艹科学。数艹据库艹技术艹是现艹代信艹息科艹学与艹技术艹的重艹要组艹成部艹分,艹是计艹算机艹数据艹处理艹与信艹息管艹理系艹统的艹核心。艹数艹据库艹技术艹研究艹和解艹决了艹计算艹机信艹息处艹理过艹程中艹大量艹数据艹有效艹地组艹织和艹存储艹的问艹题,艹在数艹据库艹系统艹中减艹少数艹据存艹储冗艹余、艹实现艹数据艹共享、艹保艹障数艹据安艹全以艹及高艹效地艹检索艹数据艹和处艹理数据。数艹据库艹技术艹研究艹和管艹理的艹对象艹是数艹据,艹所以艹数据艹库技艹术所艹涉及艹的具艹体内艹容主艹要包艹括:艹通过艹对数艹据的艹统一艹组织艹和管艹理,艹按照艹指定艹的结艹构建艹立相艹应的艹数据艹库和艹数据艹仓库艹;利艹用数艹据库艹管理艹系统艹和数艹据挖艹掘系艹统设艹计出艹能够艹实现艹对数艹据库艹中的艹数据艹进行艹添加、艹修艹改、艹删除、艹处艹理、艹分析、艹理艹解、艹报表艹和打艹印等艹多种艹功能艹的数艹据管艹理和艹数据艹挖掘艹应用艹系统艹;并艹利用艹应用艹管理艹系统艹最终艹实现艹对数艹据的艹处理、艹分艹析和艹理解[21]。2.5本章小结本章主要对病房语音呼叫系统中需要涉及到的主要相关技术及其相关概念进行了简要介绍和概括:嵌入式系统、面向对象的程序设计技术、TCP/IP协议、数据库技术等。14 第三章系统硬件的设计与实现第三章系统硬件的设计与实现3.1系统硬件的总体方案设计任何通信都涉及到信道和传输媒介的问题,考虑到有线通信方式在系统部署时需要铺设大量的通信电缆,产生巨大的安装成本而且也不利于设备维护,影响外观。而目前Wi-Fi(WirelessFidelity)的覆盖越来越广泛,使用Wi-Fi作为病房语音呼叫系统接入网络的方式就成了不言而喻的选择。系统硬件上以嵌入式微控制器为核心,通过外设IO与各个电路或模块互联,总体方案框图如图3–1所示。电源管理外部直流电源锂电池备用电源WIFI指示灯按钮嵌入式微控制器STM32MIC放大器ARM®Cortex®-M3功放扬声器图3–1系统硬件的总体方案框图3.2系统电源设计考虑到病房语音呼叫的特殊性,系统硬件一般情况下使用外部直流电源供电,遇到停电等特殊情况时使用内部电池作为后备电源。外部电源供电时通过TP4056锂电池电源管理芯片给电池充电以延长电池寿命。为尽量降低功耗,系统电源芯片RT8008在常态下是关闭的,只在三种情况下才开启:(1)定时唤醒;(2)语音呼叫按钮被按下;(3)防破坏拆除按钮被断开。任何一种情况都会是RT8008的使能信号Poweren有效,系统电源开启,详见第3.7节阐述。3.3微控制器最小系统设计3.3.1STM32嵌入式微控制器简介STM32系艹列嵌艹入式艹微控艹制器艹基于艹专为艹要求艹高性艹能、艹低成艹本、艹低功艹耗的艹嵌入艹式应○R○R○R○R艹用专艹门设艹计的ARMCortex-M3内核。ARMCortex-M3处艹理器艹是行艹业领艹先的艹3艹2艹位处艹理器,艹适艹用于艹具有艹较高艹确定艹性的艹实时艹应用,艹它艹经过艹专门艹开发,艹可艹使合艹15 电子科技大学硕士学位论文+5vU6VBATU2VCC4543L1VCCBATVINLX3624.7uHGNDSTDBYGNDC2R6C3R72751PROGCHRGFBEN10uF750k8p3k18TEMPCEC4R5C1R33RT800810uF750k10uF10kTP4056Power_enR3200kJ21+5v3GND2GNDPWR2.5图3–2系统电源电路原理图作伙艹伴针艹对广艹泛的艹设备艹(包艹括微艹控制艹器、艹汽车艹车身艹系统、艹工艹业控艹制系艹统以艹及无艹线网艹络和艹传感艹器)艹开发艹高性艹能低艹成本艹平台。艹此艹处理艹器具艹有出艹色的艹计算艹性能艹以及艹对事艹件的艹优异艹系统艹响应艹能力,艹同艹时可艹应实艹际中艹对低艹动态艹和静艹态功艹率需艹求的艹挑战。艹此艹处理艹器配艹置十艹分灵艹活,艹从而艹支持艹广泛艹的实艹现形艹式(艹从需艹要内艹存保艹护和艹强大艹t艹ra艹ce艹技艹术的[22]艹实现艹形式,艹直艹至需艹要极艹小面艹积的艹成本艹敏感艹型设备)。STM32艹系列艹嵌入艹式微艹控制艹器按艹性能艹分成艹两个艹不同艹的系艹列:艹ST艹M3艹2F艹10艹3“艹增强艹型”艹系列艹和S艹TM艹32艹F1艹01艹“基艹本型艹”系艹列。艹增强艹型系艹列时艹钟频艹率达艹到7艹2M艹Hz,艹是艹同类艹产品艹中性艹能最艹高的艹产品艹;基艹本型艹时钟艹频率艹为3艹6M艹Hz,艹以艹16艹位产艹品的艹价格艹得到艹比1艹6位艹产品艹大幅艹提升艹的性艹能,艹是1艹6位艹产品艹用户艹的最艹佳选艹择。艹两个艹系列艹都内艹置3艹2K艹到1艹28艹K的艹闪存,艹不艹同的艹是S艹RA艹M的艹最大艹容量艹和外艹设接艹口的艹组合。艹时艹钟频艹率7艹2M艹Hz艹时,艹从闪艹存执艹行代艹码,艹ST艹M3艹2功艹耗3艹6m艹A,艹是3艹2位艹市场艹上功艹耗最艹低的艹产品,艹相艹当于[23]艹0.5mA/MHz。3.3.2基于STM32的嵌入式最小系统事实上STM32单片机最小系统是不需要外部时钟的,其内部集成了RC高速振荡器可作为系统时钟源,只不过考虑到语音采样或者还原需要比较精确的时钟控制,选择了片外晶体振荡器为STM32提供系统时钟。预留的SWD接口为STM32的编程调试接口,用官方的ST-LINK或者第三方工具J-LINK可以方便地对STM32进行在线调试或编程。一红一绿两个LED用于指示系统工作状态:通常情况下,绿色指示灯每1s闪烁一次表示系统工作正常且处于待机状态;用户按下语音呼叫按钮后红色LED闪烁表示正在呼叫中;语音呼叫接通后,绿色LED长亮表示处于语音通话状态;如果长时间不能接通,则红色LED长亮表示通信故障;语音通话结束后,回到待机状态,绿色LED每秒闪烁一次。16 第三章系统硬件的设计与实现U1WKUP1426PA0-WKUPPB0ADC11527SHDNPA1PB1ADC21628R2PA2PB2/BOOT1GNDPA31755ResPA3PB3/JTDODAC12056PA4PB4/JNTRSTDAC22157Wifi_EnPA5PB5TIM3_CH12258SCLPA6PB6TIM3_CH22359SDAPA7PB74161INTPA8PB84262PA9PB94329PA10PB104430PA11PB114533PB12PA12PB12SWDIO4634PB13PA13/JTMS/SWDIOPB13SWCLK4935PA14/JTCK/SWCLKPB145036C5PA15/JTDIPB15580.1uFOSC_IN/PD0PC0XTAL169GNDOSC_OUT/PD1PC1R288MSDIO_CMD5410C6PD2PC2PC311ResBOOT060240.1uFBOOT0PC4LED125PC5RED737NRSTPC638OpenR11C8PC7Res0.1uF39SDIO_D0PC840SDIO_D1PC951SDIO_D2PC10GND52SDIO_D3PC1153SDIO_CKPC12P22ALMPC13-TAMPER-RTCSWDIO31PC14-OSC32_IN142VCCVBATPC15-OSC32_OUTSWCLK33231VDD_1VSS_1Header34847VDD_2VSS_26463SWDGND19VDD_3VSS_318VDD_4VSS_41312VCCAVDDAVSSASTM32F103RCT6GND图3–3STM32最小系统电路原理图3.4语音输入电路语音输入电路如图3–4所示,语音通过驻极话筒转化为电信号,经电容耦合进入放大电路,微弱的语音信号经过两级运算放大器从mV级别放大到约2.5Vpp左右,送入STM32的模拟信号输入引脚,最后经其内部的ADC(Analog-to-DigitalConverter,模拟数字转换器)转化为数字语音信号。C11C12GND1uF1uFVCCR14R15ResResR16R348VCCMK110k100k8C14R1721uFRes1C15R1861R1931uFRes7R20ADC2Mic2VCCU4A2Res5ResVMLM358ADVMU4BC16R214R22LM358ADC17GND1uFResRes41uFGND图3–4语音输入电路原理图17 电子科技大学硕士学位论文3.5语音输出电路对方用户端采集和处理后的数字语音信号通过网络实时传输到接收端,接收端的STM32微控制器则将语音数据流通过其片内的DAC(Digital-AnalogConverter,数字模拟转换器))按特定的速率转换为模拟语音电信号,再经过低通滤波去除高频数字噪声、功率放大后驱动扬声器还原成声音。语音输出电路如图3–5所示,语音功放芯片带有使能引脚SHTN,接高电平时正常工作,接低电平时停止工作,消耗极小的电流。STM32微控制器通过PB1引脚控制其工作状态,待机时关闭语音功放,语音通话时开启语音功放。VCCGNDR24U5ResSHDN18SHTNVO2C2627C27GNDBYPASSGNDVCC1uF1uFR3736GND+INVDD1k+DAC2C29R25R2645-INVO110410k5.6k-C28R35R27C30LM4890LS1VCC6831k10k103SpeakerR36GND1k图3–5语音输出电路原理图3.6Wi-Fi模块电路Wi-Fi模块电路如图3–6所示,Wi-Fi模块WM-G-MR-08外围电路也比较简单,主要包括天线匹配电路、接收低噪声放大器(LowNoiseAmplifier,LNA)的自动增益控制(AutomaticGainControl,AGC)设置。Wi-Fi模块通过SDIO(SecureDigitalInputandOutput,安全数字输入输出)接口与STM32微控制器通信,SDIOCMD为命令信号,SDIOCK为时钟信号,SDIOD[3:0]为数据信号。为降低功耗,Wi-Fi模块也有掉电控制引脚PDn,低电平时模块进入掉电模式,耗电极低,高电平时模块进入工作模式。由STM32微控制器的PB5引脚控制Wi-Fi模块掉电或工作。3.7呼叫按钮与掉电管理电路考虑到病房语音呼叫的特殊性,系统硬件一般情况下使用外部直流电源供电,遇到停电等特殊情况时使用内部电池作为后备电源。为尽量降低功耗,延长电池寿命,使用PCF8563作为定时掉电管理芯片。呼叫按钮与掉电管理电路如图3–7所示,常态下系统电源关闭,在三种情况下系统会被唤醒:(1)PCF8563经过18 第三章系统硬件的设计与实现J1VCC1L2C33ANT1.2pFWIFI13.3nHL33334354647L4WM-G-MR-082.7nH4.7nH432908-22101BC32VDDVDDVDDVDDVDD5.5pF114GNDANT1SPI_CLK_ENR29316SDIO_D3ANT2CD/DAT[3]Res4017SDIO_D2AGC1DAT[2]/SPI_INInR304218SDIO_D1AGC2DAT[1]/SPI_SDORes5019SDIO_D0VCCVIODAT[0]/SPI_SCSn4120SDIO_CMDLEDCMD/SPI_SDIR32Wifi_En6521SDIO_CKPDnCLK/SPI_SCKRes6669VDDSHISPI_RSTn70Sleep_CLKGNDVSSVSSVSSVSSVSSVSSVSSVSS42604544433736GND图3–6Wi-Fi模块电路原理图程序预定的时间后输出一唤醒信号(类似于关机闹钟);(2)语音呼叫按钮被按下;(3)防破坏拆除按钮被断开。任何一种情况都会使系统电源开启,STM32微控制器上电。STM32开始工作后首先判断唤醒原因并执行不同的程序:(1)定时唤醒,使能Wi-Fi模块,尝试向服务器发送心跳数据包表明自己工作正常并判断网络是否通畅;(2)语音呼叫按钮S2被按下,定时唤醒,使能Wi-Fi模块,尝试向服务器发送语音呼叫请求;(3)防破坏拆除按钮S1被断开,说明设备被人为破坏,警报音响起,同时使能Wi-Fi模块,尝试向服务器发送报警数据包。OpenS1R8GND100kSW-2D1ALMS2R9Power_enQ1VBATVBAT10kSW-22N3906C7GNDR1012pU310kXTAL213INTOSCIINT32.768k26SCLOSCOSCL85SDAVBATVDDSDA47C9VSSCLKOUT104R12R13PCF856310k10kGNDVCC图3–7呼叫按钮与掉电管理电路原理图19 电子科技大学硕士学位论文3.8系统硬件的PCB版图系统硬件的原理图和PCB版图均使用AltiumDesigner设计,PCB三维效果图如图3–8所示。PCB尺寸65mm×56mm,外壳使用标准“八六盒”(86mm×86mm)。(a)(b)图3–8系统硬件的PCB版图(a)Toplayer;(b)Bottomlayer3.9本章小结本章主要阐述了系统硬件的总体设计方案,对系统电源、微控制器、语音输入输出电路、Wi-Fi模块电路等各个功能的硬件电路进行了分别详细的阐述,并给出了对应的电路原理图。20 第四章系统软件的设计与实现第四章系统软件的设计与实现本文拟设计与的实现的病房语音呼叫系统,研究的重点除了硬件上的设计之外,再者就是软件上的创新。众所周之,任何一个自动化系统都是由硬件系统与软件系统两部分组成的。硬件是系统实现功能的基础,软件则是系统功能实现的核心。软件系统的可靠稳定性也将对系统的整体性能产生重要影响。本系统的设计特别考虑了在不同的工作环境下,如何保证病房语音呼叫系统正常工作,这就要求系统要具备强健的抗干扰能力。此系统的抗干扰问题的解决与抗干扰功能的设计也就成为了软件系统设计的重要内容。通常来讲,监测系统上的抗干扰设计既可以通过硬件来实现,也可以通过软件来实现。本文探讨的重点是如何通过软件和硬件结合来解决系统的抗干扰问题。4.1系统嵌入式软件的设计与实现4.1.1RT-Thread嵌入式实时操作系统简介RT-Thread是一个开放源代码的实时操作系统,并且商业许可证非常宽松的实时操作系统。图4–1是RT-Thread及外围组件的基本框架图。RT-ThreadKernel内艹核部艹分包艹括了艹RT艹-T艹hr艹ea艹d的艹核心艹代码,艹包艹括对艹象管艹理器,艹线艹程管艹理及艹调度,艹线艹程间艹通信艹等的艹微小艹内核艹实现艹(最艹小能艹够到艹达4艹k艹RO艹M,艹1k艹R艹AM艹体积艹占用艹)。艹内核艹库是艹为了艹保证艹内核艹能够艹独立艹运作艹的一艹套小艹型类艹似C艹库实艹现(艹这部艹分根艹据编艹译器艹自带艹C库艹的情艹况会艹有些艹不同,艹使艹用G艹CC艹编译艹器时,艹携艹带更艹多的艹标准艹C库艹实现艹)。艹CP艹U及艹板级艹支持艹包包艹含了艹RT艹-T艹hr艹ea艹d支艹持的艹各个艹平台艹移植艹代码,艹通艹常会艹包含艹两个艹汇编艹文件,艹一艹个是艹系统艹启动艹初始艹化文艹件,艹一个艹是线艹程进艹行上艹下文艹切换艹的文艹件,艹其他艹的都艹是C艹源文艹件。RT-Thread实艹时操艹作系艹统核艹心是艹一个艹高效艹的硬艹实时艹核心,艹它艹具备艹非常艹优异艹的实艹时性、艹稳艹定性、艹可艹剪裁艹性。艹最小艹可以艹到3艹KB艹R艹OM艹占用、艹1艹KB艹R艹AM艹占用。4.1.1.1内核对象系统实艹时线艹程操艹作系艹统内艹部采艹用面艹向对艹象的艹方式艹设计,艹内艹建内艹核对艹象管艹理系艹统,艹能够艹访问艹/管艹理所艹有内艹核对艹象。艹内核艹对象艹包含艹了内艹核中艹绝大艹部分艹设施,艹而艹这些艹内核艹对象艹可艹以是艹静态艹分配艹的静艹态对艹象,艹也可艹以是艹从系艹统内艹存堆艹中分艹配的艹动态艹对象。艹通艹21 电子科技大学硕士学位论文图4–1RT-Thread及外围组件基本框架Á过内艹核对艹象系艹统,艹RT艹-T艹hr艹ea艹d可艹以做艹到不艹依赖艹于具艹体的艹内存艹分配艹方式,艹伸艹缩性艹得到艹极[24]艹大的艹加强。4.1.1.2任务/线程调度支艹持以艹线程艹为基艹本调艹度单艹位的艹多任艹务系艹统。艹调度艹算法艹是基艹于优艹先级艹的全艹抢占艹式线艹程调艹度,艹支持艹25艹6个艹线程艹优先艹级(艹亦可艹配置艹成3艹2个艹线程艹优先艹级),艹0艹优先艹级代艹表艹最高艹优先艹级,艹25艹5优艹先级艹留给艹空闲艹线程艹使用艹;相艹同优艹先级艹上支艹持多艹个线艹程,艹这些艹相同艹优先艹级的艹线程艹采用艹可设艹置时艹间片艹长度艹的时艹间片艹轮转艹调度艹;调艹度器艹寻找艹下一艹个最艹高艹优先艹级就艹绪线艹程的艹时间艹是恒艹定的艹(O艹(1艹))。艹系艹统不艹限制艹线程艹数量艹的多艹少,艹只与[24]艹物理艹平台艹的具艹体内艹存相关。4.1.1.3同步机制系艹统支艹持s艹em艹ap艹ho艹re,艹m艹ut艹ex艹等线艹程间艹同步艹机制。艹m艹ut艹ex艹采用艹优先艹级继艹存方艹式以艹防止艹优先艹级翻艹转。艹se艹ma艹ph艹or艹e释艹放动艹作可艹安全艹用于艹中断艹服艹务例艹程中。艹同艹步机艹制支艹持线[24]艹程按艹优先艹级等艹待或艹按先艹进先艹出方艹式获艹取信艹号量艹或互艹斥锁。Á图取自《RT-Thread实时操作系统编程指南0.3.0》P2522 第四章系统软件的设计与实现4.1.1.4通信机制系艹统支艹持e艹ve艹nt,艹m艹ai艹lb艹ox,艹m艹es艹sa艹ge艹q艹ue艹ue艹通信艹机制艹等。艹ev艹en艹t支艹持多艹事件艹”或艹触发艹”及艹”与艹触发艹”,艹适合艹于线艹程等艹待多艹个事艹件情艹况。艹ma艹il艹bo艹x中艹一个艹ma艹il艹的长艹度固艹定为艹4字艹节,艹效率艹较m艹es艹sa艹ge艹qu艹eu艹高。艹通信艹设施艹中的艹发送艹动作艹可安艹全用艹于中艹断服艹务例艹程中[24]。艹通艹信机艹制支艹持线艹程按艹优先艹级等艹待或艹按先艹进先艹出方艹式获艹取。4.1.1.5时钟/定时器系艹统默艹认使艹用时艹钟节艹拍来艹完成艹同优艹先级艹任务艹的时艹间片艹轮转艹调度艹;线艹程对艹内核艹对象艹的时艹间敏艹感性艹是通艹过系艹统定艹时器艹来实艹现的艹;定艹时器艹又分艹成了艹硬定艹时器艹和软艹定时[24]艹器,艹一艹次定艹时及艹周期艹性定艹时。4.1.1.6内存管理系艹统支艹持静艹态内艹存池艹管理艹及动艹态内艹存堆艹管理。艹从艹静态艹内存艹池中艹获取艹/释艹放内艹存块艹时间艹恒定,艹而艹当内艹存池艹空时,艹可艹根据艹申请艹线程艹请求艹把申艹请线艹程挂艹起、艹立刻艹返回、艹或艹等艹待一艹段时艹间仍艹未获艹得返艹回。艹当其艹他线艹程释艹内存艹块到艹内存艹池时,艹将艹把挂艹起的艹线程艹唤醒。艹对艹于系艹统内艹存紧艹张的艹系统,艹R艹T-艹Th艹re艹ad艹也提艹供了艹小型艹的伙艹伴内艹存管艹理算艹法。艹而艹对于艹拥有艹大一艹些内艹存的艹嵌入艹式系艹统,艹RT艹-T艹hr艹ea艹d提艹供了艹性能艹非常艹高效艹的S[24,25]艹LA艹B内艹存管艹理系艹统。4.1.1.7诊断通艹过系艹统提艹供的艹Fi艹nS艹H艹sh艹el艹l系艹统,艹能够艹查看艹到线艹程,艹信号艹量,艹互斥艹锁,艹事件,艹邮[24,26]艹箱,艹消息艹队列艹的运艹行情艹况,艹以及艹各个艹线程艹的栈艹使用艹情况。4.1.2RT-Thread在STM32上的移植与配置ARM○RCortex○R-M3微艹处理艹器可艹以说艹是和艹AR艹M7艹TD艹MI艹微处艹理器艹完全艹不同艹的体艹系结艹构,艹在进艹行R艹T-艹Th艹re艹ad艹移植艹时首艹先需艹要把艹线程艹的上艹下文艹切换艹移植好。通常的ARM移植,RT-Thread需要手动的保存当前模式下几乎所有寄存器,R0–R13,LR,PC,CPSR,SPSR等。在Cortex○R-M3微处理器中,则不需要保存全部的寄存器到栈中,因为当一个异常触发时,Cortex○R-M3硬件能够自动的完成部分的寄存器保存。当要进行切换时(假设从Thread[from]切换到Thread[to]),通过rthwcontextswitch函数触发一个PenSV异常。异常产生时,Cortex○R-M3会把PSR,PC,LR,R0–R3,R12自动压入当前线程的栈中,然后切换到PenSV异常处理。到PenSV异常后,Cortex○R-M3工作模式切换到Handler模式,由函数rthwpendsv进行处理。23 电子科技大学硕士学位论文rthwpendsv函艹数会艹载入艹切换艹出线艹程和艹切换艹到线艹程的艹栈指艹针,艹如果艹切换艹出线艹程的艹栈指艹针是艹0那艹么表艹示这艹是第艹一次艹线程艹上下艹文切艹换,艹不需艹要对艹切换艹出线艹程做艹压栈艹动作。艹如艹果切艹换出艹线程艹栈指艹针非艹零,艹则把艹剩余艹未压艹栈的艹R4艹–艹R艹11艹寄存艹器依艹次压艹栈;艹然后艹从切艹换到艹线程艹栈中艹恢复艹R4艹–艹R艹11艹寄存艹器。艹当从艹Pe艹nd艹SV艹异常艹返回艹时,艹PS艹R,○R艹PC,艹L艹R,艹R0艹–艹R艹3,艹R1艹2等艹寄存艹器由CortexM3自动恢复。当艹中断艹达到艹时,艹当前艹线程艹会被艹中断艹并把艹PC,艹P艹SR,艹R艹0艹–艹R3,艹R艹12艹等压艹到当艹前线艹程栈艹中,艹工作艹模式艹切换艹到H艹an艹dl艹er艹模式。艹在艹运行艹中断艹服务艹例程艹期间,艹艹如果艹发生艹了线艹程切换(调用rtschedule),会先艹判断艹当前艹工作艹模式艹是否艹是H艹an艹dl艹er艹模式艹(依艹赖于艹全局艹变量rtinterruptnest),如艹果是艹则调艹用rthwcontextswitchinterrupt函数进行伪切换[27]:在rthwcontextswitchinterrupt函艹数中,艹艹将把艹当前艹线程艹栈指艹针赋艹值到rtinterruptfromthread变艹量上,艹艹把要艹切换艹过去艹的线艹程栈艹指针艹赋值艹到rtinterrupttothread变艹量上,艹艹并设艹置中艹断中艹线程艹切换艹标志艹rtthreadswitchinterrputflag为1。在○R艹最后艹一个艹中断艹服务艹例程艹结束艹时,Cortex-M3将艹去处艹理P艹en艹dS艹V异艹常,艹因为艹Pe艹nd艹SV艹异常艹的优艹先级艹是最艹低的,艹所艹以只艹有触艹发过艹Pe艹nd艹SV艹异常,艹它艹将总艹是在艹最后艹进行[28]艹处理。这里就不进一步详细讨论RT-Thread在STM32上的移植了。事实上,RT-Thread开发组已经做了好STM32系列微控制器的大部分移植工作,从官网下载源码后作简单修改即可完成符合自身硬件的移植工作。前面讨论了,嵌入式操作系统是有很高的可裁剪性的,RT-Thread也不例外,通过启用或者关闭rtconfig.h头文件中的宏定义就可以很方便地保留或者裁剪系统的功能代码。本系统中将保留RT-Thread的默认配置选项:1.线程优先级支持,32优先级2.内核对象支持命名,4字符3.操作系统节拍单位,10毫秒(100拍/秒)4.支持钩子函数5.支持信号量、互斥锁6.支持事件、邮箱、消息队列7.支持内存池8.支持RT-Thread自带的动态堆内存分配器4.1.3系统嵌入式软件的总体框架系统嵌入式软件的总体框架图见图4–2,基于RT-Thread的嵌入式实时操作系统是核心,其余输入输出设备的驱动程序开发均基于RT-Thread。24 第四章系统软件的设计与实现TCP/IPWIFI模块驱动程序语音语音输入RT-ThreadforSTM32输出驱动嵌入式实时操作系统驱动程序程序按键中断服务程序图4–2系统嵌入式软件的总体框架4.1.4建立系统主要线程本应用中嵌入式系统主要有两个线程:LED指示灯线程和UDP通信线程。采用事件驱动方式:无事件发生时系统空闲,执行操作系统的自带的idle线程;有事件发生时发送信号量或者消息完成进程间同步。4.1.4.1LED指示灯线程为LED线程分配堆栈和声明线程:01staticrtuint8tledstack[RTSTACKSIZE];02staticstructrtthreadledthread;定义LED线程入口并完成功能程序:01staticvoidledthreadentry(void*parameter)02{03rtuint32tledmode=*((rtuint32t)parameter);04rthwledinit();//LED对应IO初始化05//限于篇幅,以下仅给出主要逻辑框架,不列举完整代码06while(1)07{08switch(ledmode)09{10caseLEDMODEBOTHON:11//红色LED亮;绿色LED亮;12break;13caseLEDMODEBOTHOFF:14//红色LED灭;绿色LED灭;15break;25 电子科技大学硕士学位论文16caseLEDMODEREDON:17//红色LED亮;绿色LED灭;18break;19caseLEDMODEGREENON:20//红色LED灭;绿色LED亮;21break;22caseLEDMODEREDTOGGLE:23//红色LED取反;绿色LED灭;24break;25caseLEDMODEGREENTOGGLE:26//红色LED灭;绿色LED取反;27break;28caseLEDMODEBOTHTOGGLE:29//红色LED取反;绿色LED取反;30break;31}32rtthreaddelay(RTTICKPERSECOND/2);33}34}在rtapplicationinit()中初始化并启动LED线程:01intrtapplicationinit()02{03rtthreadtinitthread;04rterrtresult;0506/*initledthread*/07result=rtthreadinit(&ledthread,08”led”,09ledthreadentry,RTNULL,10(rtuint8t*)&ledstack[0],sizeof(ledstack),30,1);11if(result==RTEOK)12{13rtthreadstartup(&ledthread);26 第四章系统软件的设计与实现14}15/*创建一个用于初始化其他线程的线程”init”*/16initthread=rtthreadcreate(”init”,17rtinitthreadentry,RTNULL,182048,8,20);1920if(initthread!=RTNULL)21rtthreadstartup(initthread);2223return0;24}以上程序专门创建了一个“init”线程用来对其他用户线程完成初始化工作。4.1.4.2UDP通信线程为UDP通信线程分配堆栈和声明线程:01staticrtuint8tudp1stack[RTSTACKSIZE];02staticstructrtthreadudp1thread;定义UDP通信线程入口并完成功能程序:01staticvoidudp1threadentry(void*parameter)02{03//限于篇幅,这部分代码仅给出大致框架,不列举全部内容;04//变量定义、声明和初始化;05//初始化WIFI模块配置;06//尝试通过WIFI连接到路由器;07//创建UDP连接到服务器;08//更新当前命令;09while(1)10{11pt[1]=butncmd;12switch(butncmd)13{14caseBUTNCMDREPORTRQST:15//向服务器报告系统状态;16break;27 电子科技大学硕士学位论文17caseBUTNCMDVOICERQST:18//向服务器发出语音呼叫请求;19break;20caseBUTNCMDVOICEDATA:21//向服务器发送本机采集到的语音数据流;22break;23caseBUTNCMDCONFIGRQST:24//向服务器发出系统参数配置请求;25break;26caseBUTNCMDCONFIGRPLY:27//向服务器恢复已经收到参数配置信息;28break;29caseBUTNCMDSETALARM:30//向服务器发出语音呼叫请求;31break;32caseBUTNCMDNONE:33//空命令;34break;35caseBUTNCMDUDPRQST://UDP打洞请求36//向服务器发出UDP打洞请求(用于系统与服务器不在同一网段的情况);37break;38caseBUTNCMDSYSRESET:39//系统出错时进行复位;40break;41}42}43}在rtinitthreadentry中初始化并启动UDP线程:01result=rtthreadinit(&udp1thread,02”udp1”,03udp1threadentry,RTNULL,04(rtuint8t*)&udp1stack[0],sizeof(udp1stack),10,20);28 第四章系统软件的设计与实现05if(result==RTEOK)06{07rtthreadstartup(&udp1thread);08}4.1.5按键中断服务程序配置按键对应的IO引脚为带外部中断的输入模式:01voidkeyioinit(void)02{03GPIOInitTypeDefGPIOInitStructure;04RCCAPB2PeriphClockCmd(RCCAPB2PeriphGPIOA|RCCAPB2PeriphGPIOB|RCCAPB2PeriphAFIO,ENABLE);05//以下为按键输入引脚,用于判断外部事件06GPIOInitStructure.GPIOPin=OPENKEY|ALARMKEY;//OPENKEY:PB11&ALARMKEY:PB1007GPIOInitStructure.GPIOSpeed=GPIOSpeed2MHz;08GPIOInitStructure.GPIOMode=GPIOModeINFLOATING;09GPIOInit(GPIOB,&GPIOInitStructure);10GPIOEXTILineConfig(GPIOPortSourceGPIOB,GPIOPinSource10);11}使能按键对应的外部中断线,并配置为上升沿或下降沿触发中断:01voidkeyextiinit(void)02{03EXTIInitStruct.EXTILine=EXTILine10;//ALARMKEY04EXTIInitStruct.EXTIMode=EXTIModeInterrupt;05EXTIInitStruct.EXTITrigger=EXTITriggerFalling;06EXTIInitStruct.EXTILineCmd=ENABLE;07EXTIInit(&EXTIInitStruct);08}配置按键对应外部中断的优先级:01voidkeynvicinit(void)02{29 电子科技大学硕士学位论文03NVICInitTypeDefNVICInitStructure;04//使能按键所在的外部中断通道05NVICInitStructure.NVICIRQChannel=EXTI1510IRQn;06//先占优先级4位,共16级07NVICInitStructure.NVICIRQChannelPreemptionPriority=0x02;08//先占优先级0位,从优先级4位09NVICInitStructure.NVICIRQChannelSubPriority=0x02;10//使能外部中断通道11NVICInitStructure.NVICIRQChannelCmd=ENABLE;12NVICInit(&NVICInitStructure);13}编写按键中断服务程序:01voidEXTI1510IRQHandler(void)02{03u8event;04/*enterinterrupt*/05rtinterruptenter();//RT-Thread中断嵌套06if(SET==EXTIGetITStatus(EXTILine10)//OPENKEY&07||SET==EXTIGetITStatus(EXTILine11))//ALARMKEY08{09event=getkeyevent();10if(event==EVENTALARM)//语音呼叫请求11butncmd=BUTNCMDVOICERQST;12elseif(event==EVENTOPEN)//防破坏拆除报警13butncmd=BUTNCMDSETALARM;14if(servermode==SERVERMODENAT)//打洞服务器15{16butncmd=BUTNCMDUDPRQST;//先打洞17nextcmd=butncmd;//后连接目标服务器18}19EXTIClearITPendingBit(EXTILine11|EXTILine10);20}21/*leaveinterrupt*/30 第四章系统软件的设计与实现22rtinterruptleave();//RT-Thread中断嵌套23}获取按键外部中断对应的事件类型:01u8keygetevent()02{03u32open,alarm;04open=GPIOReadInputDataBit(GPIOB,OPENKEY);05alarm=GPIOReadInputDataBit(GPIOB,ALARMKEY);06if(!open)07returnEVENTALARM;//语音呼叫按键被按下08elseif(!alarm)09returnEVENTOPEN;//硬件放破坏拆除按键被断开10else//以上两种情况都不是,11returnEVENTTIMER;//那么肯定是被定时唤醒的12}4.1.6语音输入驱动程序配置语音输入对应的IO引脚为模拟输入模式,配置ADC的采样分辨率为8bit,采样速率为8KSPS,为ADC启动DMA(DirectMemoryAccess,直接存储访问)传输,采集到的语音数据流将被DMA交替地搬运到两个缓冲区:01voidaudioinputinit(void)02{03GPIOInitTypeDefGPIOInitStructure;04NVICInitTypeDefNVICInitStructure;05TIMTimeBaseInitTypeDefTIMTimeBaseStructure;06ADCInitTypeDefADCInitStructure;07DMAInitTypeDefDMAInitStructure;0809/*Enableperipheralclocks*/10/*EnableDMAclock*/11RCCAHBPeriphClockCmd(RCCAHBPeriphDMA1,ENABLE);12RCCAPB1PeriphClockCmd(RCCAPB1PeriphTIM3,ENABLE);13/*EnableADC1andGPIOAclock*/31 电子科技大学硕士学位论文14RCCAPB2PeriphClockCmd(RCCAPB2PeriphADC1|RCCAPB2PeriphGPIOA,ENABLE);15RCCADCCLKConfig(RCCPCLK2Div8);//72M/8=9M,ADCCLK最大不超过14M1617/*GPIOconfiguration*/18//配置IO为模拟输入模式;19/*Timebaseconfiguration*/20//通过配置TIM时间基准来配置ADC采样率为8KSPS;21//配置DMA1CH1NVIC优先级;22/*DMAchannel1configuration*/23//DMA传输相关配置;24/*EnableDMAchannel1*/25DMACmd(DMA1Channel1,ENABLE);26/*ADC1configuration*/27//ADC相关配置:时钟、转换时间、分辨率、数据对齐方式等;28//使能定时器、ADC和DMA29}4.1.7语音输出驱动程序配置语音输入对应的IO引脚为模拟输入模式,配置DAC的采样分辨率为8bit,转换速率为8KSPS,为DAC启动DMA传输,从UDP服务端接收到的语音数据流将被交替地存储到两个缓冲区,DMA则会按转换速率依次启动DAC将数据流转换成对应的模拟语音信号输出:01voidaudiooutputinit(void)02{03GPIOInitTypeDefGPIOInitStructure;04TIMTimeBaseInitTypeDefTIMTimeBaseStructure;05NVICInitTypeDefNVICInitStructure;06DMAInitTypeDefDMAInitStructure;07DACInitTypeDefDACInitStructure;0809//使能相关外设的时钟:GPIO/TIM/DAC/DMA;10//配置音频输出对应IO引脚为模拟输出模式;32 第四章系统软件的设计与实现11//通过配置TIM配置DAC的转换速率为8KSPS;12//DAC初始化:转换时间、分辨率、数据对齐方式等;13//配置DMA2CH4NVIC中断优先级;14//为DAC配置DMA传输条件:源地址、目的地址、位宽等;15//使能TIM、DAC、DMA;16}语音通话建立后开启语音输入输出功能:01voidaudioon()02{03audioinputinit();//语音输入初始化04audiooutputinit();//语音输出初始化05GPIOSetBits(GPIOB,AUDIOPA);//开启音频功放06}语音通话结束后关闭语音输入输出功能:01voidaudiooff()02{03GPIOResetBits(GPIOB,AUDIOPA);//关闭音频功放04ADCCmd(ADC1,DISABLE);//关闭ADC105ADCDMACmd(ADC1,DISABLE);//关闭ADC1的DMA功能06DMACmd(DMA1Channel1,DISABLE);//关闭DMA1第1通道07DMACmd(DMA2Channel4,DISABLE);//关闭DMA2第4通道08//DACCmd(DACChannel1,DISABLE);//关闭DAC第1通道09DACCmd(DACChannel2,DISABLE);//关闭DAC第2通道10//DACDMACmd(DACChannel1,DISABLE);//关闭DAC第1通道的DMA功能11DACDMACmd(DACChannel2,DISABLE);//关闭DAC第2通道的DMA功能12TIMCmd(TIM2,DISABLE);//关闭ADC触发时钟13TIMCmd(TIM3,DISABLE);//关闭DAC触发时钟14}4.1.8Wi-Fi模块驱动程序由于Wi-Fi模块驱动程序非常庞大,在此仅示意性地给出Wi-Fi初始化顶层API的部分程序:01voidwifiinit()33 电子科技大学硕士学位论文02{03wifipoweron();//使能WIFI模块04timerbaseconfig();//SDIO接口时基配置05sysflag.status=onconnect;06sysflag.waittime=160;07loadnetcfg();//加载网络参数配置信息08meminit();//LWIP内存初始化09//初始化marvell模块驱动,包括SDIO设备枚举,加载设备固件等操作10priv=initmarvelldriver();11//扫描wifi网,结果存放在priv->network数据域中,使用bssdescriptor结构体描述12lbsscanworker(priv);13//rtkprintf(”scanningfinish...∖r∖n”);14pskout=memmalloc(32);//为结构体申请内存15marvelassocnetwork(priv,marvelssid,marvelkey,marvelmode);//关联WIFI网络16memfree(pskout);//释放内存17}至此,嵌入式软件的设计与实现部分阐述完毕。4.2系统上位机软件的设计与实现4.2.1开发工具简介病房语音呼叫系统的上位机软件拟采用VisualC#集成开发环境来设计和完成。VisualC#是美国Microsoft公司设计和推出的一款面向Windows操作系统的可视化编程工具,它不需要开发者编写大量的程序代码,常用的工具都是以控件的方式集成在开发包当中,当用户需要使用相关的控件时,只需要将控件拖到相对应的位置即可。VisualC#的最大优势是比较容易上手,开发者无论是刚刚接触编程的初级开发人员,还是资深的程序员开发者,都可以很快掌握VisualC#的开发方式和方法。使用VisualC#来开发基于接近开关的测试系统上位机软件使得系统的风险得到了大大的降低,还使得整个系统的开发效率得到了极大的提高,系统的维护和升级也变得相对简单和容易。VisualC#的主要技术特点为:34 第四章系统软件的设计与实现1.遵循面向对象的程序开发思想VisualC#循面向对象的程序开发思想其核心思想就是将复杂的系统设计分解成若干个具有独立功能且相对容易的对象集合。2.数据库交互能力十分强大VisualC#内部集成了多种数据访问控件,对于常规的ACCESS、SQLServ-er、Oracle等数据库都有相对应的控件,开发者在使用的时候只需要调用相关的控件即可完成对相关数据的读写等相关的操作。3.具有强大的事件驱动能力VisualC#具有强大的事件驱动能力,VisualC#是一种面向Windows操作系统的开发工具,所以它可以很好的响应Windows环境下的各种事件等操作。4.采用结构化的编程风格VisualC#常用的工具都是以控件的方式集成在开发包当中,当用户需要使用相关的控件时,只需要将控件拖到相对应的位置即可。VisualC#的最大优势是比较容易上手,开发者无论是刚刚接触编程的初级开发人员,还是资深的程序员开发者,都可以很快掌握VisualC#的开发方式和方法。4.2.2系统软件的需求分析4.2.2.1系统软件的功能性需求分析考虑到医院特殊的工作环境,病房语音呼叫系统软件的的功能性需求根据不同的病房场景主要划分为:普通病房、重症病房、产房。所有病房都需要的基本功能包括:病员信息的增删与修改、治疗方案和用药信息的登记、床位信息管理等。重症病房还需要更多的医疗仪器和设备支持,所以还需要增加医疗仪器和设备的调用和登记功能。针对产房,还需增加对婴儿的护理功能,主要包括婴儿信息跟踪、疫苗接种、母婴护理等。根据不同的操作对象属性又划分为:系统管理、语音控制、信息查询。系统管理主要面向对语音呼叫系统整体的管理,特别是涉及系统级权限的操作,例如用户增删、密码管理以及数据库相关的操作等。语音控制主要面向语音终端设备以及通信参数的配置与管理。信息查询顾名思义主要面向用户对系统数库中各种信息的查询操作。4.2.2.2系统软件的安全性需求分析病房语音呼叫系统软件对安全性的需要主要体现在软件运行环境的安全和数据安全两个方面。软件运行环境的安全要求用户对服务器的配置必须合理,采取35 电子科技大学硕士学位论文必要的防护措施,例如开启防火墙、安装反病毒软件等。数据安全则关系到庞大病员信息的保密性,因为所有数据都是通过数据库来管理的,因此数据安全主要在于数据库的安全。数据库的安全可以从三个方面着手:1.对数据库的操作必须进行合法性和安全性检查,例如写入的数据是否合法、语法是否合乎规则,这是对数据库最基本的保护措施。2.对数据必须根据敏感程度进行分级,对数据库的操作也必须进行相应的限制认证。不同敏感等级的数据需要不同等级的权限才能进行操作,这是最主要的保护措施。3.对数据库的关键数据必须进行备份,在条件允许的情况下最好是完全备份,以防因不可预见的灾难性故障(包括硬件或者软件的故障)导致的数据损坏或丢失。4.2.2.3系统软件的实时性需求分析病房语音呼叫系统能否及时响应病员的需求在很大程度上关系到病员生命和健康状况,这就对系统软件的实时性提出了要求。系统的实时性是建立在系统硬件和软件的实时性基础之上的,这也是为何终端设备的硬件采用了高性能的嵌入式处理器,同时,嵌入式系统软件也基于RT-Thread实时操作系统。系统的实时性还受网络通信的速率影响,这也是系统采用Wi-Fi接入的原因之一。最后,软件架构必须合理高效,只有合理的软件架构才能实现用户与数据的及时交互。4.2.3系统上位机软件的主要框架除了4.2.2节分析提到的系统上位机软件对功能性、安全性、实时性需求之外,医院病房语音呼叫系统在上位机软件设计过程中还应应该遵循系统兼容性好、开发周期短、操作简便等特点,故采用了C#作为开发语言。病房语音呼叫系统在上位机软件可以完成对测试系统多种工作参数的编程设置以及对测试数据的读取。病房语音呼叫系统的上位机软件功能结构如图4–3所示,从下到上按功能分为通信接口层、设备驱动层、中间件和数据库、应用层、用户接口层。最底层为通信接口层,上位机与嵌入式系统通过TCP/IP协议进行数据通信。设备驱动层负责语音输入输出设备的初始化、数据采集和转换、语音输出、网络设备控制等。中间件负责应用层和设备层之间的信息交换,数据库与中间件并列在中间层,顶层和底层需要长期存储的数据需要存储在数据库中时,也由中间件负责控制。应用层是语音呼叫系统上位机软件的各个核心功能模块所在层,所有应用模块通过中间件访问数据库或者底层设备,并将信息输出到用户界面。36 第四章系统软件的设计与实现图形化用户界面普通重症产房普通系统语音信息病房病房监护病房管理控制查询模块模块模块模块模块模块模块中间件和数据库语音语音设备驱动层输入输出TCP/IP通信接口层图4–3系统上位机软件的总体框架系统上位机软件的流程图见图4–4,软件启动后首先进行初始化,这一阶段主要包括环境变量的初始化、数据库接口初始化、通信接口初始化、用户界面初始化。初始化完成后默认是等待用户输入或者语音终端发送请求,这两者有任何一个有效输入都会触发程序进行数据解析,随后根据解析结果执行相应数据操作,操作完成后向语音终端发送确认包或者更新界面显示。根据系统数据安全要求,每一次数据操作都需要进行权限认证。启动初始化用户登录用户操作界面更新语音终端数据收发数据解析数据转换权限认证语音输入/输出数据库图4–4系统上位机软件的流程图4.2.4通信接口层通信接口层主要负责上位机系统与语音呼叫终端之间的数据交换和通信链路37 电子科技大学硕士学位论文管理,同时负责语音的输入与输出。4.2.4.1通信协议通信接口层首先应该规定好通信协议,通信双方按照通信协议进行数据的传输。由于RT-Thread已经对LwIP进行了移植,考虑到语音呼叫系统点(服务器)对面(大量的终端设备)的通信需求,采用UDP通信协议。由于UDP通信协议并不是面向连接的,协议层也不对数据传输的有效性进行检查,虽然这对语音通信数据来讲影响不大(语音数据如果偶尔发生丢包会表现出语音断续、卡顿,但并不会严重影响通话质量,除非因网络拥堵导致严重丢包),但是对一些关键数据(例如设备配置信息)的传输时,有必要引入数据校验机制,接收方需要对接收到的数据进行校验,校验失败的数据予以丢弃。通信数据包格式定义如表4–1所示,一个完整的数据包由1字节包头(服务端为0xAA,客户端为0x55)、2字节包长度、1字节包类型、可变字节数的数据域和2字节校验码组成表4–1通信数据包格式组成包头包长度包类型数据域校验码字节数121长度可变2服务端0xAALENGTHTYPEDATACHECKSUM客户端0x55LENGTHTYPEDATACHECKSUM4.2.4.2程序设计由于上位机代码量极大,限于这里仅简要介绍部分程序或给出代码框架,并不一一罗列。启动对话框程序时初始化并创建UDP通信连接:01publicpartialclassmyUdpClient:Form02{03//创建一个Thread实例04privateThreadthread1;05privateThreadthread2;06//创建一个UdpClient实例07privateUdpClientudpReceive;08privatebyte[]receivebytes;38 第四章系统软件的设计与实现09privatebyte[]sendbytes;10inttrys;11//privateDialogResultresult;1213publicmyUdpClient()14{15inti;16InitializeComponent();17CheckForIllegalCrossThreadCalls=false;18comboBox2.SelectedIndex=0;19comboBox3.SelectedIndex=0;20udpReceive=newUdpClient(60000);//新建UDP连接,端口6000021thread1=newThread(newThreadStart(ReceiveMessage));22thread1.Start();//新建并启动UDP接收线程23button1.Text=”停止监听”;24sendbytes=null;25comboBox1.Text=”没有待配置设备”;26comboBox4.SelectedIndex=0;27comboBox5.SelectedIndex=0;28}29}程序启动时创建UDP接收线程,单击发送数据或者配置终端设备等按钮时,创建UDP发送线程:01privatevoidmyUdpClientLoad(objectsender,EventArgse)02{03//程序启动时创建UDP接收线程04thread1=newThread(newThreadStart(ReceiveMessage));05thread1.Start();06}0708privatevoidBtnSendClick(objectsender,EventArgse)09{10//单击按钮时创建UDP发送线程39 电子科技大学硕士学位论文11thread2=newThread(SendMessage);12thread2.Start();13}以下程序通过按钮开启或关闭UDP端口监听功能:01privatevoidbutton1Click(objectsender,EventArgse)02{03if(button1.Text==”开始监听”)04{05udpReceive=newUdpClient(60000);06thread1=newThread(newThreadStart(ReceiveMessage));07thread1.Start();08button1.Text=”停止监听”;09}10elseif(button1.Text==”停止监听”)11{12//关闭UDP连接13udpReceive.Close();14//终止UDP接收线程15thread1.Abort();16button1.Text=”开始监听”;17}18}4.2.5数据库管理层数据库管理层主要负责语音呼叫终端的参数、病房信息、病员信息、用药信息等数据的存储,以及以上信息的检索与重定位。4.2.5.1数据库的建立依据系统的业务逻辑建立一套关系模型,再依据关系模型建立数据库。依据关系模型建立数据库是因为关系模型有如下优点:1.数据结构简单在关系模型中,数据模型是一些表格的框架,实体通过关系的属性(即表格的栏目)表示,实体之间的联系通过这些表格中的公共属性(可以不同40 第四章系统软件的设计与实现属性名,但必须同域)表示。结构非常简单,即使非专业人员也能一看就明白。2.查询与处理方便在关系模型中,数据的操作较非关系模型方便,它的一次操作不只是一个元组,而可以是一个元组集合。特别在高级语言的条件语句配合下,一次可操作所有满足条件的记录。3.数据独立性很高在关系模型中,用户对数据的操作可以不涉及数据的物理存储位置,而只须给出数据所在的表、属性等有关数据自身的特性即可,具有较高的数据独立性。4.坚实的理论基础与网状模型和层次模型不同,关系模型一开始便注重理论研究。在数据库领域专家的不懈努力下,关系系统的研究日趋完善,而且也促进了其它软件分支如软件工程的发展。不同的业务数据以表的方式在数据库中建立,这里仅以终端设备管理表为例介绍数据表在数据库中的建立。一份数据表可以包含若干字段,每一个字段可以指定一种数据类型(例如短文本、长文本、富文本、数字、时间、货币等),同时也可以根据需要给每个字段指定一个默认值。每一张数据表都必须有一个唯一的字段作为主键以作为区每条数据的依据,数据库默认的主键为ID,它是从1开始对每条数据的自动顺序编号。设备管理表的定义见表4–2,设备管理表包含的字段主要包括:设备编号、设备类型、设备名称、语音速率、设备状态、电池电量、网络状态、WIFISSID、WIFIPSWD(密码)、设备IP、设备广播端口、设备语音端口、默认网关、子网掩码、默认DNS、备用DNS、IP获取方式、服务器类型、服务器IP或URL、服务器广播端口、服务器语音端口,这些字段都是设备与上位机系统通信的关键参数。41 电子科技大学硕士学位论文表4–2设备管理表在数据库中的定义数据库字段数据类型默认取值备注ID自动编号-自增1,主键设备编号短文本DEVICE0001设备类型短文本00:客户端,1:服务器设备名称短文本Client0001语音速率数字8000单位:SPS设备状态数字00:出厂,1:正常,2:报警,3:通话电池电量数字1000%-100%网络状态数字00:正常,1:阻塞WIFISSID短文本WIFISSIDWIFIPSWD短文本WIFIPSWD设备IP短文本192.168.1.101设备广播端口数字60000设备语音端口数字65000默认网关短文本192.168.1.1子网掩码短文本255.255.255.0设备默认DNS短文本0.0.0.0设备备用DNS短文本0.0.0.0IP获取方式数字00:DHCP,1:STATICIP服务器类型数字00:IP,1:URL服务器IP短文本192.168.1.2服务器URL短文本www.url.com服务器广播端口数字60000服务器语音端口数字650004.2.5.2数据库的管理对用户来说,直接操作数据库的数据是很繁琐的,因此数据库系统分成了三级模式结构,如图4–5所示。模式是数据库系统结构的中间层,它是数据的逻辑结构(数据项的名字、类型、取值范围等)、数据之间的联系、数据相关的安全性和完整性要求。一个数据库系统只有一个模式,它与数据的物理存储和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关。SQL提供了非常丰富的语句对数据库进行查询、排序、增加、删除等操作,因此数据库管理层的代码量也非常庞大,限于篇幅,这里仅给出基本SQL操作语句的C#代码作为示例[29]。42 第四章系统软件的设计与实现应用A应用B应用C应用D应用E外模式1外模式2外模式3外模式/模式映射模式内模式/模式映射内模式数据库图4–5数据库的三级模式结构01publicclassSQLHelper02{03//新建SQLHelper类(支持基本QL语句)04privateSqlConnectionsqlCon=null;05privateSqlCommandcmd=null;06privateSqlDataReadersdr=null;07publicSQLHelper()08{09sqlCon=newSqlConnection(ConfigurationManager.ConnectionStrings[”ConnStr”].ConnectionString);10}11///

12///打开数据库连接13///14///15privateSqlConnectionGetCon()16{17if(sqlCon.State==ConnectionState.Closed)18{19sqlCon.Open();20}21returnsqlCon;43 电子科技大学硕士学位论文22}23///24///执艹行不艹带参艹数的艹增删艹改s艹ql艹语句艹或存艹储过艹程25///26///增艹删改艹sq艹l语艹句或艹存储艹过程27///命艹令类艹型28///29publicintExecuteNonQuery(stringcmdText,CommandTypect)30{31intrex;32try33{34SqlCommandsqlcom=newSqlCommand(cmdText,GetCon());35sqlcom.CommandType=ct;36rex=sqlcom.ExecuteNonQuery();37}38catch(Exceptionex)39{4041throwex;42}43finally44{45if(sqlCon.State==ConnectionState.Open)46{47sqlCon.Close();48}49}50returnrex;51}52///53///执艹行带艹参数艹的增艹删改艹SQ艹L语艹句或艹存储艹过程54///44 第四章系统软件的设计与实现55///增艹删改艹SQ艹L语艹句或艹存储艹过程56///命令类型57///58publicintExecuteNonQuery(stringcmdText,SqlParameter[]paras,Com-mandTypect)59{60intres;61using(cmd=newSqlCommand(cmdText,GetCon()))62{63cmd.CommandType=ct;64cmd.Parameters.AddRange(paras);65res=cmd.ExecuteNonQuery();66}67returnres;68}69///70///执艹行带艹参数艹的查艹询S艹QL艹语句艹或存艹储过艹程71///72///查艹询S艹QL艹语句艹或存艹储过艹程73///参艹数集艹合74///命艹令类艹型75///76publicDataTableExecuteQuery(stringcmdText,SqlParameter[]paras,CommandTypect)77{78DataTabledt=newDataTable();79cmd=newSqlCommand(cmdText,GetCon());80cmd.CommandType=ct;81cmd.Parameters.AddRange(paras);82using(sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))83{84dt.Load(sdr);85}45 电子科技大学硕士学位论文86returndt;87}88///89///执艹行不艹带参艹数的艹查询艹SQ艹L语艹句或艹存储艹过程90///91///查艹询S艹QL艹语句艹或存艹储过艹程92///命艹令类艹型93///94publicDataTableExecuteQuery(stringcmdText,CommandTypect)95{96DataTabledt=newDataTable();97cmd=newSqlCommand(cmdText,GetCon());98cmd.CommandType=ct;99using(sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))100{101dt.Load(sdr);102}103returndt;104}105}4.2.6图形化用户界面图形化用户界面是提供给用户的人机接口,负责接收用户的输入操作,并将相关信息作为结果反馈给用户。图形化用户界面应该做得极度简洁,一目了然,避免太过繁杂,否则反而不便于用户操作。基于这一准则设计的用户界面如图4–6所示。用户界面为用户提供了每一个主功能模块的快捷按钮,并额外添加了一个快捷搜索按钮,用户可以通过搜索框输入关键词快速地进行信息检索。左侧以树状图显示了各个功能模块的层次信息,用户也可以通过展开功能树直接点击相应功能。考虑到各项工作的开展、记录和管理都离不开时间,特地在主界面添加了一个日历月视图。46 第四章系统软件的设计与实现图4–6图形化用户界面4.2.6.1普通病房模块普通病房模块是对普通的医院住院病人进行监护和管理的功能模块,主要针对普通病房进行巡检信息、病人用药信息以及联系方式等基本信息的管理,该模块可以及时回应病人的呼叫请求。普通病房模块的功能框图见图4–7。普通病房模块人病药巡联语信员人品查系音息信信信信方信管息息息息式息理信息图4–7普通病房模块功能框图4.2.6.2重症病房模块重症监护病房模块是本系统重要的功能模块之一,也是医院住院病房重点关47 电子科技大学硕士学位论文注的地方,该模块分为病人信息、床位信息、用药信息等。通过重症病房模块,医护人员可以随时监护重症病人的情况并及时响应病人或病人家属的语音呼叫。重症病房模块的功能框图见图4–8。重症病房模块基病管语床用备本人理音位药注信信员信信信管息息管息息息理设理管管置理理图4–8重症病房模块功能框图4.2.6.3产房监护模块产房监护模块是语音系统的又一个重要模功能块,该模块不仅负责维护产妇的信息,同时也负责及时地关注婴儿的信息,对产妇信息和婴儿信息进行双重的维护。产房监护模块的具体功能框图如图4–9所示。产房监护模块产婴巡用语婴产妇儿检药音儿妇信信管信信监管息息理息息护理图4–9产房监护模块功能框图4.2.6.4系统管理模块系统管理模块是对整个系统的稳定运行以及数据进行管理的重要功能模块,主要包对系统数据、语音参数、病人信息、系统日志以及用户权限申请等进行监视和管理。具体功能模块图如图4–10所示。48 第四章系统软件的设计与实现系统管理模块语病信语数日权音人息音据志限管管处存库管管理理理储管理理理图4–10系统管理模块功能框图4.2.6.5语音控制模块语音控制模块主要负责对语音通信进行控制和参数配置,比如没有病人的病房或者没有病人使用的床位,语音控制模块可以控制对应病房或者床位的语音呼叫设备关闭语音模块。用户也可以通过语音控制模块确认是哪个床位发起的语音呼叫,可以对语音进行存储。所有语音呼叫设备的设备号、语音采样率、服务器IP和端口号等通信参数配置也是通过语音控制模块进行的。因此,语音控制模块是整个系统语音控制中枢,具体的功能模块图如图4–11所示。语音控制模块语信确确语语病音息认定音音房设修完病开控显置改整房启制示信息图4–11语音控制模块功能框图4.2.6.6信息查询模块为方便用户以任意关键词进行信息查询,系统还提供了信息查询功能。用户可以对系统中的各种信息可以进行查询,例如设备编号、设备状态、病人信息、语音信息等。同时信息查询模块还可以以报表的形式导出和打印相关的查询结果。具体功能如图4–12所示。49 电子科技大学硕士学位论文信息查询模块报输查病病语用表出看房人音药打结信查查查查印果息询询询询图4–12信息查询模块功能框图4.3本章小结本章主要完成了病房语音呼叫系统软件部分的详细设计与实现。首先对系统软件设计所应遵循的总体原则进行了介绍和说明,再以逐步推进的方式分别对系统嵌入式软件和上位机软件进行了设计阐述。嵌入式软件部分对操作系统、数据采集及处理等、UDP通信等进行了详细的论述。上位机软件部分对病房语音呼叫系统的主要框架和各个功能模块进行了阐述。50 第五章系统的部署与联合测试第五章系统的部署与联合测试5.1系统软件安装系统部署和测试之前,首先应该给目标计算机安装系统上位机软件,因为后续的设备参数配置、联合调试都倚赖系统的上位机软件。安装方法和步骤跟常规软件的安装完全相同,在此不做赘述。5.2系统网络部署系统部署时需要给系统终端提供外部+5V直流电源,因此首先需要铺设统一供电的电缆或者给每个终端设备提供一个单独的小型化AC220V/DC+5V电源适配器。由于系统使用Wi-Fi作为网络接入方式,所以省去了大量铺设通信电缆的成本和人力,系统网络部署时只需要确保终端设备的工作环境(病房)有良好的Wi-Fi覆盖,并保证终端设备天线连接可靠,无金属障碍物遮挡即可。Wi-Fi接入点(AP,通常为路由器)的设置参考5.3节。5.3设备参数配置系统终端设备供电和Wi-Fi覆盖都满足后,便可对设备进行参数配置,以便设备顺利接入网络。用户可以使用串口或者Wi-Fi对设备进行参数配置。由于初始情况下,设备只能按默认参数进行Wi-Fi接入,若果使用Wi-Fi进行配置,那么应将接入点按照设备默认参数进行设置,即使用“routerssid”作为路由器的SSID,并且使用默认的用户名“admin”和密码“admin”,终端设备才可以自动进行连接,否则应该通过串口将Wi-Fi用户名和密码下发给终端设备,随后设备会保存用户名和密码、自动重启并以指定的用户名和密码接入Wi-Fi。此时,运行上位机软件,选择【设备管理】→【参数配置】,弹出对话窗口如图5–1所示。下发给中断设备的参数还包括设备的IP获取方式:DHCP或静态IP,DHCP由路由器动态分配IP,IP地址不固定,如果希望每个终端设备有固定IP,则应选择静态IP方式,此时还应该为其指定IP地址、子网掩码、默认网关和DNS地址。设备的参数配置还包括给设备指定设备名称、设备定时向服务器汇报自身情况(例如电源电量、有无系统异常等)的时间间隔、指定服务器IP(对于固定IP服务器)或服务器URL(对于使用域名解析的服务器)、服务器端口和服务器名称。这些参51 电子科技大学硕士学位论文图5–1设备参数配置对话框数配置完成后,设备首先将参数存储到FLASH中并向配置端返回参数配置成功的确认包,随后自动重启并按新的参数初始化系统,自动接入Wi-Fi并连接服务器,定时向服务器发送心跳汇报包。参数配置完毕后,应观察设备的指示灯是否正常指示系统的工作状态,是否能够正常连接服务器并发送汇报包,如图5–2。若不正常应该检查原因或者重新进行参数配置。待以上项目都正常以后按下语音呼叫按钮,服务器端应该收到语音呼叫请求,并正确显示呼叫设备的名称、IP地址等相关信息,如图5–3所示。确认以上信息均为正确后点击确认接受呼叫请求,测试能否正常地建立语音连接和通话质量。最后结束语音通话,检查终端设备是否正常关闭了语音输出,设备指示灯恢复到待机状态并定时向服务器汇报自身状态。参数配置到此完毕。5.4网络吞吐率测试语音终端配置完成并成功接入Wi-Fi后可以对终端的网路吞吐率进行测试,以便了解当前的通信参数是否配置合理。本文采用的测试方法是利用一台主机通过52 第五章系统的部署与联合测试图5–2服务器收到设备状态汇报图5–3服务器收到语音呼叫请求ping命令发送测试数据包测量数据从发出、语音终端接收并响应、数据返回的总时间,即一次往返的时间。使用”ping-n100-l32192.168.1.1”指定数据包大小为32字节数据包重复100次53 电子科技大学硕士学位论文测试结果如图5–4所示,可见语音终端在处理小数据包上表现非常出色,没有丢包且平均响应时间小于1ms,完全可以应对普通指令(如状态报告)的通信需求。图5–4网络吞吐率测试1(包长32字节)使用”ping-n500-l500192.168.1.1”指定数据包大小为500字节,重复测试500次得到的结果如图5–5所示,可见语音终端在处理大小为500字节的数据包上仍然表现出色,没有丢包,且平均响应时间仅2ms,这说明语音终端能够轻松应付语音通信的数据量需求(500字节/包,语音采样率8ksps合8×8×1024bps)。为进一步测试语音终端的最大网络吞吐率,将数据包设置为路由器允许的最大值DTU=65500,”ping-n100-l65500192.168.1.1”,测试100次得到的结果如图5–6所示,平均往返响应时间为71ms,折合通信速率为:65500bps约合771×10−3÷2Mbps。5.5系统联合测试系统软件安装、系统网络部署、设备参数配置都完成后便可开始系统联合测试,此项测试只旨在检验系统在实际运行环境中多设备共存、服务器多业务并发执行、多客户端并发访问、数据库频繁大量的数据操作等情况下的稳定性。系统联合测试按如下方法进行:54 第五章系统的部署与联合测试图5–5网络吞吐率测试2(包长100字节)图5–6网络吞吐率测试3(包长65500字节)1.根据实际需求选择部署的终端设备数量,这决定了系统网络的规模(为保证测试的有效性,建议设备节点数在100以上),完成设备参数配置和网络部署,并保证网络参数分配合理,同一局域网中绝对不允许有两个或两个以上相同设备IP和设备名称。2.开启无线接入点并保证网络畅通,运行系统上位机软件并启动系统服务器,最后给所有的终端设备供电。此时服务器应该能收到每一个终端设备周期性的心跳汇报包,对24h(或更长时间)内每一个设备的汇报包进行统计,55 电子科技大学硕士学位论文考察是否有长时的“心跳停止”。3.尽可能同时按下多个终端设备的语音呼叫按钮,考察服务端是否能同时响应这些设备的语音呼叫请求,重复测试,统计并发呼叫终端设备和服务器实际响应的语音呼叫请求情况,考察是否有无语音呼叫请求被丢失。4.重复发起语音呼叫请求并建立语音连接(建议每个终端设备至少重复100次),测试语音呼叫结束后终端设备是否正常关闭了语音输出,设备指示灯是否恢复到待机状态并定时向服务器汇报自身状态。5.其他上位机界面的操作和病房信息管理等功能测试在短时间内只能做基本功能测试,稳定性方面只能在系统的实际运行过程中注意观察,一旦有故障发生应该记录故障现象和诱因以便后续故障定位和修复。5.6本章小结本章主要介绍了系统软件安装、系统网络部署、设备参数配置以及系统联合测试的详细方法与步骤,给出了样例测试结果。经过实际测试,系统的功能完整正常,系统稳定性良好,功能和性能均达到了设计要求。56 第六章全文总结与展望第六章全文总结与展望6.1本文的主要贡献本论文主要论述了医院住院病房语音呼叫系统的研究与开发工作,从系统目前的运行效果和测试结果来看,系统的各个功能模块都达到了预期的要求,实现了病房语音呼叫系统。主要完成了以下工作:1.详细分析了本系统的需求,针对系统终端设备嵌入式硬件、嵌入式软件和上位机软件分别制定了总体方案框架,编写了详细的需求分析文档。2.完成了系统终端设备的嵌入式硬件电路设计,给出了详细的设计思路和电路图,并完成了制作和调试。3.完成了系统终端设备的嵌入式软件设计,采用了RT-Thread嵌入式实时系统,保证了终端设备的稳定性和实时性。4.完成了系统上位机软件的设计与测试,使用SQLserver2005建立起系统需要的数据库和数据表,配合JSP所提供的验证的内建数据表,并利用了ASP所内建的SqlMembershipProvider和RoleProvider模型来简化对成员与角色的管理。5.系统总体上采用B/S系统体系结构。采用三层架构模式,充分利用网络的自身优势,将系统部署网络上进行应用;设置专门的应用服务器和数据服务器保证系统的正常运行,保证系统大规模使用时能很好的提供服务;重新设计的三层架构模式对系统的数据传输和数据的处理有很大的提高,提升了医院住院语音系统的模式。6.浏览器模式可以更加方便的进行访问,减少了系统的维护费用,方便了系统的推广以及使用。在数据传输和数据库共享上,相比客户端模式有着较大的改善。系统数据的安全性以及语音呼叫工能都得到了很大的改善,对系统的数据分析以及病房管理等功能都进行了改进。6.2存在的不足本文提出的病房语音呼叫系统实现了各个功能模块以及系统的数据统计与分析和数据输出功能,但是对系统的参数设置以及系统的数据分析预测功能还有待完善,对不同的数据分析还有待提高。57 电子科技大学硕士学位论文6.3展望随着单片机技术和通信技术的发展,病房呼叫系统的功能也越来越多,越来越完善,朝着人性化、智能化、网络化的方向发展。虽然本文设计实现的病房语音呼叫系统仍然存在一定的不足,相信经过更多的优化和完善,以及其他学者的进一步探索,医院病房的语音呼叫和管理系统并将越来越完善而智能化。相信在不久,病房呼叫系统会与医院信息系统联合起来,在发挥更重要的作用。58 致谢致谢本文历时一年有余终于完成,欣喜之余,作者要首先感谢徐军和姜宝钧两位指导老师,他们为人随和热情,治学严谨细心。当时选定这个题目看重了它的创新性和实用性,虽然一开始以为不是太难,但是深入后发现其实并没有想象的那么容易。两艹位指艹导老艹师始艹终认艹真负艹责地艹给予艹作者艹深刻艹而细艹致地艹指导,艹帮艹助作艹者开艹拓研艹究思艹路,艹精心艹点拨、艹热艹忱鼓艹励,艹本文艹最终艹能够艹完成艹很大艹程度艹上得艹益于艹两位艹导师艹的鼎艹力相艹助。同艹时,艹作者艹要衷艹心感艹谢的艹父母艹和其艹他亲艹朋好艹友对艹作者艹的关艹心、艹支持艹和理艹解,艹没有艹他们艹对作艹者的艹关心、艹鼓艹励和艹支持,艹作艹者无艹法完艹成现艹在的艹学业。最艹后,艹感谢艹曾经艹教育艹和帮艹助过艹作者艹的所艹有老艹师。艹衷心艹地感艹谢电艹子科艹技大艹学对艹本人艹的培艹养,艹感谢艹为评艹阅本艹论文艹而付艹出宝艹贵时艹间和艹辛勤艹劳动艹的专艹家和艹教授艹们!59 电子科技大学硕士学位论文参考文献[1]沈凯.病房呼叫系统的开发与设计[D].江苏:江苏大学,2010,45-46.[2]杨进宝.无线医疗呼叫系统的设计[D].湖南:湖南师范大学,2009,47-48.[3]宋旵飞.电生理检测自动报警智能医院护理呼叫系统设计[D].上海:同济大学,2006,21-22.[4]周丽红.基于DTMF的医院护理呼叫对讲系统的设计与实现[D].无锡:江南大学,2008,22-23.[5]朱艳华,等.基于PL3105的病房呼叫系统设计[J].北京石油化工学院学报,2009,41–43.[6]郭广颂,等.基于单片机的无线病房呼叫系统设计[J].电子技术应用,2012,21–23.[7]潘绍明,等.基于信号叠加和无线电的病房呼叫系统设计与实现[J].电子技术应用,2011,25–26.[8]梅彬运,等.基于nRF401芯片的医院无线护理呼叫系统的设计[J].现代电子技术,2007,15–17.[9]王广德,等.医用局域有线呼叫系统的硬件设计[J].吉林师范大学学报(自然科学版),2010,11–13.[10]吴敏.基于嵌入式的家庭网关控制平台的研究与设计[D].武汉:武汉理工大学,2007,27-28.[11]张朝.基于嵌入式及GPRS技术的无线监测终端研究[D].西安:西北工业大学,2007,23-24.[12]周磊.基于蓝牙和GPS技术的车辆管控系统关键技术的研究[D].南京:东南大学,2007,24-25.[13]宋丹.基于eCos的嵌入式GIS系统的研究与实现[D].成都:电子科技大学,2008,25-26.[14]李婷婷.薄木生产流程管理系统设计与实现[D].济南:山东大学,2009,28-29.[15]刘哲.网络游戏“未来之王”的研究与设计[D].厦门:厦门大学,2013,30-31.[16]马慧娟.煤矿井下水情综合监控系统管理软件的开发与设计[D].太原:太原理工大学,2010,31-32.[17]陈红波.大型桥梁健康监测分布式数据采集系统的设计与实现[D].兰州:兰州理工大学,2006,33-34.[18]沈丰年.无线电监测系统模型分析及一种新的查找信号的方法研究[D].重庆:重庆大学,2009,35-36.[19]李艳婷.基于X-Code的手机移动支付系统的设计与实现[D].厦门:厦门大学,2012,26-27.[20]罗莹.基于.NET技术的中小企业生产执行管理系统设计与实现[D].厦门:厦门大学,2012,37-38.[21]魏大海.M地区在用电梯动态监管系统研究[D].济南:山东大学,2011,39-40.60 参考文献[22]崔振科.基于ARM的多功能汽车行驶记录仪的研制[D].青岛:青岛科技大学,2014,41-42.[23]李宗方.基于Cortex内核处理器的USB高速数据采集技术研究[D].北京:北京工业大学,2009,43-44.[24]邱祎.嵌入式实时操作系统RT-Thread的设计与实现[D].成都:电子科技大学,2007,45-46.[25]金鑫.燃气锅炉控制系统的研究与设计[D].益阳:湖南大学,2014,47-48.[26]杨泽明.智慧照明系统设计与实现[D].成都:电子科技大学,2014,49-50.[27]梁志勇.基于LM3S8962处理器煤矿监测系统的研究[D].北京:北京交通大学,2010,51-52.[28]李明.全自动生化分析仪测控系统设计[D].南京:南京理工大学,2014,53-54.[29]张臻.西南季节性干旱区农业资源与环境要素数据库设计与应用[D].重庆:西南大学,2011,55-56.[30]吴援明,唐军.模拟电路分析与设计基础[M].北京:科学出版社,2006.[31]王家君,崔舜,林晨光,等.一种超细钼粉或超细钨粉表面包覆金属铜的制备方法:中国,CN200710177119.6[P/OL].北京:北京有色金属研究总院,2007.11.09.http://www.google.com/patents/CN101428345A?cl=zh.[32]K.-L.Ngo-Wah,J.Goel,Y.-C.Chou,etal.AV-bandeight-waycombinedsolid-statepow-eramplifierwith12.8Wattoutputpower[C]MicrowaveSymposiumDigest,2005IEEEMTT-SInternational.[S.l.]:IEEEPublishing,2005,4pp.1371–1374.[33]I.ANSYS.ANSYSFLUENTUser’sGuide[M].Canonsburg:ANSYS,Inc.,2011.[34]I.ANSYS.ANSYSWorkbenchUser’sGuide[M].Canonsburg:ANSYS,Inc.,2009.[35]I.ANSYS.ANSYSIcepakTutorials[M].Canonsburg:ANSYS,Inc.,2012.[36]I.ANSYS.ANSYSIcepakUser’sGuide[M].Canonsburg:ANSYS,Inc.,2012.[37]G.Eggers,R.Kohl.2GHzBandwidthPredistortionLinearizerforMicrowavePowerAmplifiersatKu-Band[C]24thEuropeanMicrowaveConference,1994.Cannes:IEEEPublishing,1994,2,1501–1505.[38]K.Yamauchi,M.Nakayama,Y.Ikeda,etal.An18GHz-bandMMIClinearizerusingaparalleldiodewithabiasfeedresistanceandaparallelcapacitor[C]MicrowaveSymposiumDigest,2000IEEEMTT-SInternational.Boston:IEEEPublishing,2000,3,1507–1510.[39]K.Yamauchi,H.Noto,S.Ishizaka,etal.Seriesanti-paralleldiodelinearizerforclass-Bpoweramplifierswithagainexpansion[C]Asia-PacificMicrowaveConference,2006.Yokohama:IEEEPublishing,2006,883–886.[40]A.Katz,S.Moochalla,J.Klatskin.PassiveFETMMIClinearizersforC,X,andKu-bandsatelliteapplications[C]MicrowaveSymposiumDigest,1993IEEEMTT-SInternational.Atlanta:IEEEPublishing,1993,1,353–356.61 电子科技大学硕士学位论文[41]M.T.Hickson,D.Paul,P.Gardner,etal.HighEfficiencyFeedforwardLinearizers[C]24thEuropeanMicrowaveConference,1994.Cannes:IEEEPublishing,1994,1,819–824.[42]L.W.Epp,A.R.Khan,D.J.Hoppe,etal.24-WayRadialPowerCom-biner/Dividerfor31to36GHz[R].Pasadena:NASA’sJetPropulsionLabora-tory,2008.http://www.techbriefs.com/component/content/article/1264-ntb/tech-briefs/electronics-and-computers/2784.[43]J.Nevarez,G.Herskowitz.OutputPowerandLossAnalysisof2𝑛Injection-LockedOscil-latorsCombinedthroughanIdealandSymmetricHybridCombiner[J].IEEETransactionsonMicrowaveTheoryandTechniques,1969,17(1),2–10.[44]L.Epp,D.Hoppe,A.Khan,etal.AHigh-PowerKa-Band(31-36GHz)Solid-StateAmplifi-erBasedonLow-LossCorporateWaveguideCombining[J].IEEETransactionsonMicrowaveTheoryandTechniques,2008,56(8),1899–1908.[45]Y.Wang,Y.Fu.Abroadbandwaveguidepowersplitterandcombinerusinginspatialpowercombiningamplifier[C]2011InternationalConferenceonElectronics,CommunicationsandCon-trol(ICECC).Ningbo:IEEEPublishing,2011,4074–4077.[46]R.Kline.HaroldBlackandthenegative-feedbackamplifier[J].IEEEControlSystems,1993,13(4),82–85.[47]H.Black.Inventingthenegativefeedbackamplifier:Sixyearsofpersistentsearchhelpedtheauthorconceivetheidea“inaflash”aboardtheoldLackawannaFerry[J].IEEESpectrum,1977,14(12),55–60.[48]H.S.Black.StabilizedFeed-BackAmplifiers[J].TransactionsoftheAmericanInstituteofElectricalEngineers,1934,53(1),114–120.[49]互联网资源.ARM课程考试相关知识点[EB/OL].http://blog.sina.com.cn/s/blog_b8ca1232010188v1.html.[50]H.S.Black.Wavetranslationsystem:US,US2102671[P/OL].[S.l.]:GooglePatents.http://www.google.com/patents/US2102671.62 附录ART-Thread线程API相关源码附录ART-Thread线程API相关源码01/*02*File:thread.c03*ThisfileispartofRT-ThreadRTOS04*COPYRIGHT(C)2006-2012,RT-ThreadDevelopmentTeam05*06*Thelicenseanddistributiontermsforthisfilemaybe07*foundinthefileLICENSEinthisdistributionorat08*http://www.rt-thread.org/license/LICENSE09*10*ChangeLogs:11*DateAuthorNotes12*2006-03-28Bernardfirstversion13*2006-04-29Bernardimplementthreadtimer14*2006-04-30BernardaddedTHREADDEBUG15*2006-05-27Bernardfixedthertthreadyieldbug16*2006-06-03Bernardfixedthethreadtimerinitbug17*2006-08-10Bernardfixedthetimerbuginthreadsleep18*2006-09-03Bernardchangedrttimerdeletetorttimerdetach19*2006-09-03Bernardimplementrtthreaddetach20*2008-02-16Bernardfixedthertthreadtimeoutbug21*2010-03-21Bernardchangetheerrnoofrtthreaddelay/sleepto22*RTEOK.23*2010-11-10Bernardaddcleanupcallbackfunctioninthreadexit.24*2011-09-01Bernardfixedrtthreadexitissuewhenthecurrent25*threadpreempted,whichreportedbyJiaxingLee.26*2011-09-08Bernardfixedtheschedulingissueinrtthreadstartup.27*2012-12-29Bernardfixedcompilingwarning.28*/2930#include63 电子科技大学硕士学位论文31#include3233externrtlisttrtthreadprioritytable[RTTHREADPRIORITYMAX];34externstructrtthread*rtcurrentthread;35externrtlisttrtthreaddefunct;3637staticvoidrtthreadexit(void)38{39structrtthread*thread;40registerrtbasetlevel;4142/*getcurrentthread*/43thread=rtcurrentthread;4445/*disableinterrupt*/46level=rthwinterruptdisable();4748/*removefromschedule*/49rtscheduleremovethread(thread);50/*changestat*/51thread->stat=RTTHREADCLOSE;5253/*removeitfromtimerlist*/54rtlistremove(&(thread->threadtimer.list));55rtobjectdetach((rtobjectt)&(thread->threadtimer));5657if((rtobjectissystemobject((rtobjectt)thread)==RTTRUE)&&58thread->cleanup==RTNULL)59{60rtobjectdetach((rtobjectt)thread);61}62else63{64 附录ART-Thread线程API相关源码64/*inserttodefunctthreadlist*/65rtlistinsertafter(&rtthreaddefunct,&(thread->tlist));66}6768/*enableinterrupt*/69rthwinterruptenable(level);7071/*switchtonexttask*/72rtschedule();73}7475staticrterrtrtthreadinit(structrtthread*thread,76constchar*name,77void(*entry)(void*parameter),78void*parameter,79void*stackstart,80rtuint32tstacksize,81rtuint8tpriority,82rtuint32ttick)83{84/*initthreadlist*/85rtlistinit(&(thread->tlist));8687thread->entry=(void*)entry;88thread->parameter=parameter;8990/*stackinit*/91thread->stackaddr=stackstart;92thread->stacksize=(rtuint16t)stacksize;9394/*initthreadstack*/95rtmemset(thread->stackaddr,’#’,thread->stacksize);96thread->sp=(void*)rthwstackinit(thread->entry,thread->parameter,65 电子科技大学硕士学位论文97(void*)((char*)thread->stackaddr+thread->stacksize-4),98(void*)rtthreadexit);99100/*priorityinit*/101RTASSERT(priorityinitpriority=priority;103thread->currentpriority=priority;104105/*tickinit*/106thread->inittick=tick;107thread->remainingtick=tick;108109/*errorandflags*/110thread->error=RTEOK;111thread->stat=RTTHREADINIT;112113/*initializecleanupfunctionanduserdata*/114thread->cleanup=0;115thread->userdata=0;116117/*initthreadtimer*/118rttimerinit(&(thread->threadtimer),119thread->name,120rtthreadtimeout,121thread,1220,123RTTIMERFLAGONESHOT);124125returnRTEOK;126}127128/**66 附录ART-Thread线程API相关源码129*@addtogroupThread130*/131132/*@{*/133134/**135*Thisfunctionwillinitializeathread,normallyit’susedtoinitializea136*staticthreadobject.137*138*@paramthreadthestaticthreadobject139*@paramnamethenameofthread,whichshallbeunique140*@paramentrytheentryfunctionofthread141*@paramparametertheparameterofthreadenterfunction142*@paramstackstartthestartaddressofthreadstack143*@paramstacksizethesizeofthreadstack144*@paramprioritythepriorityofthread145*@paramtickthetimesliceiftherearesameprioritythread146*147*@returntheoperationstatus,RTEOKonOK,-RTERRORonerror148*/149rterrtrtthreadinit(structrtthread*thread,150constchar*name,151void(*entry)(void*parameter),152void*parameter,153void*stackstart,154rtuint32tstacksize,155rtuint8tpriority,156rtuint32ttick)157{158/*threadcheck*/159RTASSERT(thread!=RTNULL);160RTASSERT(stackstart!=RTNULL);16167 电子科技大学硕士学位论文162/*initthreadobject*/163rtobjectinit((rtobjectt)thread,RTObjectClassThread,name);164165returnrtthreadinit(thread,166name,167entry,168parameter,169stackstart,170stacksize,171priority,172tick);173}174RTMEXPORT(rtthreadinit);175176/**177*Thisfunctionwillreturnselfthreadobject178*179*@returntheselfthreadobject180*/181rtthreadtrtthreadself(void)182{183returnrtcurrentthread;184}185RTMEXPORT(rtthreadself);186187/**188*Thisfunctionwillstartathreadandputittosystemreadyqueue189*190*@paramthreadthethreadtobestarted191*192*@returntheoperationstatus,RTEOKonOK,-RTERRORonerror193*/194rterrtrtthreadstartup(rtthreadtthread)68 附录ART-Thread线程API相关源码195{196/*threadcheck*/197RTASSERT(thread!=RTNULL);198RTASSERT(thread->stat==RTTHREADINIT);199200/*setcurrentprioritytoinitpriority*/201thread->currentpriority=thread->initpriority;202203/*calculatepriorityattribute*/204#ifRTTHREADPRIORITYMAX>32205thread->number=thread->currentpriority>>3;/*5bit*/206thread->numbermask=1L<number;207thread->highmask=1L<<(thread->currentpriority&0x07);/*3bit*/208#else209thread->numbermask=1L<currentpriority;210#endif211212RTDEBUGLOG(RTDEBUGTHREAD,(”startupathread:%swithpriority:%d∖n”,213thread->name,thread->initpriority));214/*changethreadstat*/215thread->stat=RTTHREADSUSPEND;216/*thenresumeit*/217rtthreadresume(thread);218if(rtthreadself()!=RTNULL)219{220/*doascheduling*/221rtschedule();222}223224returnRTEOK;225}226RTMEXPORT(rtthreadstartup);22769 电子科技大学硕士学位论文228/**229*Thisfunctionwilldetachathread.Thethreadobjectwillberemovedfrom230*threadqueueanddetached/deletedfromsystemobjectmanagement.231*232*@paramthreadthethreadtobedeleted233*234*@returntheoperationstatus,RTEOKonOK,-RTERRORonerror235*/236rterrtrtthreaddetach(rtthreadtthread)237{238rtbasetlock;239240/*threadcheck*/241RTASSERT(thread!=RTNULL);242243/*removefromschedule*/244rtscheduleremovethread(thread);245246/*releasethreadtimer*/247rttimerdetach(&(thread->threadtimer));248249/*changestat*/250thread->stat=RTTHREADCLOSE;251252/*detachobject*/253rtobjectdetach((rtobjectt)thread);254255if(thread->cleanup!=RTNULL)256{257/*disableinterrupt*/258lock=rthwinterruptdisable();259260/*inserttodefunctthreadlist*/70 附录ART-Thread线程API相关源码261rtlistinsertafter(&rtthreaddefunct,&(thread->tlist));262263/*enableinterrupt*/264rthwinterruptenable(lock);265}266267returnRTEOK;268}269RTMEXPORT(rtthreaddetach);270271272#ifdefRTUSINGHEAP273/**274*Thisfunctionwillcreateathreadobjectandallocatethreadobjectmemory275*andstack.276*277*@paramnamethenameofthread,whichshallbeunique278*@paramentrytheentryfunctionofthread279*@paramparametertheparameterofthreadenterfunction280*@paramstacksizethesizeofthreadstack281*@paramprioritythepriorityofthread282*@paramtickthetimesliceiftherearesameprioritythread283*284*@returnthecreatedthreadobject285*/286rtthreadtrtthreadcreate(constchar*name,287void(*entry)(void*parameter),288void*parameter,289rtuint32tstacksize,290rtuint8tpriority,291rtuint32ttick)292{293structrtthread*thread;71 电子科技大学硕士学位论文294void*stackstart;295296thread=(structrtthread*)rtobjectallocate(RTObjectClassThread,297name);298if(thread==RTNULL)299returnRTNULL;300301stackstart=(void*)rtmalloc(stacksize);302if(stackstart==RTNULL)303{304/*allocatestackfailure*/305rtobjectdelete((rtobjectt)thread);306307returnRTNULL;308}309310rtthreadinit(thread,311name,312entry,313parameter,314stackstart,315stacksize,316priority,317tick);318319returnthread;320}321RTMEXPORT(rtthreadcreate);322323/**324*Thisfunctionwilldeleteathread.Thethreadobjectwillberemovedfrom325*threadqueueanddetached/deletedfromsystemobjectmanagement.326*72 附录ART-Thread线程API相关源码327*@paramthreadthethreadtobedeleted328*329*@returntheoperationstatus,RTEOKonOK,-RTERRORonerror330*/331rterrtrtthreaddelete(rtthreadtthread)332{333rtbasetlock;334335/*threadcheck*/336RTASSERT(thread!=RTNULL);337338/*removefromschedule*/339rtscheduleremovethread(thread);340341/*releasethreadtimer*/342rttimerdetach(&(thread->threadtimer));343344/*changestat*/345thread->stat=RTTHREADCLOSE;346347/*disableinterrupt*/348lock=rthwinterruptdisable();349350/*inserttodefunctthreadlist*/351rtlistinsertafter(&rtthreaddefunct,&(thread->tlist));352353/*enableinterrupt*/354rthwinterruptenable(lock);355356returnRTEOK;357}358RTMEXPORT(rtthreaddelete);359#endif73 电子科技大学硕士学位论文360361/**362*Thisfunctionwillletcurrentthreadyieldprocessor,andschedulerwill363*chooseahighestthreadtorun.Afteryieldprocessor,thecurrentthread364*isstillinREADYstate.365*366*@returnRTEOK367*/368rterrtrtthreadyield(void)369{370registerrtbasetlevel;371structrtthread*thread;372373/*disableinterrupt*/374level=rthwinterruptdisable();375376/*settocurrentthread*/377thread=rtcurrentthread;378379/*ifthethreadstatisREADYandonreadyqueuelist*/380if(thread->stat==RTTHREADREADY&&381thread->tlist.next!=thread->tlist.prev)382{383/*removethreadfromthreadlist*/384rtlistremove(&(thread->tlist));385386/*putthreadtoendofreadyqueue*/387rtlistinsertbefore(&(rtthreadprioritytable[thread->currentpriority]),388&(thread->tlist));389390/*enableinterrupt*/391rthwinterruptenable(level);39274 附录ART-Thread线程API相关源码393rtschedule();394395returnRTEOK;396}397398/*enableinterrupt*/399rthwinterruptenable(level);400401returnRTEOK;402}403RTMEXPORT(rtthreadyield);404405/**406*Thisfunctionwillletcurrentthreadsleepforsometicks.407*408*@paramtickthesleepticks409*410*@returnRTEOK411*/412rterrtrtthreadsleep(rttickttick)413{414registerrtbasettemp;415structrtthread*thread;416417/*disableinterrupt*/418temp=rthwinterruptdisable();419/*settocurrentthread*/420thread=rtcurrentthread;421RTASSERT(thread!=RTNULL);422423/*suspendthread*/424rtthreadsuspend(thread);42575 电子科技大学硕士学位论文426/*resetthetimeoutofthreadtimerandstartit*/427rttimercontrol(&(thread->threadtimer),RTTIMERCTRLSETTIME,&tick);428rttimerstart(&(thread->threadtimer));429430/*enableinterrupt*/431rthwinterruptenable(temp);432433rtschedule();434435/*clearerrornumberofthisthreadtoRTEOK*/436if(thread->error==-RTETIMEOUT)437thread->error=RTEOK;438439returnRTEOK;440}441442/**443*Thisfunctionwillletcurrentthreaddelayforsometicks.444*445*@paramtickthedelayticks446*447*@returnRTEOK448*/449rterrtrtthreaddelay(rttickttick)450{451returnrtthreadsleep(tick);452}453RTMEXPORT(rtthreaddelay);454455/**456*Thisfunctionwillcontrolthreadbehaviorsaccordingtocontrolcommand.457*76 附录ART-Thread线程API相关源码458*@paramthreadthespecifiedthreadtobecontrolled459*@paramcmdthecontrolcommand,whichincludes460*RTTHREADCTRLCHANGEPRIORITYforchangingprioritylevelofthread;461*RTTHREADCTRLSTARTUPforstartingathread;462*RTTHREADCTRLCLOSEfordeleteathread.463*@paramargtheargumentofcontrolcommand464*465*@returnRTEOK466*/467rterrtrtthreadcontrol(rtthreadtthread,rtuint8tcmd,void*arg)468{469registerrtbasettemp;470471/*threadcheck*/472RTASSERT(thread!=RTNULL);473474switch(cmd)475{476caseRTTHREADCTRLCHANGEPRIORITY:477/*disableinterrupt*/478temp=rthwinterruptdisable();479480/*forreadythread,changequeue*/481if(thread->stat==RTTHREADREADY)482{483/*removethreadfromschedulequeuefirst*/484rtscheduleremovethread(thread);485486/*changethreadpriority*/487thread->currentpriority=*(rtuint8t*)arg;488489/*recalculatepriorityattribute*/490#ifRTTHREADPRIORITYMAX>3277 电子科技大学硕士学位论文491thread->number=thread->currentpriority>>3;/*5bit*/492thread->numbermask=1<number;493thread->highmask=1<<(thread->currentpriority&0x07);/*3bit*/494#else495thread->numbermask=1<currentpriority;496#endif497498/*insertthreadtoschedulequeueagain*/499rtscheduleinsertthread(thread);500}501else502{503thread->currentpriority=*(rtuint8t*)arg;504505/*recalculatepriorityattribute*/506#ifRTTHREADPRIORITYMAX>32507thread->number=thread->currentpriority>>3;/*5bit*/508thread->numbermask=1<number;509thread->highmask=1<<(thread->currentpriority&0x07);/*3bit*/510#else511thread->numbermask=1<currentpriority;512#endif513}514515/*enableinterrupt*/516rthwinterruptenable(temp);517break;518519caseRTTHREADCTRLSTARTUP:520returnrtthreadstartup(thread);52178 附录ART-Thread线程API相关源码522#ifdefRTUSINGHEAP523caseRTTHREADCTRLCLOSE:524returnrtthreaddelete(thread);525#endif526527default:528break;529}530531returnRTEOK;532}533RTMEXPORT(rtthreadcontrol);534535/**536*Thisfunctionwillsuspendthespecifiedthread.537*538*@paramthreadthethreadtobesuspended539*540*@returntheoperationstatus,RTEOKonOK,-RTERRORonerror541*542*@noteifsuspendselfthread,afterthisfunctioncall,the543*rtschedule()mustbeinvoked.544*/545rterrtrtthreadsuspend(rtthreadtthread)546{547registerrtbasettemp;548549/*threadcheck*/550RTASSERT(thread!=RTNULL);551552RTDEBUGLOG(RTDEBUGTHREAD,(”threadsuspend:%s∖n”,thread->name));553554if(thread->stat!=RTTHREADREADY)79 电子科技大学硕士学位论文555{556RTDEBUGLOG(RTDEBUGTHREAD,(”threadsuspend:threaddisorder,%d∖n”,557thread->stat));558559return-RTERROR;560}561562/*disableinterrupt*/563temp=rthwinterruptdisable();564565/*changethreadstat*/566thread->stat=RTTHREADSUSPEND;567rtscheduleremovethread(thread);568569/*enableinterrupt*/570rthwinterruptenable(temp);571572returnRTEOK;573}574RTMEXPORT(rtthreadsuspend);575576/**577*Thisfunctionwillresumeathreadandputittosystemreadyqueue.578*579*@paramthreadthethreadtoberesumed580*581*@returntheoperationstatus,RTEOKonOK,-RTERRORonerror582*/583rterrtrtthreadresume(rtthreadtthread)584{585registerrtbasettemp;58680 附录ART-Thread线程API相关源码587/*threadcheck*/588RTASSERT(thread!=RTNULL);589590RTDEBUGLOG(RTDEBUGTHREAD,(”threadresume:%s∖n”,thread->name));591592if(thread->stat!=RTTHREADSUSPEND)593{594RTDEBUGLOG(RTDEBUGTHREAD,(”threadresume:threaddisorder,%d∖n”,595thread->stat));596597return-RTERROR;598}599600/*disableinterrupt*/601temp=rthwinterruptdisable();602603/*removefromsuspendlist*/604rtlistremove(&(thread->tlist));605606/*removethreadtimer*/607rtlistremove(&(thread->threadtimer.list));608609/*changetimerstate*/610thread->threadtimer.parent.flag&=∼RTTIMERFLAGACTIVATED;611612/*enableinterrupt*/613rthwinterruptenable(temp);614615/*inserttoschedulereadylist*/616rtscheduleinsertthread(thread);617618returnRTEOK;81 电子科技大学硕士学位论文619}620RTMEXPORT(rtthreadresume);621622/**623*Thisfunctionisthetimeoutfunctionforthread,normallywhichisinvoked624*whenthreadistimeouttowaitsomeresource.625*626*@paramparametertheparameterofthreadtimeoutfunction627*/628voidrtthreadtimeout(void*parameter)629{630structrtthread*thread;631632thread=(structrtthread*)parameter;633634/*threadcheck*/635RTASSERT(thread!=RTNULL);636RTASSERT(thread->stat==RTTHREADSUSPEND);637638/*seterrornumber*/639thread->error=-RTETIMEOUT;640641/*removefromsuspendlist*/642rtlistremove(&(thread->tlist));643644/*inserttoschedulereadylist*/645rtscheduleinsertthread(thread);646647/*doschedule*/648rtschedule();649}650RTMEXPORT(rtthreadtimeout);65182 附录ART-Thread线程API相关源码652/**653*Thisfunctionwillfindthespecifiedthread.654*655*@paramnamethenameofthreadfinding656*657*@returnthefoundthread658*659*@notepleasedon’tinvokethisfunctionininterruptstatus.660*/661rtthreadtrtthreadfind(char*name)662{663structrtobjectinformation*information;664structrtobject*object;665structrtlistnode*node;666667externstructrtobjectinformationrtobjectcontainer[];668669/*entercritical*/670if(rtthreadself()!=RTNULL)671rtentercritical();672673/*trytofinddeviceobject*/674information=&rtobjectcontainer[RTObjectClassThread];675for(node=information->objectlist.next;676node!=&(information->objectlist);677node=node->next)678{679object=rtlistentry(node,structrtobject,list);680if(rtstrncmp(object->name,name,RTNAMEMAX)==0)681{682/*leavecritical*/683if(rtthreadself()!=RTNULL)684rtexitcritical();83 电子科技大学硕士学位论文685686return(rtthreadt)object;687}688}689690/*leavecritical*/691if(rtthreadself()!=RTNULL)692rtexitcritical();693694/*notfound*/695returnRTNULL;696}697RTMEXPORT(rtthreadfind);698699/*@}*/70084 ?4各种it丈芳IUNIVERSITYELECTROCIENCEANDCHNOLOGYOFN阵jSTEOFCHINA<巧%iI秦I专业学位硕±学位论义IMASTERTHESISFORPROFESSIONALDEGREE9■福...於.;私遲:枉.■軒.,!■,範.誦|tv:、e麵一.m■T.Mi'iP*'^-麗:■隊:ImI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭