资源描述
论文关键词:智能家居嵌入式系统Windows CEVisual C+Delphi论文摘要:本文讨论了基于Windows CE.net 5.0嵌入式操作系统,以使用Intel XScale270为CPU的ARM10嵌入式实验箱为硬件基础,以Visual Studio 2005和Delphi为软件开发平台的智能家居系统的设计与实现。通过详细的系统设计过程,开发了相应的软件程序,包括嵌入式操作系统Windows CE 5.0的定制、应用程序的界面设计、程序开发和单片机系统的底层编程。本设计融合了嵌入式系统、通讯、单片机、软件开发等学科的知识。系统测试结果表明,该系统设计基本满足要求,并有一定的功能扩展空间。1 绪论目前,科学学技术发展迅迅速,借助飞飞速发展的网网络和信息技技术,人们可可以足不出户户地纵览全球球。为了适应应信息化的需需求,科研机机构将智能化化的理念引入入小区管理,并进一一步引入家庭庭,从而产生生了智能家居居的概念。将将手机通信和以太网网通信技术引引入智能家居居的设计,恰恰好利用了现现有的良好的的通信条件,使使在外的业主主能及时了解解家中的安全全,提高业主主的安全感,而而且通过手机机实时控制家家电,提高了了业主生活的的舒适度。本文提出了了基于嵌入式式系统ARMM10的智能能控制平台的的设计,功能能包括了短信信控制家电,传传感器探测非非正常环境并且通过过手机短信告告知业主,以以及以太网实实时视频监控控等功能。2 系统设设计方案2.1 硬硬件总体设计计框图根据上文的的功能需要,设设计出由ARRM10为控控制核心,单单片机控制的的家电控制模模块和传感器器报警模块,并并且包含GSSM通信模块块的智能家居居系统,硬件件结构框图如如图2-1所所示。SHAPE * MMERGEFFORMATT图2-1 硬件件设计框图2.2 控控制核心选择择智能家居控控制系统采用用如图2-22所示的XSSBase2270作为开开发平台,该该平台基于IIntel高性能的PPXA2700处理器,支支持Winddows CCE和Linnux等嵌入入式操作系统统,是针对教教学和实验的的多功能实验验平台。PXA2770处理器的的最高主频可可达520MMHz,且该该处理器被加加入了Wirrelesss MXX技技术,大大的的提高了多媒媒体处理能力力,而且加入入了Inteel SpeeedSteep动态电源源管理技术,在在保证CPUU性能的前提提下,最大限限度的降低设设备功耗11。XSBasse270配配置32M FLASHH ROM,664M SDDRAM,并并配备了触摸摸屏、以太网网、USB、串串口、CF/MMC、PPCMCIAA等接口。满满足了智能家家居系统控制制中心的硬件件要求。图2-2XSSBase2270实验箱箱展开图2.3家电电控制板家电控制板板采用AT889C51为为控制核心。扩扩展板的元件件布局如图22-3所示,其其上有四盏LLED分别模模拟四种家电电,三个按钮钮模拟三种传传感器。其中中四盏LEDD分别连接单单片机的P11.0、P11.1、P11.2、P11.3;三个个按钮分别连连接P2.00、P2.11、P2.22。图2-3家电电控制模块2.3.11 串行端口口电路家电控制板板采用串口与与XSBasse270实实验箱进行通通信,其采用用了经典的兼兼容RS-2232标准的的MAX2332芯片作为为串口的电平平转换芯片。电电路的连接如如图2-4所所示:图2-4家电电控制板串行行接口电路如上图所示示,家电扩展展板采用的是是常用的DBB9头作为串串口接口,其其针脚定义图图如图2-55所示:图2-5RSS-232 DB9头针针脚定义图其中2脚RRxD为接收收引脚,3脚脚TxD为发发送引脚,GGND为信号号地引脚。一一般情况下普普通串口只接接这几个引脚脚;特殊的串串口,如蓝牙牙串口除接上上述的三个脚脚之外,还接接了DSR引引脚和CTSS引脚,是因因为蓝牙串口口的数据流输输出采用这两两个脚的信号号控制;而其其他引脚是跟跟MODEMM相关的。在在智能家居系系统中,家电电控制板接普普通串口,GGSM模块接接蓝牙串口。RS-2332信号相对对于信号地而而言,在正负负电平之间摆摆动。发送数数据时,发送送端输出的正正电平在+55V到+155V之间,负负电平在-55V和-155V之间。无无数据传输时时,线上为TTTL电平。接接收器典型的的工作电平在在+3V+12V与-3V-112V。由于于发送电平和和接收电平的的差仅为23V左右,所所以其共模抑抑制能力差,加加上双绞线的的分布电容,信信号传输距离离最大为155m,最高速速率为20kkb/s22。MAX2332包含2个个驱动器、22个接收器和和一个电压发发生器电路,提提供TIA/EIA-2232-F电电平。该器件件符合TIAA/EIA-232-FF标准,每一一个接收器将将TIA/EEIA-2332-F电平平转换成5VV TTL/CMOS电电平。每一个个发送器将TTTL/CMMOS电平转转换成TIAA/EIA-232-FF电平。图2-6MAAX232引引脚图2.3.22 家电控制制电路图2-7 模模拟家电控制制电路家用电器控控制的接口电电路如图2-7 所示,KK1K4 为继电器,分分别控制四路路家电的闭合合和断开,QQ1Q4 为继电器线线圈电流驱动动,电路由单单片机的P11口进行控制制,DD1DD4 发发光二极管用用于显示某路路控制电路的的工作情况,主主要为了调试试电路而设置置。2.3.33 传感器接接口电路图2-8 传传感器接口电电路图烟雾、煤气气泄漏、红外外等这些传感感器的报警信信号通过光电电耦合接入单单片机的P22 口,如图图2-8 所所示,在传感感器没有报警警信号时,光光电耦合芯片片处于截止状状态,与之相相接的单片机机端口为低电电平;当传感感器有报警,传传感器输出高高电平,此时时光电耦合芯芯片导通,与与之相接的单单片机端口为为高电平,由由单片机对报报警信号进行行采集并做出出相应处理。2.4 GGSM通信模模块GSM通信信部分采用如如图2-9所示的西西门子MC335 GSMM/GPRSS无线模块作作为通信工具。它它支持EGSSM900和和GSM18800双频,支支持数字、语语音、短消息息和传真,使使用AT指令令控制发送短短消息。它采采用9V直流流电源供电,通通过RS-2232串行端端口与XSBBase2770试验箱连连接进行通信信。图2-9 西西门子MC3352.5 视视频监控模块块视频采集模模块采用使用用中星微(VVimicrro)公司的的ZC03001P芯片的的摄像头, ZC03001P芯片可可支持USBB 1.1接接口,硬件最最高支持VGGA分辨率(66404880)。在VVGA模式下下可达到155帧/秒速率率,在CIFF(352288)和和 SIF(33202440)模式下下可达到300帧/秒速率率。它通过UUSB接口连连接到XSBBase2770试验箱。图2-103301P摄像像头2.6总体体软件设计方方案根据智能家家居的硬件设设计方案,设设计出软件的的总体设计方方案如图2-11所示:图2-11 软软件设计框图图其中:、(1)家电电控制系统和和GSM网络络通信各自独独占一个RSS-232串串口。家电控控制系统接XXSBasee270的红红外串口,GGSM模块接接蓝牙串口。如如图2-122所示。(2)实时时视频监控通通过USB摄摄像头捕捉图图像,图像数数据通过以太太网发送到PPC客户端进进行图像还原原。(3)以太太网通信基于于TCP/IIP协议,测测试环境为局域网网,若投入到到因特网的应应用,则需要要在服务端、客客户端所在的的局域网连接接到因特网的的网关即即路由器上,要要进行端口映映射,才可以以进行网络的的连接。图2-12 红红外串口与蓝蓝牙串口智能家居系系统的软件基基于Winddows CCE 5.00嵌入式操作作系统。Wiindowss CE被设设计成一种分分层结构,从从下而上一共共分为了硬件件层、OEMM层、操作系系统层和应用用层共四个层层3。这种种层次的结构构将硬件和软软件,操作系系统和应用软软件隔离开,以以便于实现系系统的移植。智智能家居的软软件设计主要要是集中在应应用层。3 操作系系统的定制Windoows CEE 5.0嵌嵌入式操作系系统的定制依依靠Plattform Buildder5.00完成。Pllatforrm Buiilder是是微软公司设设计的用于嵌嵌入式操作平平台定制与驱驱动程序的开开发的工具。推推出它的目的的之一就是让让用户可以更更好的将嵌入入式操作系统统移植到特定定的目标平台台上。3.1 BBSP的安装装为了让Wiindowss CE 55.0能在实实验箱上运行行起来,还必必须安装XSSBase2270的板级级支持包(BBSP)。板板级支持包是是介于主板和和操作系统中中驱动程序之之间的一层,一一般认为它属属于操作系统统的一部分,主主要是对操作作系统的支持持,为上层的的驱动程序提提供访问硬件件设备寄存器器的函数包。在PC上安安装好Winndows CE.neet5.0和和Platfform BBuildeer5.0后后,打开实验验箱附带光盘盘中的BSPP文件夹,运运行XSBaase2700_V0100106.mmsi文件,安安装XSBaase2700的BSP。如如图3-1所所示。图3-1 BSSP安装程序序文件安装好BSSP后,进入入Platfform BBuildeer5.0中中定制基于“EEMDOORR SYSTTEMS XXSBASEE270:AARMV4II”的因特网网应用类型的的系统镜像设设计4。如图图3-2所示示。图3-2 定定制系统时选选择BSP种种类3.2 添添加平台特征征和配置平台台为了使系统统在定制后能能够满足基本本的应用,并并保证对某些些设备的支持持,就要向所所设计的平台台中添加必要要的特征。(1)添加加USB AActivee Syncc(Filee Syncc)组件。只只有添加此组组件,才能使使用PC的UUSB接口与与Windoows CEE进行文件同同步。这也是是在应用软件件调试过程中中所必须的条条件。(Cataalog-Core OS-WWindowws CE devicces-AAppliccationns-Endd Userr-ActtiveSyync-FFile SSync)(2)添加加ChineeseSiimpliffied Font。安安装中文简体体字体后,才才能正常显示示中文。(Cataalog-Core OS-WWindowws CE devicces-IInternnationnal-LLocalee Speccific Suppoort-CChinesseSimmpifieed-FFonts)(3)添加加文件系统支支持。(Cataalog - Corre OS - Wiindowss CE ddevicees - File Systeems annd Datta Stoore - Storrage MManageer - FAT FFile SSystemm)(4)添加加分区管理(Cataalog - Corre OS - Wiindowss CE ddevicees - File Systeems annd Datta Stoore - Storrage MManageer -PPartittion DDriverr)(5)添加加控制面板中中的存储器管管理组件(Cataalog - Corre OS - Wiindowss CE ddevicees - File Systeems annd Datta Stoore - Storrage MManageer - Storaage Maanagerr Conttrol PPanel Appleet)(6)添加加基于软件的的输入系统(软软键盘等)(Cataalog - Corre OS - Wiindowss CE ddevicees - Shelll and User Interrface - Usser Innterfaace - Softtware Inputt Paneel - Softwware-bbased Inputt Paneel (SIIP) (CChoosee 1 orr moree) - SIP ffor Laarge SScreenns)(7)添加加平台管理器器(Plattform Managger)(Cataalog - Plaatformm Manaager - Plaatformm Manaager)(8)添加加Usb AActiveeSync(USB FFunctiion)(Cataalog - Thiird Paarty - BSPPs - Emdooor Sysstems XSBasse270: ARMVV4I - Deviice Drriverss - UUSB Fuunctioon-USSB Funnctionn Bus Driveers -PXA277x USBB Funcction)完成特性的的添加后,设设置平台的属属性。在“PPlatfoorm”菜单单下单击“SSettinng”,在CConfigguratiion下拉菜菜单中选择“EEmdoorr Systtems XXSBasee270:AARMV4II Releease”项项,选择Loocale选选项卡,进行行系统地理位置和环环境语言支持的设设置。Loccales列列表中,为最最下端的“中文(中中国)”项打打勾。在Deefaultt Langguage下下拉菜单里选选择“中文(中中国)”为系系统的默认语语言。如图33-3所示。图3-3 选择择操作系统默默认语言在Builld Opttion列表表中,只选择择Enablle Ebooot Sppace iin Memmory(IIMGEBOOOT=1)和Writte Runn-timee Imagge to Flashh Memoory(IMMGFLASSH=1)两两项。如图33-4所示。图3-4 程序序组建选项设设置单击“Buuild OOS”菜单下下的“Syssgen”开开始组建操作作系统。如图图3-5所示示:图3-5 生成成操作系统镜镜像3.3 红红外串口与蓝蓝牙串口的打打开经测试,在在默认配置下下生成的系统统镜像,只打打开了位于XXSBasee270模块块板上的全功功能调试串口口,而位于接接口扩展板上上的红外串口口和蓝牙串口口并没有被打打开。为了能能够与家电控控制板和GSSM模块连接接,实现完整整的智能家居居系统的功能能,必须将它它们打开。(1)查找找中断号中断号的定定义是在试验验箱所提供的的板级支持包包中被配置的的。打开C:WINCEE500PPlatfoormXSSBase2270Srrcinccbsp_cfg.hh文件。可以以看到调试串串口和通信串口的中中断号的定义义,如图3-6所示。图3-6 BBSP中的串串口中断定义义可以看到调调试串口BFFUART的的中断号是228,转化为为16进制为为0x1c;通信串口SSFUARTT中断号277,转换为116进制是00x1b。(2)修改改注册表打开以下文文件夹,其中中“F:pplatfoorm2770”是在在新建操作系系统平台时所所存储它的磁磁盘位置。F:Plattform270RRelDirrXSBaase2700_ARMVV4I_Reeleasee打开plaatformm.reg注注册表文件,在在此文件中包包含了对一些些硬件的初始始化的代码。在“IF BSP_NNOSERIIAL!”与与“END BSP_NNOSERIIAL!”两两句代码之间间,可以看到到蓝牙串口的的注册表初始始化代码,下下面只需要添添加初始化红红外串口的代代码:;Openn the IR Seerial PortHKEYY_LOCAAL_MACCHINEDriveersBuuiltInnSeriialIR Irqq=dwoord:144 ; 200 IRQ_STUARRT SyssIntr=dworrd:1b ; 27 SYSINNTR_SFFUART MemmBase=dworrd:4077000000 ; SSTUARTT Regiister MemmLen=dwordd:40 DevviceArrrayInndex=dwordd:82 ; STUUART oobjectt Preefix=COM Inddex=ddword:3 Ordder=ddword:1 ICllass=CC55195ACC-BA499-48a00-BE177-DF6DD1B01773DD ; Dlll=mss2_serrial.ddllHKEY_LLOCAL_MACHIINEDrriverssBuilltInSSeriallIRUnnimodeem Tspp=Unnimodeem.dlll DevviceTyype=ddword:0 FriiendlyyName=IRSSeriall Cablle on COM3: DevvConfiig=heex: 100,00, 00,000, 05,00,000,00, 10,011,00,000, 000,4B,000,00, 00,000, 088, 00, 00, 00,000,00,000修改好注册册表代码以后后,保存pllatforrm.regg文件。打开开刚才建立的的操作系统设设计工程,选选择Builld OS菜菜单下的Maake Ruun-Timme Imaage命令,生生成新的内核核文件NK.bin。3.4 操操作系统的生生成与下载定制并组建建Windoows CEE后,将会生生成BoottLoadeerEBBOOT.nnb0文件和和NK内核nk.bbin,将它它们烧写进入入XSBasse270实实验箱。4 应用软软件设计4.1 应应用程序编写写环境开发环境:Microosoft Visuaal Stuudio 22005开发语言:Microosoft Visuaal C+ 20055软件开发包包:XSBaase2700 SDK智能家居系系统的应用程程序采用Viisual Studiio 20005进行开发发。Visuual Sttudio是是微软公司开开发的Winndows平平台上的应用用程序开发环环境。Vissual SStudioo可以创建WWindowws 下的WWindowws应用程序序和网络应用用程序,也可可以用来创建建网络服务、智智能设备应用用程序和Offfice插插件5。Viisual Studiio 20005面向.nnet框架(22.0版本),同同时可以开发发跨平台的应应用程序。图4-1 Viisual Studiio 200054.2 智智能家居人机机接口设计打开Vissual SStudioo 20055,创建一个个基于MFCC Smarrt Devvice AAppliccationn的VC+程序。如图图4-2所示示:图4-2 新建建智能家居的的应用程序到选择平台台步骤时选择择XSBasse270平平台,删除默默认的Poccket PPC 20003平台。如如图4-3所所示。图4-3 选择择软件开发包包支持单击“Neext”按钮钮进入选择应应用程序类型型和资源语言言程序界界面上采用的的语言的画面面。如图4-4所示,选选择“Diaalog bbased”(基基于对话框)类类型,资源语语言选择“中中文(中国)”。其其他项目保留留默认的选项项。图4-4 选择择应用程序种种类保持默认的的设置,一直直到完成新建建项目向导。进进入IDE环环境。集成环环境的窗口分分布如图4-5所示:图4-5 Viisual Studiio 20005集成环境境将对话框设设计成如图44-6所示:图4-6 智智能家居操作作界面设计表4-1 智能能家居应用软软件界面控件件配置控件类型控件名称功能按钮控件初始化GSM初始化GSM模模块开始摄像打开摄像头,开开始视频捕捉捉停止摄像停止摄像头视频频捕捉开始监听打开ARM的99000号端端口,打开网网络通信停止监听关闭端口,停止止TCP通信信冰箱打开家中的冰箱箱设备灯光打开家中的灯光光设备微波炉打开家中的微波波炉设备空调打开家中的空调调设备关于我们查看软件作者版版权声明信息息退出程序关闭未关闭的线线程,退出程程序列表控件消息窗口用来显示用户发发回的短信记记录图片控件煤气煤气传感器报警警信号,报警警时红色,常常态时绿色烟雾烟雾传感器报警警信号,报警警时红色,常常态时绿色红外红外传感器报警警信号,报警警时红色,常常态时绿色编辑框信息框实时显示系统运运行情况4.3串口通信信功能设计4.3.11 串口通信信协议串口通信协协议采用CCCESeriies类实现现,通过对此此类的成员函函数的调用,完完成对串口的的初始化、读读写操作等,在在不用串口的的情况下,还还可以关闭串串口。4.3.22 软件的实实现在Visuual Sttudio的的解决方案视视图里添加类类CCESeeries,如如图4-7所所示。CCEESeriees类的成员员函数如表44-2所示。图4-7 在VVS20055中建立CCCESeriies类表4-2 串口口操作类CCCESeriies的成员员函数函数作用函数名称打开串口BOOL OppenPorrt(HWNND pPoortOwnner, UUINT pportNoo = 11, UINNT bauud= 96600,UIINT paarity= NOPAARITY, UINTT dataabits= 8,UIINT sttopbitts= 0 );关闭串口Void CllosePoort();设置串口超时BOOL SeetSeriiesTimmeoutss(COMMMTIMEOOUTS CCommTiimeOutts);读串口线程Static DWORRD WINNAPI RReadThhreadFFunc(LLPVOIDD lparram);写串口BOOL WrritePoort(LPPCTSTRR lpSttring);BOOL WrritePoort(chhar *bbuf,innt nSiize);BOOL WrritePoort(chhar *bbuf);关闭读线程Void ClloseReeadThrread();表4-3 串口口操作类CCCESeriies的成员员变量变量类型变量名称作用HANDLEm_hCommm已打开的串口句句柄HWNDm_hWnd此串口类所属的的窗口句柄HANDLEm_hReaddThreaad读串口线程句柄柄HANDLEm_hWritteThreead写串口线程句柄柄DWORDm_dwReaadThreeadID读串口线程IDDDWORDm_dwWriiteThrreadIDD写串口线程IDDHANDLEm_hReaddCloseeEventt读串口线程退出出事件HANDLEm_hWritteClosseEvennt写串口线程退出出事件4.2.22.1 打开开串口与配置置串口在Winddows CCE中,驱动动程序分为本本地设备驱动动和流设备驱驱动两种66。本地设设备如键盘、触触摸屏等,一一般在设备生生产后是不会会再更换的,相相应的驱动这这些设备的驱驱动程序也是是必需的。而而流接口设备备驱动程序可可以由第三方方提供,支持持另外添加到到系统中的设设备。而串口口就属于流接接口设备之一一。流设备驱动动在系统中是是以三位字符符串后跟一位位数字表示的的,对于串口口而言,这三三位字符是“CCOM”(不不包括引号)。当当引用一个流流接口驱动程程序时,除了了三位字符后后跟一位数字字以外,还要要紧跟一个冒冒号“:”(英英文半角冒号号),冒号是是必需的,是是为了区别桌桌面Winddows的设设备驱动程序序的命名规则则。该函数的流流程图如图44-8所示:图4-8 OppenPorrt函数流程程图(1)串串口的打开所所有的流驱动动程序都将采采用CreaateFille函数打开开串口设备。在在Windoows CEE下,系统不不支持设备的的重叠I/OO,所以不能能在参数dwwFlagssAndAtttribuutes中传传递FILEE_FLAGG_OVERRLAPPEED标志,返返回的句柄要要么是已打开开的串口端口口的句柄,或或者是INVVAILIDD_HANDDLE_VAALUE。CCreateeFile与与大多数Wiindowss函数不一样样,打开失败败时,不返回回0。CreatteFilee函数的原型型如下:HANDLE CreatteFilee(LPCTSTRR lpFiileNamme, / 对对象路径名DWORD ddwDesiiredAcccess, /控制模式DWORD ddwSharreModee, / 共享享模式LPSECURRITY_AATTRIBBUTES lpSeccurityyAttriibutess, /安全属性性(也即销毁毁方式)DWORD ddwCreaationDDispossitionn, / 创建的方方式DWORD ddwFlaggsAndAAttribbutes, / 对象属性性HANDLE hTempplateFFile / 一一个文件模板板句柄);在CCESSeriess类中, HHANDLEE类型全局变变量m_hCComm存储储CreatteFilee函数打开串串口成功时的的返回值,凭凭借此句柄可可以控制打开开的串口对象象;以读写的的方式打开串串口。(2)串口口的设置打开串口后后,还必须对对端口配置好好正确的波特特率、字符长长度、停止位位等等。在OOpenPoort函数中中,使用两个个函数GettCommSState和和SetCoommStaate来配置置串口。函数原型如如下:BOOL SeetCommmStatee(HANDDLE hRRle, LLPDCB lpDCBB);BOOL GeetCommmStatee(HANDDLE hFFile, LPDCBB lpDCCB);这两个函数数都包含了同同样的参数,即即已打开的串串口的句柄和和指向DCBB结构的指针针。DCB结结构的设置如如表4-4所所示。表4-4 OOpenPoort函数中中的串口DCCB配置DCB定义项目目设置值备注BaudRatteBaud设置波特率为传传入型参baaud的值fBinaryyTRUE二进制模式有效效fParityyTRUE支持奇偶校验ByteSizzeDatabitts设置数据位为传传入型参daatabitts,范围448ParityNOPARITTY校验模式有效StopBittsStopbitts设置停止位为传传入型参sttopbittsfOutxCttsFlowwTRUE串口输出由端口口的CTS线线控制fOutxDssrFlowwTRUE串口输出由端口口的DSR线线控制fDtrSennsitivvityDTR_CONNTROL_ENABLLE续表4-4 OpenPPort函数数中的串口DDCB配置DCB定义项目目设置值备注fDsrSennsitivvityFALSEfTXConttinueOOnXofffTRUE串口接收缓冲区区已满时,且且驱动程序已已传送了XOOFF字符,则则驱动程序停停止传送字符符fOutXFALSEXON/XOFFF控制不用用于控制串行行输出fInXFALSEXON/XOFFF控制不为为输入串行流流使用fErrorCCharFALSEfNullFALSE串行驱动不忽略略接收到的空空字节fRtsConntrolRTS_CONNTROL_ENABLLEfAbortOOnErroorFALSE串口发生错误时时,并不终止止串口读写(3)串口超时时设置设置好串口驱驱动操作的配配置后,一个个必要的步骤骤是,设置端端口的超时值值。所谓超时时,是指Wiindowss CE.nnet在读串串口和写串口口的自动返回回前等待读或或写操作的时时间长度。在在程序中,用用以下两个函函数控制串行行超时。BOOL GeetCommmTimeoouts(HHANDLEE hFille, LPPCOMMTTIMEOUUTS lppCommTTimeouuts);BOOL SeetCommmTimeoouts(HHANDLEE hFille, LPPCOMMTTIMEOUUTS lppCommTTimeouuts);这两个函数数都包含了对对应的串行设设备的句柄和和COMMTTIMEOUUTS结构的的指针,COOMMTIMMEOUTSS结构定义为为:typedeff struuct _CCOMMTIIMEOUTTSDWORD RReadInntervaalTimeeout;DWORD RReadTootalTiimeouttMultiiplierr;DWORD RReadTootalTiimeouttConsttant;DWROD WWriteTTotalTTimeouutMulttiplieer;DWORD WWriteTTotalTTimeouutConsstant;COMMTIIMEOUTTS;(4)其他他的函数设置串口的的输入输出缓缓冲区。原型型如下BOOL SeetupCoomm(HAANDLE hFilee, DWOORD dwwInQueeue, DDWORD dwOuttQueuee);设置串口检检测的事件集集。SetCommmMask(HANDLLE hFiile,DWWORD ddwEvtMMask);通过这个函数,可可以使线程等等待如表4-5中的常见见的串口驱动动程序事件。表4-5 串串口驱动程序序事件事件标志表达意义EV_BREAAK检测到中断EV_CTSCTS更改状态态EV_DSRData Seet Reaady信号更更改状态EV_ERR串行驱动程序检检测到错误EV_RKSDDReceivee Linee Signnal Deetect 行更改状态态EV_RXCHHAR接收到一个字符符EV_RXFLLAG接收到一个事件件字符EV_TXEMMPTY传输缓冲区为空空4.2.22.2关闭串串口调用ClooseHanndle可以以关闭一个串串行端口,用用关闭在打开开串口时创建建的那个句柄柄即可关闭串串口了。方法法如下CloseHaandle(m_hCoomm);关闭线程函函数:BOOL TeerminaateThrread(HHANDLEE hThrread, DWORDD dwExxitCodde);其中,hTThreadd为要关闭的的线程的句柄柄。dwExxitCodde一般为00。若成功关关闭,则返回回一个非零值值。关闭串口口函数的工作作流程如图44-9所示。SHAPE * MMERGEFFORMATT图4-9 CClosePPort函数数流程图4.2.22.3 串口口读线程读串口ReaddFile函函数原形:BOOL ReeadFille(HANDLEE hFille, /文件的句柄柄LPVOIDD lpBuuffer, /用于保存读读入数据的一一个缓冲区DWORD nNumbberOfBBytesTToReadd, /要读入的字字符数LPDWORRD lpNNumberrOfByttesReaad, /从文件中实实际读入的字字符数LPOVERRLAPPEED lpOOverlaapped /异步读取描描述,在Wiindowss CE中为为NULL);在该线程中中,若串口读读完一条信息息,则发送一一个系统消息息到系统窗体体,该消息的的名称为WMM_RXCHHAR_ALLL,是一个个用户自定义义消息。发送送给系统窗体体的附带消息息包含收到的的消息的内容容和消息的长长度。发送系统消息的的API函数数SendMMessagge的原型如如下:LRESULTT SenddMessaage(HWWND hWWnd,UIINT Mssg,WPAARAM wwParamm,LPARRAM IPParam);图4-10 串串口读线程流流程图4.2.22.4 写串串口在CCESSeriess类中,一共共编写了三个个写串口的函函数,为的是是方便不同情情况下的调用用。如要向写写已知长度的的字符串,可可以采用WrritePoort(chhar *bbuf,innt nSiize)函数数。写未知长长度字符串时时,采用WrritePoort(chhar *bbuf)函数数,字符串的的长度将在函函数内部进行行计算。前者者提高了写串串口的时间效效率。这三个个函数中,采采用了一个共共同的APII函数WriiteFille(),它它的函数原型型如下:BOOL WWriteFFile(HANDLE hFilee, / 文件件句柄LPCVOIDD lpBuuffer, / 数据据缓存区指针针DWORD nnNumbeerOfByytesTooWritee, / 要写写的字节数LPDWORDD lpNuumberOOfByteesWrittten, / 用于于保存实际写写入字节数的的存储区域的的指针LPOVERLLAPPEDD lpOvverlappped / OVVERLAPPPED结构构体指针,CCE里设为NNULL);4.2.2.55 串口类的的调用在主程序中中,必须调用用此CCESSeriess类,以达到到操作串口的的目的。在定义智能能家居的窗口口行为的CSSmartHHomeDllg类的头文文件CSmaartHommeDlg.h文件中,添添加CCESSeriess.h头文件件。并且新建建一个pubblic公共共型变量m_BTSerrial(蓝蓝牙串口)和和m_IRSSeriess进行对CCCESeriies类的实实例化。CCESeriies m_BTSerrial;CCESeriies m_IRSerrial;在用于CSSmartHHomeDllg类成员函函数的定义的的文件CSmmartHoomeDlgg.cpp文文件中,采用用形如m_BBTSeriial.OppenPorrt(thiis-m_hWnd,1,96000)的方式式进行串口类类成员函数的的调用。4.2.22.6 串口口的监听在读串口线线程中,读完完串口的一条条信息后发送送名为WM_RXCHAAR_ALLL的系统消息息给系统窗体体。在窗体程程序中,必须须对其进行响响应。在CSmarttHomeDDlg.cppp文件中,添添加一条消息息响应的声明明:ON_MESSSAGE(WWM_RXCCHAR_AALL,OnnComReecvMsgg)其中OnCommRecvMMsg为对其其消息响应的的函数,函数数的声明如下下:afx_msgg longg OnCoomRecvvMsg(WWPARAMM wParram, LLPARAMM lParram);其中“afx_msg”说说明该函数是是一消息响应应函数。4.4 GGSM通信模块 智能家家居以GSMM网络作为数数据的无线传传输网络,利利用基于GSSM网络上的的短信息服务务,完成智能能家居的远程程安全监控和和无线报警的的功能。4.4.1 设设计基本原理理4.4.1.11 PDU编编码规则自短信息技术被被开发到现在在,对短信息息的控制方式式包含了Bllock MMode、基基于AT的TText MMode基于于AT指令的的PDU MMode。使用Bloock模式需需要厂家驱动动的支持,随随着技术的发发展,后两种种模式将其取取代。Texxt模式比较较简单,但不不能发送中文文短信息。在在智能家居的的软件设计中中,采用的是是基于PDUU模式,该模模式支持各个个国家语言,当然也也包括中文。在在智能家居中中,采用中文文报警和中文文指令。PDU数据据包格式,是是手机发送短短信的一个数数据单位77。其中的的发送源手机机号码、短消消息服务中心心号码(SMMSC)、时时间戳等都是是用压缩BCCD码表示,低低位在前,高高位在后。在在PDU模式式中,可采用用Bit7、BBit8和UUCS2编码码方式对短消消息发送内容容进行编码。这这三种编码方方式可以发送送的最大字符符数分别为1160,1440和70。其中Bitt7编码发送送普通ASCCII字符,从从0x00到到0x7f,共可以表示示128个字字符。而短消消息的报文是是以8位字节节传输的,所所以就必须把把8位码压缩缩成7位码。实实现方法是: 将第二个个字符的最后后一位, 补补充到第一个个字符的前面面第一位, 第三个字符符的后两位, 补充到第第二个字符的的前两位, 依次类推, 就可得到到相应的字符符串。最后转转换成十六进进制。Bit8编编码通常用于于发送任何二二进制数据。UCS2编编码用于发送送Unicoode字符。它它固定使用116位共两个个字节来表示示一个字符,共共可以表示665535个个字符。图44-11和图图4-12分分别是接收和和发送短信的的报文格式。图4-11 接接收短信的报报文格式图4-12 发发送短消息的的报文格式实例一、发送短短信时的PDDU码:08 91 668 31 08 200 01 005 F0 11 000 0B 991 31 58 811 27 664 F8 00 000 00 006 C8 32 9BB FD 00E 01表4-6 发送送PDU包解解析分段含义说明08SMSC地址信信息的长度共8个八位字节节(包括911)91SMSC地址格格式(TONN/NPI)用国际格式号码码(在前面加加+)68 31 008 20 01 055 F0SMSC地址861380002505000,补FF凑成偶数数个11基本参数(TPP-MTI/VFP)发送,TP-VVF用相对格格式00消息基准值(TTP-MR)00B目标地址数字个个数共11位,不包包括补足的F91目标地址格式(TON/NNPI)用国际格式号码码(在前面加加+)68 31 118 48 31 466 F9目标地址(TPP-DA)861381884136449,补FF凑成偶数数个00协议标识(TPP-PID)是普通GSM类类型,点到点点方式00用户信息编码方方式(TP-DCS)7-bit编码码00有效期(TP-VP)5分钟06用户信息长度(TP-UDDL)实际长度6个字字节C8 32 99B FD 0E 011用户信息(TPP-UD)“Hello!”结合发送短信的的报文格式,知知道短消息中中心号码是:+861338002110500,对对方号码是:1381884136449,消息内内容是“Heello!”。实例二、接收短短信时的PDDU码08 91 668 31 08 200 01 005 F0 84 0DD 91 668 31 58 811 27 664 F8 00 088 30330 21 80 633 54 880 06 53 4EE 4E 11C 00 21表4-7 接收收短消息PDDU包解析分段含义说明08SMSC地址信信息的长度共8个八位字节节(包括911)91SMSC地址格格式(TONN/NPI)用国际格式号码码(在前面加加+)68 31 008 20 05 055 F0SMSC地址861380002505000,补FF凑成偶数数位84基本参数(TPP-MTI/MMS/RRP)接收,无更多消消息,有回复复地址0B回复地址数字个个数共11个十进制制数(不包括括F)91回复地址格式(TON/NNPI)用国际格式号码码(在前面加加+)68 31 558 81 27 644 F8回复地址(TPP-RA)861385118724668,补FF凑成偶数数位00协议标识(TPP-PID)是普通GSM类类型,点到点点方式08用户信息编码方方(TP-DDCS)UCS2编码30 30 221 80 63 544 80时间戳(TP-SCTS)2003-3-12 088:36:445 +88时区06用户信息长度(TP-UDDL)实际长度6个字字节53 4E 44E 1C 00 211用户信息(TPP-UD)“华东!”短消息中心号码码是:+8661380002105000,对方号号码是1388518722468,消消息内容是“华华东!”。4.4.1.22 AT指令令在智能家居中,控控制中心通过过串口给MCC35模块发发送AT指令令以达到控制制它的目的。表表4-8中是是一些系统中中采用的ATT指令。表4-8 系统统采用的ATT指令AT指令功能AT+CMGFF=0选择短消息信息息格式,等于于0时为PDDU格式,等等于1时为文文本模式,AT+CNMII=1,1,0,0,11设置为短信到达达时自动提醒醒AT+CMGSS=?发送短消息,发发送成功则返返回OK字符符串AT+CMGRR=?读取短消息,读读取成功则返返回+CMGGR: 0,iidcoontenttAT+CMGDD=?删除短消息4.4.22 软件的实实现4.4.22.1 PDDU编码解码码短信的PDDU解码和编编码的功能由由智能家居软软件工程中的的CEncoode类实现现。CEncodee类的成员函函数如表4-9所示:表4-9 CEEncodee类的方法方法备注Int gsmmStrinng2Byttes(coonst cchar* pSrc, unsiigned char* pDstt, intt nSrccLengtth)可打印字符串转转换为字节数数据如:C83229BFD00E01 - 0xC8, 0x322, 0x99B, 0xxFD, 00x0E, 0x01int gssmBytees2Strring(cconst unsiggned cchar* pSrc, charr* pDsst, innt nSrrcLenggth)字节数据转换为为可打印字符符串如:0xC88, 0x332, 0xx9B, 00xFD, 0x0E, 0x011 - C83329BFDD0E01int gsmmEncodde7bitt(consst chaar* pSSrc, uunsignned chhar* ppDst, int nnSrcLeength)7bit编码int gsmmDecodde7bitt(consst unssignedd charr* pSrrc, chhar* ppDst, int nnSrcLeength)7bit解码int gsmmEncodde8bitt(consst chaar* pSSrc, uunsignned chhar* ppDst, int nnSrcLeength)8bit编码int gsmmDecodde8bitt(consst unssignedd charr* pSrrc, chhar* ppDst, int nnSrcLeength)8bit解码int gsmmEncoddeUcs22(consst chaar* pSSrc, uunsignned chhar* ppDst, int nnSrcLeength)UCS2编码int
展开阅读全文