《智能家居系统的设计与实现54690.docx》由会员分享,可在线阅读,更多相关《智能家居系统的设计与实现54690.docx(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、论文摘要:本文讨论了基于Windows CE.net 5.0嵌入式操作系统,以使用Intel XScale270为CPU的ARM10嵌入式实验箱为硬件基础,以Visual Studio 2005和Delphi为软件开发平台的智能家居系统的设计与实现。通过详细的系统设计过程,开发了相应的软件程序,包括嵌入式操作系统Windows CE 5.0的定制、应用程序的界面设计、程序开发和单片机系统的底层编程。本设计融合了嵌入式系统、通讯、单片机、软件开发等学科的知识。系统测试结果表明,该系统设计基本满足要求,并有一定的功能扩展空间。 1 绪论目前,科学技术发展迅速,借助飞速发展的网络和信息技术,人们可以
2、足不出户地纵览全球。为了适应信息化的需求,科研机构将智能化的理念引入小区管理,并进一步引入家庭,从而产生了智能家居的概念。将手机通信和以太网通信技术引入智能家居的设计,恰好利用了现有的良好的通信条件,使在外的业主能及时了解家中的安全,提高业主的安全感,而且通过手机实时控制家电,提高了业主生活的舒适度。本文提出了了基于嵌入式式系统ARMM10的智能能控制平台的的设计,功能能包括了短信信控制家电,传传感器探测非非正常环境并且通过过手机短信告告知业主,以以及以太网实实时视频监控控等功能。2 系统设设计方案2.1 硬硬件总体设计计框图根据上文的的功能需要,设设计出由ARRM10为控控制核心,单单片机控
3、制的的家电控制模模块和传感器器报警模块,并并且包含GSSM通信模块块的智能家居居系统,硬件件结构框图如如图2-1所所示。SHAPE * MMERGEFFORMATT 图2-1 硬件件设计框图2.2 控控制核心选择择智能家居控控制系统采用用如图2-22所示的XSSBase2270作为开开发平台,该该平台基于IIntel高性能的PPXA2700处理器,支支持Winddows CCE和Linnux等嵌入入式操作系统统,是针对教教学和实验的的多功能实验验平台。PXA2770处理器的的最高主频可可达520MMHz,且该该处理器被加加入了Wirrelesss MXX技技术,大大的的提高了多媒媒体处理能力力
4、,而且加入入了Inteel SpeeedSteep动态电源源管理技术,在在保证CPUU性能的前提提下,最大限限度的降低设设备功耗11。XSBasse270配配置32M FLASHH ROM,664M SDDRAM,并并配备了触摸摸屏、以太网网、USB、串串口、CF/MMC、PPCMCIAA等接口。满满足了智能家家居系统控制制中心的硬件件要求。图2-2XSSBase2270实验箱箱展开图2.3家电电控制板家电控制板板采用AT889C51为为控制核心。扩扩展板的元件件布局如图22-3所示,其其上有四盏LLED分别模模拟四种家电电,三个按钮钮模拟三种传传感器。其中中四盏LEDD分别连接单单片机的P1
5、1.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为信号号地引脚。一一
6、般情况下普普通串口只接接这几个引脚脚;特殊的串串口,如蓝牙牙串口除接上上述的三个脚脚之外,还接接了DSR引引脚和CTSS引脚,是因因为蓝牙串口口的数据流输输出采用这两两个脚的信号号控制;而其其他引脚是跟跟MODEMM相关的。在在智能家居系系统中,家电电控制板接普普通串口,GGSM模块接接蓝牙串口。RS-2332信号相对对于信号地而而言,在正负负电平之间摆摆动。发送数数据时,发送送端输出的正正电平在+55V到+155V之间,负负电平在-55V和-155V之间。无无数据传输时时,线上为TTTL电平。接接收器典型的的工作电平在在+3V+12V与-3V-112V。由于于发送电平和和接收电平的的差仅为2
7、3V左右,所所以其共模抑抑制能力差,加加上双绞线的的分布电容,信信号传输距离离最大为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 所示,KK1
8、K4 为继电器,分分别控制四路路家电的闭合合和断开,QQ1Q4 为继电器线线圈电流驱动动,电路由单单片机的P11口进行控制制,DD1DD4 发发光二极管用用于显示某路路控制电路的的工作情况,主主要为了调试试电路而设置置。2.3.33 传感器接接口电路图2-8 传传感器接口电电路图烟雾、煤气气泄漏、红外外等这些传感感器的报警信信号通过光电电耦合接入单单片机的P22 口,如图图2-8 所所示,在传感感器没有报警警信号时,光光电耦合芯片片处于截止状状态,与之相相接的单片机机端口为低电电平;当传感感器有报警,传传感器输出高高电平,此时时光电耦合芯芯片导通,与与之相接的单单片机端口为为高电平,由由单片机
9、对报报警信号进行行采集并做出出相应处理。2-9所示的西西门子MC335 GSMM/GPRSS无线模块作作为通信工具。它它支持EGSSM900和和GSM18800双频,支支持数字、语语音、短消息息和传真,使使用AT指令令控制发送短短消息。它采采用9V直流流电源供电,通通过RS-2232串行端端口与XSBBase2770试验箱连连接进行通信信。 图2-9 西西门子MC3352.5 视视频监控模块块视频采集模模块采用使用用中星微(VVimicrro)公司的的ZC03001P芯片的的摄像头, ZC03001P芯片可可支持USBB 1.1接接口,硬件最最高支持VGGA分辨率(66404880)。在VVG
10、A模式下下可达到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摄摄像头捕捉图图像,图像数数据通过以太
11、太网发送到PPC客户端进进行图像还原原。(3)以太太网通信基于于TCP/IIP协议,测测试环境为局域网网,若投入到到因特网的应应用,则需要要在服务端、客客户端所在的的局域网连接接到因特网的的网关即即路由器上,要要进行端口映映射,才可以以进行网络的的连接。图2-12 红红外串口与蓝蓝牙串口智能家居系系统的软件基基于Winddows CCE 5.00嵌入式操作作系统。Wiindowss CE被设设计成一种分分层结构,从从下而上一共共分为了硬件件层、OEMM层、操作系系统层和应用用层共四个层层3。这种种层次的结构构将硬件和软软件,操作系系统和应用软软件隔离开,以以便于实现系系统的移植。智智能家居的软
12、软件设计主要要是集中在应应用层。3 操作系系统的定制Windoows CEE 5.0嵌嵌入式操作系系统的定制依依靠Plattform Buildder5.00完成。Pllatforrm Buiilder是是微软公司设设计的用于嵌嵌入式操作平平台定制与驱驱动程序的开开发的工具。推推出它的目的的之一就是让让用户可以更更好的将嵌入入式操作系统统移植到特定定的目标平台台上。3.1 BBSP的安装装为了让Wiindowss CE 55.0能在实实验箱上运行行起来,还必必须安装XSSBase2270的板级级支持包(BBSP)。板板级支持包是是介于主板和和操作系统中中驱动程序之之间的一层,一一般认为它属属于
13、操作系统统的一部分,主主要是对操作作系统的支持持,为上层的的驱动程序提提供访问硬件件设备寄存器器的函数包。在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”的因特网网应用类型的的系统镜像设
14、设计4。如图图3-2所示示。图3-2 定定制系统时选选择BSP种种类3.2 添添加平台特征征和配置平台台为了使系统统在定制后能能够满足基本本的应用,并并保证对某些些设备的支持持,就要向所所设计的平台台中添加必要要的特征。(1)添加加USB AActivee Syncc()组件。只只有添加此组组件,才能使使用PC的UUSB接口与与Windoows CEE进行文件同同步。这也是是在应用软件件调试过程中中所必须的条条件。 (Cataalog-Core OS-WWindowws CE devicces-AAppliccationns-Endd Userr-ActtiveSyync-)(2)添加加Chi
15、neeseSiimpliffied Font。安安装中文简体体字体后,才才能正常显示示中文。(Cataalog-Core OS-WWindowws CE devicces-IInternnationnal-LLocalee Speccific Suppoort-CChinesseSimmpifieed-FFonts)(3)添加加文件系统支支持。(Cataalog - Corre OS - Wiindowss CE ddevicees - and Data Storee - SStoragge Mannager - FAAT )(4)添加加分区管理(Cataalog - Corre OS - W
16、iindowss CE ddevicees - and Data Storee - SStoragge Mannager -Parrtitioon Driiver) (5)添加加控制面板中中的存储器管管理组件(Cataalog - Corre OS - Wiindowss CE ddevicees - and Data Storee - SStoragge Mannager - Sttoragee Manaager CControol Pannel Appplet)(6)添加加基于软件的的输入系统(软软键盘等)(Cataalog - Corre OS - Wiindowss CE ddevic
17、ees - 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)(Cataa
18、log - 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选选项卡
19、,进行行系统地理位置和环环境语言支持的设设置。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 OO
20、S”菜单下下的“Syssgen”开开始组建操作作系统。如图图3-5所示示:图3-5 生成成操作系统镜镜像3.3 红红外串口与蓝蓝牙串口的打打开经测试,在在默认配置下下生成的系统统镜像,只打打开了位于XXSBasee270模块块板上的全功功能调试串口口,而位于接接口扩展板上上的红外串口口和蓝牙串口口并没有被打打开。为了能能够与家电控控制板和GSSM模块连接接,实现完整整的智能家居居系统的功能能,必须将它它们打开。(1)查找找中断号中断号的定定义是在试验验箱所提供的的板级支持包包中被配置的的。打开C:WINCEE500PPlatfoormXSSBase2270Srrcinccbsp_cfg.hh文
21、件。可以以看到调试串串口和通信串口的中中断号的定义义,如图3-6所示。图3-6 BBSP中的串串口中断定义义可以看到调调试串口BFFUART的的中断号是228,转化为为16进制为为0x1c;通信串口SSFUARTT中断号277,转换为116进制是00x1b。(2)修改改注册表打开以下文文件夹,其中中“F:pplatfoorm2770”是在在新建操作系系统平台时所所存储它的磁磁盘位置。F:Plattform270RRelDirrXSBaase2700_ARMVV4I_Reeleasee打开plaatformm.reg注注册表文件,在在此文件中包包含了对一些些硬件的初始始化的代码。在“IF BSP
22、_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:
23、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 C
24、ablle 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.n
25、nb0文件和和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应用程序序和网络应用用
26、程序,也可可以用来创建建网络服务、智智能设备应用用程序和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所所
27、示。图4-3 选择择软件开发包包支持单击“Neext”按钮钮进入选择应应用程序类型型和资源语言言程序界界面上采用的的语言的画面面。如图4-4所示,选选择“Diaalog bbased”(基基于对话框)类类型,资源语语言选择“中中文(中国)”。其其他项目保留留默认的选项项。图4-4 选择择应用程序种种类保持默认的的设置,一直直到完成新建建项目向导。进进入IDE环环境。集成环环境的窗口分分布如图4-5所示:图4-5 Viisual Studiio 20005集成环境境将对话框设设计成如图44-6所示:图4-6 智智能家居操作作界面设计表4-1 智能能家居应用软软件界面控件件配置控件类型控件名称功能
28、按钮控件初始化GSM初始化GSM模模块开始摄像打开摄像头,开开始视频捕捉捉停止摄像停止摄像头视频频捕捉开始监听打开ARM的99000号端端口,打开网网络通信停止监听关闭端口,停止止TCP通信信冰箱打开家中的冰箱箱设备灯光打开家中的灯光光设备微波炉打开家中的微波波炉设备空调打开家中的空调调设备关于我们查看软件作者版版权声明信息息退出程序关闭未关闭的线线程,退出程程序列表控件消息窗口用来显示用户发发回的短信记记录图片控件煤气煤气传感器报警警信号,报警警时红色,常常态时绿色烟雾烟雾传感器报警警信号,报警警时红色,常常态时绿色红外红外传感器报警警信号,报警警时红色,常常态时绿色编辑框信息框实时显示系统
29、运运行情况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 pPo
30、ortOwnner, 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 l
31、pSttring);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_dwWriit
32、eThrreadIDD写串口线程IDDHANDLEm_hReaddCloseeEventt读串口线程退出出事件HANDLEm_hWritteClosseEvennt写串口线程退出出事件4.2.22.1 打开开串口与配置置串口在Winddows CCE中,驱动动程序分为本本地设备驱动动和流设备驱驱动两种66。本地设设备如键盘、触触摸屏等,一一般在设备生生产后是不会会再更换的,相相应的驱动这这些设备的驱驱动程序也是是必需的。而而流接口设备备驱动程序可可以由第三方方提供,支持持另外添加到到系统中的设设备。而串口口就属于流接接口设备之一一。流设备驱动动在系统中是是以三位字符符串后跟一位位数字表示的的,
33、对于串口口而言,这三三位字符是“CCOM”(不不包括引号)。当当引用一个流流接口驱动程程序时,除了了三位字符后后跟一位数字字以外,还要要紧跟一个冒冒号“:”(英英文半角冒号号),冒号是是必需的,是是为了区别桌桌面Winddows的设设备驱动程序序的命名规则则。该函数的流流程图如图44-8所示:图4-8 OppenPorrt函数流程程图(1)串串口的打开所所有的流驱动动程序都将采采用CreaateFille函数打开开串口设备。在在Windoows CEE下,系统不不支持设备的的重叠I/OO,所以不能能在参数dwwFlagssAndAtttribuutes中传传递标志,返返回的句柄要要么是已打开开
34、的串口端口口的句柄,或或者是INVVAILIDD_HANDDLE_VAALUE。CCreateeFile与与大多数Wiindowss函数不一样样,打开失败败时,不返回回0。CreatteFilee函数的原型型如下:HANDLE CreatteFilee(LPCTSTRR lp, / 对象路径径名DWORD ddwDesiiredAcccess, /控制模式DWORD ddwSharreModee, / 共享享模式LPSECURRITY_AATTRIBBUTES lpSeccurityyAttriibutess, /安全属性性(也即销毁毁方式)DWORD ddwCreaationDDisposs
35、itionn, / 创建的方方式DWORD ddwFlaggsAndAAttribbutes, / 对象属性性HANDLE hTempplateFFile / 一一个文件模板板句柄);在CCESSeriess类中, HHANDLEE类型全局变变量m_hCComm存储储CreatteFilee函数打开串串口成功时的的返回值,凭凭借此句柄可可以控制打开开的串口对象象;以读写的的方式打开串串口。(2)串口口的设置打开串口后后,还必须对对端口配置好好正确的波特特率、字符长长度、停止位位等等。在OOpenPoort函数中中,使用两个个函数GettCommSState和和SetCoommStaate来配置
36、置串口。函数原型如如下: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支持奇偶校验ByteSizzeDat
37、abitts设置数据位为传传入型参daatabitts,范围448ParityNOPARITTY校验模式有效StopBittsStopbitts设置停止位为传传入型参sttopbittsfOutxCttsFlowwTRUE串口输出由端口口的CTS线线控制fOutxDssrFlowwTRUE串口输出由端口口的DSR线线控制fDtrSennsitivvityDTR_CONNTROL_ENABLLE续表4-4 OpenPPort函数数中的串口DDCB配置DCB定义项目目设置值备注fDsrSennsitivvityFALSEfTXConttinueOOnXofffTRUE串口接收缓冲区区已满时,且且驱
38、动程序已已传送了XOOFF字符,则则驱动程序停停止传送字符符fOutXFALSEXON/XOFFF控制不用用于控制串行行输出fInXFALSEXON/XOFFF控制不为为输入串行流流使用fErrorCCharFALSEfNullFALSE串行驱动不忽略略接收到的空空字节fRtsConntrolRTS_CONNTROL_ENABLLEfAbortOOnErroorFALSE串口发生错误时时,并不终止止串口读写来源:论文天天下论文网 lunweentiannxia.ccom(3)串口超时时设置 设置好串口驱驱动操作的配配置后,一个个必要的步骤骤是,设置端端口的超时值值。所谓超时时,是指Wiindo
39、wss CE.nnet在读串串口和写串口口的自动返回回前等待读或或写操作的时时间长度。在在程序中,用用以下两个函函数控制串行行超时。BOOL GeetCommmTimeoouts(HHANDLEE hFille, LPPCOMMTTIMEOUUTS lppCommTTimeouuts);BOOL SeetCommmTimeoouts(HHANDLEE hFille, LPPCOMMTTIMEOUUTS lppCommTTimeouuts);这两个函数数都包含了对对应的串行设设备的句柄和和COMMTTIMEOUUTS结构的的指针,COOMMTIMMEOUTSS结构定义为为:typedeff st
40、ruuct _CCOMMTIIMEOUTTSDWORD RReadInntervaalTimeeout;DWORD RReadTootalTiimeouttMultiiplierr;DWORD RReadTootalTiimeouttConsttant;DWROD WWriteTTotalTTimeouutMulttiplieer;DWORD WWriteTTotalTTimeouutConsstant;COMMTIIMEOUTTS;(4)其他他的函数设置串口的的输入输出缓缓冲区。原型型如下BOOL SeetupCoomm(HAANDLE hFilee, DWOORD dwwInQueeue,
41、 DDWORD dwOuttQueuee);设置串口检检测的事件集集。SetCommmMask(HANDLLE h 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
42、传输缓冲区为空空4.2.22.2关闭串串口调用ClooseHanndle可以以关闭一个串串行端口,用用关闭在打开开串口时创建建的那个句柄柄即可关闭串串口了。方法法如下CloseHaandle(m_hCoomm);关闭线程函函数:BOOL TeerminaateThrread(HHANDLEE hThrread, DWORDD dwExxitCodde); 其中,hTThreadd为要关闭的的线程的句柄柄。dwExxitCodde一般为00。若成功关关闭,则返回回一个非零值值。关闭串口口函数的工作作流程如图44-9所示。SHAPE * MMERGEFFORMATT 图4-9 CClosePPor
43、t函数数流程图4.2.22.3 串口口读线程读串口ReaddFile函函数原形:BOOL ReeadFille(HANDLEE hFille, /文件的句柄柄LPVOIDD lpBuuffer, /用于保存读读入数据的一一个缓冲区DWORD nNumbberOfBBytesTToReadd, /要读入的字字符数LPDWORRD lpNNumberrOfByttesReaad, /从文件中实实际读入的字字符数LPOVERRLAPPEED lpOOverlaapped /异步读取描描述,在Wiindowss CE中为为NULL);在该线程中中,若串口读读完一条信息息,则发送一一个系统消息息到系统窗
44、体体,该消息的的名称为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(),它它的函数