版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引言1.1研究背景与现状随着近些年来互联网新兴技术的不断发展和应用,当下银行、餐饮等行业,其早已实现了用户自主叫号、有序提供自动服务的智能化系统。这种智能化系统减轻了行业用人的负担,能够去释放用人单位对于人进行业务操作的资源;同时也使得顾客在使用时候更加方便快捷,避免了因排队拥挤、就诊先后等问题而产生纠纷。但是当前许多医院在就医过程当中,仍然存在老式窗口排队挂号的现象,这种排队挂号不仅费时费力,而且导致排队无序、排队拥挤的情况频发,不利于医院医疗资源的充分利用。究其原因,一方面是因为对于医院服务内容方面的重视程度不够,没有系统分析医院就医的需求,从而开放性的提出新的挂号就诊方案;另一方面是没有能够利用互联网手段,结合当下的医院实际情况,对门诊系统进行挂号、叫号的一个新兴应用。于是我们在分析了医院的服务需求后,开发了医院叫号平台系统。医院叫号平台系统应合如今互联网发展的潮流,实现了电子设备对于医院叫号的充分利用,也使得就诊数据留痕更加方便,提升了用户体验。1.2研究目的与意义医院叫号系统的开发主要是意在使用智能化的互联网技术,结合单片机硬件与安卓端应用,开发出方便挂号就诊的医院叫号系统。从而去解决现存的医院排号混乱、耗时、耗力等问题,用互联网方式节约现有资源,让用户使用更加方便快捷。系统应用后,的确能够去解决现存的不少问题:(1)减少排队、插队和拥挤等现象以往就诊,病员在等候就诊看病过程中经常会遇到各种排队、插队和拥挤等现象,通过本系统的进一步完善和应用,叫号只需要通过手机APP就可完成,同时语音播报前往就诊,大大提升了病员的服务体验。(2)节省医院用人资源以往医院的挂号系统都应用了专人专岗的形式,浪费了很多人力以及物力资源。但通过本系统的完善,能够去释放人的资源,提高护士的工作效率[1],从而做到数据多跑路,病员和医生少跑腿。(3)信息留痕更加方便以往医院的挂号信息留痕都需要通过医生护士的手动输入,通过医院叫号系统的完善,病员在通过手机进行挂号的同时,已经进行了数据信息的留痕,使得医院在数据管理方面出错率大大降低,而且用户也可以对自己的就诊记录实时的进行把控,体现医院以病人、以人民为中心的服务宗旨,大大改善了就医环境。2技术应用概述2.1单片机技术概述单片机的第一次推出是在1971年,Intel研制出的第一个4位微处理器芯片Intel4004标志着单片机时代的开始。它在演变中经历了SCM、MCU、SoC三个阶段,性能也在不断地进行提升。单片机的实质其实是一个微型计算机系统,他将具有数据处理能力的各种微型模块集成成为一个电路芯片,从而使得单片机成为集成有强大功能、使用方便、具有特色的计算机系统。而今现阶段,更多新型的集成度高的单片机也在不断地推陈出新,高位单片机的出现更加满足了现如今信息技术的发展与用户诉求,它体积小、集成度高、使用方便的特性也是越来越受欢迎。本次系统也是基于单片机存储次数高、使用灵活方便的特性进行硬件选择的开发。使用到了STC15系列集成芯片进行开发,配以HC-06蓝牙芯片以及JQ8400语音芯片进行集成开发,使硬件端实现功能方便操作、直观易懂。2.1.1STC15F2K60S2芯片概述STC15F2K60S2芯片具有运行高速、低功耗、宽电压的特性,具备2048字节的RAM数据存储器和可擦写10万次以上的EEPROM带电可擦可编程只读存储器。EPROM用于单片机系统中,既可以扩展为片外EPROM,也可以扩展为片外RAM。它使单片机系统的设计,特别是调试实验更为方便、灵活[2]。同时其具备有两个完全独立的高速运行串口通讯端口(UART),适合本次的开发要求(串口一连接蓝牙芯片电路,负责安卓端数据的接收显示和叫号的通知栏提醒;串口二连接蜂鸣器的语音播报电路,实现叫号信息的传输与语音播报通知)。2.1.2HC-06蓝牙芯片概述截至目前蓝牙技术的开发目的是想要去提供一种是用成本价格低廉、用于短距离数据传输的无线通讯技术,随着市场对于低功耗要求的进一步提升,蓝牙模块的应用也是越来越广泛、协议版本以及内容也是在做着进一步的优化。本次系统考虑到硬件与软件之间的互通选择了比较成熟的蓝牙2.0版本进行开发。HC-06蓝牙芯片是基于BluetoothSpecificationV2.0蓝牙版本的并且带有EDR蓝牙通讯网络协议的模块[3]。其在使用过程中有一个自带的LED小灯,可用来直观判断蓝牙是否已经成功被连接。同时其通过发送无线电波的方式进行串口数据的接收和发送,实现安卓软件端与单片机pcb板硬件端的数据交互。2.1.3JQ8400语音芯片概述JQ8400语音芯片拥有两种控制模式,分别是两线串口模式和一线串口控制模式,并且能够支持智能组合播放,本次系统在开发中采用了两线串口组合播放模式,按文件夹命名进行不同语音段的组合,应和了医院不同科室叫号的智能播报系统。2.2Android开发概述Android是基于Linux的开放性系统。其应用程序的开发为开发者提供了统一方法,意味着开发者只要在平台上进行规范的程序编程和打包APK,这样程序就可以搭载到不同的安卓移动设备上进行安装、运行和使用。除此之外,安卓还有着其他系统不可比拟的优势,如市场广大、开发成本低廉、开发环境简单等,使得安卓应用非常广泛。而Android应用程序的开发一般都是采用Java语言,本次系统也是基于java对安卓软件端进行布局和功能的完善。2.3C语言概述C语言程序是一种面向过程的语言,其因为适用范围大、可移植性较好等特点,在许多不同的操作系统中都可以得以衍生和应用。本次系统在STC15系列单片机编程过程中,就使用了C语言进行功能的编写,使得系统开发模块性高、代码简洁紧凑、使用灵活方便。2.4开发工具链介绍2.4.1软件部分AndroidStudio是基于IntelliJIDEA的官方Android应用集成开发环境(IDE)[4]。用于对病人安卓APP软件端的开发和调试。Navicat是一款MySQL可视化数据库软件,并且使用结构化查询语言进行数据库管理,对于云服务器的数据表和数据存储进行操作。阿里云服务器是一款提供基于互联网的基础设施服务的软件,主要负责数据库端云数据的存储。2.4.2硬件部分AltiumDesigner18是一款单片机电子开发系统软件,主要负责医院叫号系统原理图的设计、电路的仿真、pcb图的转换和绘制、自动布线等功能,实现硬件端的初步设计。keiluVsion2是一款51系列兼容单片机的C语言软件开发系统,实现硬件端代码的编译以及生成汇编。STC-ISP串口通讯工具是一款基于STC系列单片机芯片的串口烧录工具,用于对汇编语言在单片机上的串口通讯烧写。语音合成软件是一款智能语音合成的软件,通过对语音的合成,实现单片机蜂鸣器叫号电路内容的智能播报。3项目概要设计本医院挂号系统主要通过对叫号蓝牙模块的总体分析,在STC15F2K60S2单片机芯片、HC-06蓝牙通讯电路和用户手机安卓APP软硬件平台的结合下,实现软件利用蓝牙向硬件互通叫号信息,硬件利用蓝牙向软件发送叫号提醒信息,完善了基于单片机的医院叫号系统的设计与实现。3.1需求分析3.1.1硬件需求分析(1)硬件端蓝牙接收用户叫号、根据叫号科室进行分流、显示在不同科室数码管。(2)硬件端查看分科室后的当前叫号号码、按键叫号并刷新数码管、蜂鸣器发出叫号提醒、发送叫号通知到手机端功能。3.1.2软件需求分析(1)用户安卓APP连接硬件蓝牙模块,进行数据通信。(2)用户使用身份证号码、就诊科室进行蓝牙排号(3)用户查看个人叫号记录、查看科室引导、查询排号进程功能。(4)用户安卓端蓝牙接收叫号提醒功能。3.2项目功能概述3.2.1蓝牙连接通过蓝牙模块连接到安卓手机app和单片机STC15F2K60S2芯片实物。选取合适的蓝牙芯片模块HC-06芯片,使用Altiumdesigner软件,绘制蓝牙电路原理图,通过原理图画好相应的PCB模块。得到实物后,按照PCB板的画法,将原件实物焊接到实际的PCB板子上。通过安卓app内编写蓝牙socket接口,连接上蓝牙设备。安卓App可以查找到手机设备已经匹配过的蓝牙设备,以及未匹配过的设备,点击进行蓝牙的连接,从而实现双向电波数据的互联互通信息。3.2.2取号通过安卓手机app发送叫号号码,显示在不同科室数码管上。选取四位数码管,第一二位为第一科室,三四位为第二科室,进行科室分流。安卓app内编写叫号程序,输入身份号、就诊科室进行挂号。并将挂号记录连接上阿里云服务器进行数据存储。根据就诊科室不同进行分流,显示在不同数码管上。当前数码管数字有多个则存储在叫号队列中等待叫号。3.2.3叫号按下硬件按键叫号并刷新数码管队列中的下一个数字。选取两个按键,分别控制第一科室和第二科室的叫号,进行分流。按下按键进行相应数码管队列的刷新,队列中有下一个叫号信息则根据编码显示下一个叫号,没有则显示--。同时更新阿里云数据库中叫号状态位,显示已叫号。3.2.4语音播报蜂鸣器语音播报电路发出叫号提醒,“请*诊室*号就诊”。选取语音芯片和功放芯片,使用Altiumdesigner绘制语音播报电路图,通过原理图画好相应的PCB模块并进行实物焊接。运用语音合成工具软件,合成所需要的语音。编写语音使用代码,并进行烧写。3.2.5状态栏通知安卓手机app接收蓝牙端发送的叫号通知。按下科室分流后的叫号按键,蓝牙输出模块TX发送消息到安卓手机端,安卓手机端可实现接收叫号通知notification,并在手机状态通知栏显示(软件在后台运行亦可收到叫号通知,并有伴有震动提醒)。3.2.6信息查询安卓手机app实现查看前方排号人数、查看个人叫号记录、查看科室引导功能。安卓手机使用fragment页面显示框架,并且进行布局切换显示。连接阿里云服务器,进行数据存储。根据科室号,叫号状态位,查找前方排号人数、根据身份证号查看个人叫号记录、根据科室号查看科室引导。4项目功能实现4.1项目实现流程详细实现流程分为如下的步骤:(1)在Altiumdesigner软件画出完整的原理图的设计,并且进行四个电路的仿真,包括STC15F2K60S2芯片电路、USB电源电路、语音播报电路和HC-06蓝牙电路。(2)根据仿真原理图,在Altiumdesigner软件进行PCB图的转换和绘制。(3)购买硬件芯片实物,在PCB板子上进行焊接。(4)编写安卓数据通讯互联线程,用串口测试工具进行蓝牙连接调试,实现软硬件的数据互联。(5)编写单片机硬件端代码,实现接收存储安卓端数据、科室分流、数码管显示、鸣器报警等功能,并通过STC串口烧录工具进行代码烧写。(6)安卓端连接阿里云服务器存储叫号数据,并利用fragment框架搭建页面,实现查询叫号信息、状态栏通知等功能。项目实现流程图如图4-1所示。图4-1项目实现流程图4.2单片机硬件电路实现通过次系统,硬件集成采用了模块化的设计手段。模块化的好处非常多,不仅仅是便于分工,它还有助于程序的调试,有利于程序结构的划分,还能增加程序的可读性和可移植性[5]。硬件主要分为STC15F2K60S2芯片电路、USB电源电路、语音播报电路、HC-06蓝牙电路四个模块。通过pcb集成板的焊接形成了医生端的硬件叫号电路。软件主要利用安卓开发实现如下的一些功能:用户叫号,用户接受叫号notification提醒,用户安卓手机app查看前方排号人数、查看个人叫号记录、查看科室引导等。系统简化了设计,实时播报较好提醒可操作性强,能够切实有效的改善现状。4.2.1STC15F2K60S2芯片电路STC15F2K60S2_SOP28_SKDIP28具有两个独立工作运行的数据收发串口[串口1(RxD/P3.0,TxD/P3.1)、串口2(RxD2/P1.0,TxD2/P1.1)][6]。在keil2软件开发过程当中,keil中没有自带的STC15系列的编程型号和头文件,需要根据STC15的串口烧录工具将STC仿真器驱动到keil中。STC15F2K60S2_SOP28_SKDIP28芯片的P2.0-2.7接口连接了4口的数码管,P3.4-3.7接口连接数码管的显示控制接口H1-H4,数码管前两位显示为一科室号码、后两位显示为二科室号码,进行不同科室选择的号码分流显示;P3.0-P3.1连接Usb电源电路进行交流供电;P1.0-P1.1连接MP3语音播报电路,实现语音数据内容的传输;P1.6-1.7连接HC-06蓝牙模块,实现数据的双向通讯(蓝牙模块发送数据到芯片进行分流、队列存储、并显示;芯片电路发送叫号提醒到蓝牙模块,反馈已叫号,并由蓝牙模块发送叫号提醒)。P1.4-1.5连接两个叫号按钮,进行分流叫号,并控制不同的两个数码管进行数据的更新,并实时检测后续队列是否还存在数据。电路图如图4-2所示。图4-2STC15F2K60S2_SOP28_SKDIP28芯片电路图科室一接收和显示数据的代码如下://诊室1的处理 if(dulen==cntRxd2){//如果没有储存的数据以后进入 LedBuff[0]=0xbf; //前两位显示—— LedBuff[1]=0xbf&0x7f; if(qing1==1){//只有第一次进入才清除计数器和储存器 qing1=0;dulen=0;cntRxd2=0; memset(bufRxd1,0,10); memset(bufRxd2,0,10);}} else {qing1=1; LedBuff[0]=LedChar[bufRxd2[dulen]/10]; LedBuff[1]=LedChar[bufRxd2[dulen]%10]&0x7f; }if(K1==0&&dulen!=cntRxd2){ //如果开关按下并且储存器有数据的情况下才生效delay1ms(10); //去抖动 if(K1==0&&dulen!=cntRxd2){ bobao(bufRxd1[dulen],bufRxd2[dulen]);//播报诊室号和排对序号 SendData(bufRxd1[dulen]); //串口发送诊室号。 SendData(bufRxd2[dulen]); //串口发送排队序号 memset(bufRxd1,0,dulen); //清除已经播报的数组储存 memset(bufRxd2,0,dulen);delay1ms(10); dulen++; //计数器加为下次触发做准备 while(K1==0&&dulen!=cntRxd2);}}4.2.2HC-06蓝牙模块HC-06蓝牙芯片具有模块应用稳定性高、程序数据不易丢失等特点,并且采用2.0系列的USB接口电路,应和现在主流的使用方向。他的通信距离范围有10m,适合医院门诊大厅叫号的应用。HC-06蓝牙芯片模块在工作时可以应用无线电波通信来代替全双工通讯所需要具备的物理连线[7],通过android主设备向从设备模块发送串口数据,发送时通过主设备RXD端接收,并且将数据压缩成无线电波方发送,从设备的模块TXD端口能够接还原主设备发送的数据内容,数据发送原理如图4-3所示。图4-3HC-06蓝牙芯片模块数据发送原理图单片机采用HC-06蓝牙模块进行软硬件的数据交互。TX、RX接口连接芯片电路进行科室号、排号号码的数据传输,同时也接收来自芯片电路的已叫号提醒;通过自身蓝牙连接接口协议,与安卓用户端进行socket的双向连接通讯,实现接收来自安卓用户传输的信息(科室号、号码),并且向安卓端发送已叫号的数据信息,在安卓端内更新数据库信息并且进行notification的状态栏通知提醒,做到叫号的实时提醒播报,方便病人前往就诊,蓝牙模块电路图如图4-4所示。图4-4蓝牙模块电路图蓝牙模块串口收发数据代码如下://UART中断服务程序voidUart()interrupt4{if(RI){RI=0;//清除RI位//保存接收字节,并递增计数器buf[cntRxd++]=SBUF;//串行口数据缓冲寄存器 if(cntRxd==2){ //串口接收两次数据以后进行处理 if(buf[0]==0x01){ //接收到两个数据后,判断第一位数据是1还是2bufRxd1[cntRxd2]=buf[0];//把两个数据给储存数组数组总储存个数设定10个,可以修改个数,取决于单片机容量 bufRxd2[cntRxd2]=buf[1];cntRxd2++; //接收累加器memset(buf,0,2); if(cntRxd2>UART_RX_MAX){//如果储存器的数据个数大于设定值清除所有数据从0开始 memset(bufRxd1,0,10);memset(bufRxd2,0,10); cntRxd2=0;}} if(buf[0]==0x02){ //接收2诊室的数据处理和诊室1一样的 bufRxd3[cntRxd3]=buf[0];bufRxd4[cntRxd3]=buf[1]; cntRxd3++;memset(buf,0,2); if(cntRxd3>UART_RX_MAX){memset(bufRxd3,0,10);memset(bufRxd4,0,10); cntRxd3=0;}}cntRxd =0;}}if(TI){TI=0;//清除TI位busy=0;//清忙标志}}voidSendData(unsignedchardat)//发送串口数据{while(busy);//等待前面的数据发送完成busy=1;SBUF=dat;//写数据到UART数据寄存器}voidUart2()interrupt8//UART2中断服务程序{if(S2CON&S2RI){S2CON&=~S2RI;//清除S2RI位}if(S2CON&S2TI){S2CON&=~S2TI;//清除S2TI位busy=0;//清忙标志}}voidSendData2(unsignedchardat)//发送串口数据{while(busy);//等待前面的数据发送完成ACC=dat;(PSW.0)busy=1;S2BUF=ACC;//写数据到UART2数据寄存器}4.2.3USB电源电路USB接口是新兴总线接口中的一种,它可以通过PCI总线和PC机的内部内置数据线进行数据的发送以及传输。同时USB接口也向硬件系统提供了稳定电压传输的外设的电源,适合本次硬件系统设计芯片电路的集成开发。而且近年来USB接口的应用和发展也十分迅猛,由于有着容易扩展的优点,在许多其他电子领域也被广泛使用。USB电源电路是为整体硬件系统提供电源支持。D+\D-为蜂鸣器语音播报电路提供3.3V的稳定电压支持。TXD\RXD为STC15F2K60S2_SOP28_SKDIP28芯片电路提供编程接口,并传输5V交流电压,为系统运行提供平稳电流支持,如图4-5所示。图4-5USB电源电路仿真图4.2.4蜂鸣器叫号模块JQ8400-FL的语音芯片能够灵活更新语音内容,只要对于SPI-flash中的设置内容进行更新即可,省去了老式芯片安装上位机进行实时语音写入的步骤,使得系统开发和编程变得简单易懂。芯片支持两线串口通讯路径,对应操作指令可以有由自带上位机录入形成,代码编程烧写简单。语音芯片原理如图4-6所示。图4-6JQ8400-FL语音芯片设置图蜂鸣器语音播报电路在叫号时播报出语音提醒,提醒病人前来科室进行就诊。P24/P25接口为串口收发脚,与STC芯片电路进行数据输入输出交互,接收到来自芯片电路的叫号信息,并通过语音拆解,进行音频MP3文件的整合播放;VMCU端口连接功放IC电路,将JQ8400输入的微弱电信号放大,从而产生电流推动蜂鸣器的扬声器进行语音的播报;D+/D-连接了3.3V的稳定USB电源;1-6引脚连接了SPIflash,利用flash设备通过SPI串行接口进行读写操作,电路原理图如4-7所示。图4-7JQ8400-FL语音芯片仿真图语音播报代码如下:voidmp3_uart(unsignedchar*buf,unsignedcharlen){unsignedchari=0;for(i=0;i<len;i++){SendData2(buf[i]); //串口2的发送 换串口只需要改这}}voidmp3(unsignedchardat){ unsignedcharbuf[6];//发送操作指令根据手册 buf[0]=0xaa; buf[1]=0x07;buf[2]=0x02;buf[3]=0x00;buf[4]=dat+1; buf[5]=0xaa+0x07+0x02+0x00+dat+1; mp3_uart(buf,sizeof(buf));delay_ms(800);}voidmp3_vol(unsignedchardat){unsignedcharbuf[5];//发送操作指令根据手册 buf[0]=0xaa; buf[1]=0x13;buf[2]=0x01;buf[3]=dat; buf[4]=0xaa+0x13+0x01+dat; mp3_uart(buf,sizeof(buf));}voidbobao(unsignedcharadd,unsignedintdat){unsignedcharqian,bai,shi,ge;//把数值进行拆解 qian=dat/1000;bai=dat%1000/100;shi=dat%100/10;ge=dat%10;mp3(0x0e); //请mp3(add);//几mp3(0x10); //诊室delay_ms(200); if(qian>0){ //如果最高位不是0就进行播报 mp3(qian); //最高位的数值 mp3(0x0c); // 千} if(qian>0&&bai==0){//如果千位大于0了并且下一位(百)上是0进行播报0 if(shi!=0){ //如果十位是0也不播报mp3(0x0);} }else if(bai>0){ //否则百位不进行播报 mp3(bai); //播报百位数值mp3(0x0b); //百}if(bai>0&&shi==0){//如果百位大于0了,并且下一位(十)上是0,进行播报0 if(ge!=0){ //如果个位是0也不播报mp3(0x0);} }else if(shi>0){ //否则百位不进行播报 if(shi>1){mp3(shi); //播报十位数值} mp3(0x0a); //十} if(ge!=0){ //判断个位是不是0,如果是0则不进行播报 mp3(ge); //播报个位数值} if(dat==0){mp3(0x0);}mp3(0x0d); //号}4.2.5PCB电路板的实现PCB电路板的设计是硬件模块制作实现的最关键一步,需要通过前期的仿真图,依据所使用的元器件性能,进行集成制作的搭建。将原理图绘制转换成PCB电路图后,需要厂商对PCB板子进行制作,同时开发者选购合适的硬件,进行焊接。设计流程如图4-8所示。图4-8PCB电路板开发流程图本系统在PCB开发过程中,需要考虑四个模块的分工以及合理连接,左上部分为STC15芯片电路,左下部分为蜂鸣器报警电路,右上部分为蓝牙芯片电路,形成了硬件模块在PCB上的集成开发和使用。具体设计图如图4-9所示。图4-9PCB电路板设计图4.3安卓客户端软件实现此医院挂号系统安卓软件端主要使用AndroidStudio进行开发,使用户可以随装随用。软件部分主要包括如下的一些模块:1、病人可以通过APP进行蓝牙的连接,包括手机设备已连接蓝牙的查询、手机设备未连接的周围蓝牙的搜索、手机安卓软件内与硬件端蓝牙的连接;2、病人通过手机APP使用自身身份证号码以及选择科室号进行挂号、利用MAC地址及socket通讯方式将信息以无线电波的方式传输到蓝牙端。3、病人通过APP查询功能实时进行就诊信息查询,如查询前方叫号排队等候人数、查询科室引导地址、查询身份证号码排号记录等。4.3.1连接蓝牙模块采用Menu菜单右上角内嵌的方式进行蓝牙连接页面的进入,使得使用直观且页面布局具有合理性。通过设置多个item下拉菜单选择,并且在Main主函数中设置getItemId()方法获取点击的id数据,利用返回onOptionsItemSelected()数据进行不同页面的activity跳转操作。App中的蓝牙连接页面可以查询当前安卓手机设备已连接的蓝牙。根据安卓手机系统不同版本之间不同的适配情况,进行蓝牙适配器BluetoothAdapter的创建,注册查找接收蓝牙设备的action接收器,得到已配对蓝牙设备列表并在list表单中进行显示。同时App可以查询当前未进行匹配的周围蓝牙设备,设定扫描按键的响应程序,找到后在未匹配蓝牙的listview中进行显示,同时关闭正在进行的服务查找。安卓端主设备连接蓝牙从设备的流程如图4-10所示。图4-10蓝牙设备连接的流程图通过对listview显示列表的点击操作,可以获取蓝牙设备模块的Mac地址,进行socekt通讯连接设备,获取到蓝牙的数据输入流,并且建立双向的数据传输。socekt通讯连接设备的代码如下:if(requestCode==1&&resultCode==2){super.onActivityResult(requestCode,resultCode,data);address=data.getStringExtra("username");//传入mac地址_device=_bluetooth.getRemoteDevice(address);Try{_socket=_device.createRfcommSocketToServiceRecord(UUID.fromString(MY_UUID));}catch(IOExceptione){Toast.makeText(this,"连接失败!",Toast.LENGTH_SHORT).show();}try{_socket.connect();Toast.makeText(this,"连接"+_device.getName()+"成功!",Toast.LENGTH_SHORT).show();}catch(IOExceptione){try{_socket.close();_socket=null;}catch(IOExceptionee){Toast.makeText(this,"连接失败!", Toast.LENGTH_SHORT).show();}return;}try{is=_socket.getInputStream();//得到蓝牙数据输入流}catch(IOExceptione){Toast.makeText(MainActivity.this,"接收数据失败!",Toast.LENGTH_SHORT).show();return;}if(bThread==false){newMyThread().start();bThread=true;}else{bRun=true;}}}在安卓APP内,病人可以通过item下拉选择框,进入到蓝牙连接页面和查看数据页面,规范美化了页面布局,使用更加简化大方。如图4-11所示。图4-11item下拉选择页面跳转图4.3.2用户挂号模块病人点击挂号button按钮进行取号,将String类型的科室号、取号号码中包含的字符转换成byte类型并且存入一个byte[]数组,写入一个txt文本文件当中,向蓝牙存储器进行写入。同时开启一个新线程,获取当地时间和其他相关数据,写入云服务器主机中进行数据的存储。挂号页面如图4-12所示。图4-12挂号页面图4.3.3挂号进度查询模块病人输入身份证号码、取号号码可以进行前方等待人数的查询。在云数据库中匹配相应取号挂号的信息,同时查询该条信息是否已经被叫号,若未查找到则提示无该排号记录,如有该数据则根据叫号状态位判断前方科室排号等待人数,在页面上进行提醒,方便病人对于排号进度的实时掌握。4.3.4就诊科室引导模块利用spinner下拉框进行科室号数据选择的获取,进行云端数据库的数据删选,并显示科室的地理位置信息,方便病人前往指定地点进行就诊。4.3.5挂号记录查询模块病人输入身份证号码进行个人挂号记录的查询,通过阿里云数据库中的查找,并将所有信息显示在list表单中,方便用户对于个人挂号记录的一个实时把控。4.3.6Fragment页面框架设计fragment是一种控制器对象,activity可委派它执行任务。这些任务通常就是管理用户界面。根据应用和用户的需求,可联合使用fragment及activity来组装或重组用户界面[8]。这种页面控制框架的使用可以将多个activity页面封装到同一个控制器对象当中,实现简单的页面切换操作。Fragment控制器如图4-13所示。图4-13fragment控制器图而本次系统安卓在设计查询功能时利用到了Fragment页面框架,Fragment框架将页面系统的集成起来,将不同页面放入一个Fragment的适配器当中进行轮播,同时配以点击亮色的页面小图标,提升用户使用感和App运行速度。同时在fragment控制器使用前,我们需要编辑一个适配器Adapter来装载对象的使用(如对象的个数,对象的点击选中事件等)。拥有超过一个方法的接收器接口都可拥有适配器,每个适配器为每个接口方法提供默认的方法[9]。在使用适配器时我们只需要继承适配器的接口,即可应用android默认提供的方法。4.3.7状态栏通知病人在使用此系统时可以实时接收到来自医院叫号系统的叫号通知提醒,伴随有震动和声音提醒,并且在状态通知栏进行显示。使用标准视图Notification通知,创建NotificationManager对象来对通知进行管理。通过调用getSystemService()方法可以获取到实例对象,并且确定获取系统的服务类型,传入到Context.NOTIFICATION_SERVICE进行响应。通知在状态栏的显示如下图4-14所示。图4-14通知状态栏显示图Notification通知的Builder构造器中有如下的一些方法:setAutoCancel(booleanboolean)是指点击状态通知栏后自动清除。setContentTitle(Stringstring)是指通知的标题内容text。setContentText(Stringstring)是指通知的正文信息内容。setSound(Urisound)是指设置通知的音频,可使用系统默认自带音效。4.4数据库设计数据库是一类关系型数据的集合,利用SQL表达式对存储的数据进行操作。SQL表达式基本结构包括三个子句:select子句,from子句和where子句[10]。本系统的安卓挂号信息插入、排队进度查询等功能就是利用SQL语句连接数据库服务器进行查询的。4.4.1数据库概要设计数据库使用阿里云端的主机服务器设备进行存储,实现数据的长期性保存与留痕。同时服务器已经提前有针对性地预置了多种参数和设置,且对MySQL数据库实现精准的操作和微改功能。4.4.2数据库字段设计(1)guide(病人科室查询信息表),如表4-1所示。表4-1病人科室查询信息表字段名类型说明主键roomvarchar科室号Yesguide_roomvarchar科室引导地址No(2)register(病人挂号信息表)如表4-2所示。表4-2病人挂号信息表字段名类型说明主键idint编号Yestimevarchar挂号时间Nopersonvarchar身份证号Noroomvarchar科室号Norandomvarchar挂号号码Nostatusvarchar叫号情况No5难题和解决方法5.1PCB图转换电路仿真原理图转pcb开发板图的过程中,经常会出现器件封装没有找到,无法成功转换成开发板视图的现象,可以通过以下的三种方式进行解决:1、去altiumdesigner官网进行库文件封装的下载,然后根据项目硬件需要添加pcb的库文件到library中。2、改变默认使用的封装类型,选择软件内现有存在的其他封装。3、创建一个pcblibrary文件,在其中进行自主绘制适合硬件焊接的库文件。5.2Notification通知适配Notification通知在安卓8.0以上有了全新的版本编写要求,与原来存在版本不适配不兼容的问题。即从Android8.0(API级别26)版本开始,在使用通知使必须通知分配给一个channel通道,否则将无法解析代码并进行通知,可用如下操作解决:1、使用代码判断安卓版本号(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O)是否在8.0以上。2、new一个NotificationChannel()通道进行通知的存放。5.3蜂鸣器语音组合播报在利用JQ8400语音芯片进行语音分解播报编写过程中,如何将MP3音乐按照需求进行排列播报。1、上网下载语音合成软件,合成需要的语音MP3。2、按照MP3储存的顺序排列在文件夹下,按文件名来组合播放,0X01就是播放第一首。3、拆解STC芯片传来的叫号数值,按个十百位读数方式组合音频文件进行播报。6系统测试6.1安卓用户叫号软件6.1.1安卓APP连接蓝牙设备通过安卓APP,可以实现对安卓手机设备现存已配对蓝牙设备的查找,以及对手机设备未配对的蓝牙进行查找,分别显示在不同的list表单中。病人点击表单,即可连接上单片机的硬件模块,开始进行叫号。如图6-1所示。图6-1安卓蓝牙搜索连接功能图6.1.2安卓APP取号通过连接蓝牙之后,病人可以使用APP通过输入身份证号和科室号进行挂号。如图6-2所示。图6-2安卓端用户叫号功能图6.1.3安卓App查询当前排队等待人数病人通过输入自己的身份证号码、挂号号码,可以查询到当前科室需要排队等候多少人。当输入信息错误时,会提示未查找到该排号记录。如图6-3所示。图6-3查询排队等待人数图6.1.4安卓App查询科室地址病人通过下拉spinner选择框,可以查询科室的就诊地址。如图6-4所示。图6-4查询科室地址图6.1.5安卓App查询个人叫号记录病人通过输入自己的身份证号码,可以查询到自己的挂号排号记录。当输入身份证信息错误时,会提示未查找到该身份证的排号记录。如图6-5所示。图6-5查询个人叫号记录图6.2单片机硬件开发板6.2.1单片机PCB开发板通电图硬件开发板通电后,数码管将显示为“--”,表示已通电但未接收到数据。蓝牙模块通信led小灯将未亮,证明未连接到主设备。如图6-6所示。图6-6单片机PCB板通电图6.2.2单片机叫号使用图安卓软件端通过socekt通信将挂号信息发送到硬件单片机端,进行科室分流后并显示挂号信息。如图6-7所示。图6-7单片机叫号使用图
结论本系统主要是设计了基于单片机的医院叫号系统,病人端使用安卓手机APP进行取号、查询,医生端使用单片机设备进行叫号,并通过蓝牙模块实现双方之间的数据通信。叫号系统利用了硬件和软件相互结合互通的方式,实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农药经营许可管理制度
- 烟草黑胫病防控技术方案
- 肉牛育肥增重管理手册
- 花卉采后保鲜物流管理实施方案
- 高油大豆高产栽培技术规程
- 家政服务人员上户着装规范标准
- 行政管理师三级试题及分析
- 脊柱矫正手法流程规范
- 亚健康体质辨识评估流程规范
- 牛羊越冬保膘饲养管理技术方案
- 2026年甘肃省兰州市辅警招聘试卷带答案
- 2026年保安员资格证理论知识考试题库
- 《老年急危重症容量管理急诊专家共识》总结2026
- 财务安全课件
- 2024成都辅警考试真题及答案
- 2025年黑龙江省纪委监委遴选笔试真题及答案解析
- 2024年临沧市直机关遴选公务员考试真题汇编附答案解析
- 垂钓园的运营方案
- 2025年全国医师定期考核系统人文医学题库及答案
- 自考《唐宋诗词鉴赏》考前密押120题及答案含解析
- 2025年安徽监理员考试题及答案
评论
0/150
提交评论