




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、論文摘要:本文討論了基于Windows CE.net 5.0嵌入式操作系統(tǒng),以使用Intel XScale270為CPU的ARM10嵌入式實驗箱為硬件基礎(chǔ),以Visual Studio 2005和Delphi為軟件開發(fā)平臺的智能家居系統(tǒng)的設(shè)計與實現(xiàn)。通過詳細的系統(tǒng)設(shè)計過程,開發(fā)了相應(yīng)的軟件程序,包括嵌入式操作系統(tǒng)Windows CE 5.0的定制、應(yīng)用程序的界面設(shè)計、程序開發(fā)和單片機系統(tǒng)的底層編程。本設(shè)計融合了嵌入式系統(tǒng)、通訊、單片機、軟件開發(fā)等學(xué)科的知識。系統(tǒng)測試結(jié)果表明,該系統(tǒng)設(shè)計基本滿足要求,并有一定的功能擴展空間。 1 緒論目前,科學(xué)技術(shù)發(fā)展迅速,借助飛速發(fā)展的網(wǎng)絡(luò)和信息技術(shù),人們可以
2、足不出戶地縱覽全球。為了適應(yīng)信息化的需求,科研機構(gòu)將智能化的理念引入小區(qū) HYPERLINK t _blank 管理,并進一步引入家庭,從而產(chǎn)生了智能家居的概念。將手機 HYPERLINK t _blank 通信和以太網(wǎng)通信技術(shù)引入智能家居的設(shè)計,恰好利用了現(xiàn)有的良好的通信條件,使在外的業(yè)主能及時了解家中的安全,提高業(yè)主的安全感,而且通過手機實時控制家電,提高了業(yè)主生活的舒適度。本文提出了了基于嵌入式式系統(tǒng)ARMM10的智能能控制平臺的的設(shè)計,功能能包括了短信信控制家電,傳傳感器探測非非正常 HYPERLINK t _blank 環(huán)境并且通過過手機短信告告知業(yè)主,以以及以太網(wǎng)實實時視頻監(jiān)控控等
3、功能。2 系統(tǒng)設(shè)設(shè)計方案2.1 硬硬件總體設(shè)計計框圖根據(jù)上文的的功能需要,設(shè)設(shè)計出由ARRM10為控控制核心,單單片機控制的的家電控制模模塊和傳感器器報警模塊,并并且包含GSSM通信模塊塊的智能家居居系統(tǒng),硬件件結(jié)構(gòu)框圖如如圖2-1所所示。SHAPE * MMERGEFFORMATT 圖2-1 硬件件設(shè)計框圖2.2 控控制核心選擇擇智能家居控控制系統(tǒng)采用用如圖2-22所示的XSSBase2270作為開開發(fā)平臺,該該平臺基于IIntel高性能的PPXA2700處理器,支支持Winddows CCE和Linnux等嵌入入式操作系統(tǒng)統(tǒng),是針對教教學(xué)和實驗的的多功能實驗驗平臺。PXA2770處理器的的
4、最高主頻可可達520MMHz,且該該處理器被加加入了Wirrelesss MXX技技術(shù),大大的的提高了多媒媒體處理能力力,而且加入入了Inteel SpeeedSteep動態(tài)電源源管理技術(shù),在在保證CPUU性能的前提提下,最大限限度的降低設(shè)設(shè)備功耗11。XSBasse270配配置32M FLASHH ROM,664M SDDRAM,并并配備了觸摸摸屏、以太網(wǎng)網(wǎng)、USB、串串口、CF/MMC、PPCMCIAA等接口。滿滿足了智能家家居系統(tǒng)控制制中心的硬件件要求。圖2-2XSSBase2270實驗箱箱展開圖2.3家電電控制板家電控制板板采用AT889C51為為控制核心。擴擴展板的元件件布局如圖22
5、-3所示,其其上有四盞LLED分別模模擬四種家電電,三個按鈕鈕模擬三種傳傳感器。其中中四盞LEDD分別連接單單片機的P11.0、P11.1、P11.2、P11.3;三個個按鈕分別連連接P2.00、P2.11、P2.22。圖2-3家電電控制模塊2.3.11 串行端口口電路家電控制板板采用串口與與XSBasse270實實驗箱進行通通信,其采用用了經(jīng)典的兼兼容RS-2232標(biāo)準(zhǔn)的的MAX2332芯片作為為串口的電平平轉(zhuǎn)換芯片。電電路的連接如如圖2-4所所示:圖2-4家電電控制板串行行接口電路如上圖所示示,家電擴展展板采用的是是常用的DBB9頭作為串串口接口,其其針腳定義圖圖如圖2-55所示:圖2-5
6、RSS-232 DB9頭針針腳定義圖其中2腳RRxD為接收收引腳,3腳腳TxD為發(fā)發(fā)送引腳,GGND為信號號地引腳。一一般情況下普普通串口只接接這幾個引腳腳;特殊的串串口,如藍牙牙串口除接上上述的三個腳腳之外,還接接了DSR引引腳和CTSS引腳,是因因為藍牙串口口的數(shù)據(jù)流輸輸出采用這兩兩個腳的信號號控制;而其其他引腳是跟跟MODEMM相關(guān)的。在在智能家居系系統(tǒng)中,家電電控制板接普普通串口,GGSM模塊接接藍牙串口。RS-2332信號相對對于信號地而而言,在正負負電平之間擺擺動。發(fā)送數(shù)數(shù)據(jù)時,發(fā)送送端輸出的正正電平在+55V到+155V之間,負負電平在-55V和-155V之間。無無數(shù)據(jù)傳輸時時,
7、線上為TTTL電平。接接收器典型的的工作電平在在+3V+12V與-3V-112V。由于于發(fā)送電平和和接收電平的的差僅為23V左右,所所以其共模抑抑制能力差,加加上雙絞線的的分布電容,信信號傳輸距離離最大為155m,最高速速率為20kkb/s22。MAX2332包含2個個驅(qū)動器、22個接收器和和一個電壓發(fā)發(fā)生器電路,提提供TIA/EIA-2232-F電電平。該器件件符合TIAA/EIA-232-FF標(biāo)準(zhǔn),每一一個接收器將將TIA/EEIA-2332-F電平平轉(zhuǎn)換成5VV TTL/CMOS電電平。每一個個發(fā)送器將TTTL/CMMOS電平轉(zhuǎn)轉(zhuǎn)換成TIAA/EIA-232-FF電平。圖2-6MAAX2
8、32引引腳圖2.3.22 家電控制制電路圖2-7 模模擬家電控制制電路家用電器控控制的接口電電路如圖2-7 所示,KK1K4 為繼電器,分分別控制四路路家電的閉合合和斷開,QQ1Q4 為繼電器線線圈電流驅(qū)動動,電路由單單片機的P11口進行控制制,DD1DD4 發(fā)發(fā)光二極管用用于顯示某路路控制電路的的工作情況,主主要為了調(diào)試試電路而設(shè)置置。2.3.33 傳感器接接口電路圖2-8 傳傳感器接口電電路圖煙霧、煤氣氣泄漏、紅外外等這些傳感感器的報警信信號通過光電電耦合接入單單片機的P22 口,如圖圖2-8 所所示,在傳感感器沒有報警警信號時,光光電耦合芯片片處于截止?fàn)顮顟B(tài),與之相相接的單片機機端口為低
9、電電平;當(dāng)傳感感器有報警,傳傳感器輸出高高電平,此時時光電耦合芯芯片導(dǎo)通,與與之相接的單單片機端口為為高電平,由由單片機對報報警信號進行行采集并做出出相應(yīng)處理。2-9所示的西西門子MC335 GSMM/GPRSS無線模塊作作為 HYPERLINK .com/class_free/147_1.shtml 通信工具。它它支持EGSSM900和和GSM18800雙頻,支支持數(shù)字、語語音、短消息息和傳真,使使用AT指令令控制發(fā)送短短消息。它采采用9V直流流電源供電,通通過RS-2232串行端端口與XSBBase2770試驗箱連連接進行通信信。 圖2-9 西西門子MC3352.5 視視頻監(jiān)控模塊塊視頻采
10、集模模塊采用使用用中星微(VVimicrro)公司的的ZC03001P芯片的的攝像頭, ZC03001P芯片可可支持USBB 1.1接接口,硬件最最高支持VGGA分辨率(66404880)。在VVGA模式下下可達到155幀/秒速率率,在CIFF(352288)和和 SIF(33202440)模式下下可達到300幀/秒速率率。它通過UUSB接口連連接到XSBBase2770試驗箱。圖2-103301P攝像像頭2.6總體體軟件設(shè)計方方案根據(jù)智能家家居的硬件設(shè)設(shè)計方案,設(shè)設(shè)計出軟件的的總體設(shè)計方方案如圖2-11所示:圖2-11 軟軟件設(shè)計框圖圖其中:、(1)家電電控制系統(tǒng)和和GSM網(wǎng)絡(luò)絡(luò)通信各自獨獨
11、占一個RSS-232串串口。家電控控制系統(tǒng)接XXSBasee270的紅紅外串口,GGSM模塊接接藍牙串口。如如圖2-122所示。(2)實時時視頻監(jiān)控通通過USB攝攝像頭捕捉圖圖像,圖像數(shù)數(shù)據(jù)通過以太太網(wǎng)發(fā)送到PPC客戶端進進行圖像還原原。(3)以太太網(wǎng)通信基于于TCP/IIP協(xié)議,測測試 HYPERLINK t _blank 環(huán)境為局域網(wǎng)網(wǎng),若投入到到因特網(wǎng)的應(yīng)應(yīng)用,則需要要在服務(wù)端、客客戶端所在的的局域網(wǎng)連接接到因特網(wǎng)的的網(wǎng)關(guān)即即路由器上,要要進行端口映映射,才可以以進行網(wǎng)絡(luò)的的連接。圖2-12 紅紅外串口與藍藍牙串口智能家居系系統(tǒng)的軟件基基于Winddows CCE 5.00嵌入式操作作系
12、統(tǒng)。Wiindowss CE被設(shè)設(shè)計成一種分分層結(jié)構(gòu),從從下而上一共共分為了硬件件層、OEMM層、操作系系統(tǒng)層和應(yīng)用用層共四個層層3。這種種層次的結(jié)構(gòu)構(gòu)將硬件和軟軟件,操作系系統(tǒng)和應(yīng)用軟軟件隔離開,以以便于實現(xiàn)系系統(tǒng)的移植。智智能家居的軟軟件設(shè)計主要要是集中在應(yīng)應(yīng)用層。3 操作系系統(tǒng)的定制Windoows CEE 5.0嵌嵌入式操作系系統(tǒng)的定制依依靠Plattform Buildder5.00完成。Pllatforrm Buiilder是是微軟公司設(shè)設(shè)計的用于嵌嵌入式操作平平臺定制與驅(qū)驅(qū)動程序的開開發(fā)的工具。推推出它的目的的之一就是讓讓用戶可以更更好的將嵌入入式操作系統(tǒng)統(tǒng)移植到特定定的目標(biāo)平臺
13、臺上。3.1 BBSP的安裝裝為了讓W(xué)iindowss CE 55.0能在實實驗箱上運行行起來,還必必須安裝XSSBase2270的板級級支持包(BBSP)。板板級支持包是是介于主板和和操作系統(tǒng)中中驅(qū)動程序之之間的一層,一一般認為它屬屬于操作系統(tǒng)統(tǒng)的一部分,主主要是對操作作系統(tǒng)的支持持,為上層的的驅(qū)動程序提提供訪問硬件件設(shè)備寄存器器的函數(shù)包。在PC上安安裝好Winndows CE.neet5.0和和Platfform BBuildeer5.0后后,打開實驗驗箱附帶光盤盤中的BSPP文件夾,運運行XSBaase2700_V0100106.mmsi文件,安安裝XSBaase2700的BSP。如如圖
14、3-1所所示。圖3-1 BSSP安裝程序序文件安裝好BSSP后,進入入Platfform BBuildeer5.0中中定制基于“EEMDOORR SYSTTEMS XXSBASEE270:AARMV4II”的因特網(wǎng)網(wǎng)應(yīng)用類型的的系統(tǒng)鏡像設(shè)設(shè)計4。如圖圖3-2所示示。圖3-2 定定制系統(tǒng)時選選擇BSP種種類3.2 添添加平臺特征征和配置平臺臺為了使系統(tǒng)統(tǒng)在定制后能能夠滿足基本本的應(yīng)用,并并保證對某些些設(shè)備的支持持,就要向所所設(shè)計的平臺臺中添加必要要的特征。(1)添加加USB AActivee Syncc()組件。只只有添加此組組件,才能使使用PC的UUSB接口與與Windoows CEE進行文件
15、同同步。這也是是在應(yīng)用軟件件調(diào)試過程中中所必須的條條件。 (Cataalog-Core OS-WWindowws CE devicces-AAppliccationns-Endd Userr-ActtiveSyync-)(2)添加加ChineeseSiimpliffied Font。安安裝中文簡體體字體后,才才能正常顯示示中文。(Cataalog-Core OS-WWindowws CE devicces-IInternnationnal-LLocalee Speccific Suppoort-CChinesseSimmpifieed-FFonts)(3)添加加文件系統(tǒng)支支持。(Cataalo
16、g - Corre OS - Wiindowss CE ddevicees - and Data Storee - SStoragge Mannager - FAAT )(4)添加加分區(qū) HYPERLINK t _blank 管理(Cataalog - Corre OS - Wiindowss CE ddevicees - and Data Storee - SStoragge Mannager -Parrtitioon Driiver) (5)添加加控制面板中中的存儲器管管理組件(Cataalog - Corre OS - Wiindowss CE ddevicees - and Data
17、Storee - SStoragge Mannager - Sttoragee Manaager CControol Pannel Appplet)(6)添加加基于軟件的的輸入系統(tǒng)(軟軟鍵盤等)(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 S
18、Screenns)(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) 完成
19、特性的的添加后,設(shè)設(shè)置平臺的屬屬性。在“PPlatfoorm”菜單單下單擊“SSettinng”,在CConfigguratiion下拉菜菜單中選擇“EEmdoorr Systtems XXSBasee270:AARMV4II Releease”項項,選擇Loocale選選項卡,進行行系統(tǒng) HYPERLINK /class_free/119_1.shtml 地理位置和環(huán)環(huán)境 HYPERLINK t _blank 語言支持的設(shè)設(shè)置。Loccales列列表中,為最最下端的“中文(中中國)”項打打勾。在Deefaultt Langguage下下拉菜單里選選擇“中文(中中國)”為系系統(tǒng)的默認 HYPE
20、RLINK /class_free/135_1.shtml 語語言。如圖33-3所示。 圖3-3 選擇擇操作系統(tǒng)默默認語言在Builld Opttion列表表中,只選擇擇Enablle Ebooot Sppace iin Memmory(IIMGEBOOOT=1)和Writte Runn-timee Imagge to Flashh Memoory(IMMGFLASSH=1)兩兩項。如圖33-4所示。圖3-4 程序序組建選項設(shè)設(shè)置單擊“Buuild OOS”菜單下下的“Syssgen”開開始組建操作作系統(tǒng)。如圖圖3-5所示示:圖3-5 生成成操作系統(tǒng)鏡鏡像3.3 紅紅外串口與藍藍牙串口的打打開
21、經(jīng)測試,在在默認配置下下生成的系統(tǒng)統(tǒng)鏡像,只打打開了位于XXSBasee270模塊塊板上的全功功能調(diào)試串口口,而位于接接口擴展板上上的紅外串口口和藍牙串口口并沒有被打打開。為了能能夠與家電控控制板和GSSM模塊連接接,實現(xiàn)完整整的智能家居居系統(tǒng)的功能能,必須將它它們打開。(1)查找找中斷號中斷號的定定義是在試驗驗箱所提供的的板級支持包包中被配置的的。打開C:WINCEE500PPlatfoormXSSBase2270Srrcinccbsp_cfg.hh文件??梢砸钥吹秸{(diào)試串串口和 HYPERLINK t _blank 通信串口的中中斷號的定義義,如圖3-6所示。圖3-6 BBSP中的串串口中斷
22、定義義可以看到調(diào)調(diào)試串口BFFUART的的中斷號是228,轉(zhuǎn)化為為16進制為為0 x1c;通信串口SSFUARTT中斷號277,轉(zhuǎn)換為116進制是00 x1b。(2)修改改注冊表打開以下文文件夾,其中中“F:pplatfoorm2770”是在在新建操作系系統(tǒng)平臺時所所存儲它的磁磁盤位置。F:Plattform270RRelDirrXSBaase2700_ARMVV4I_Reeleasee打開plaatformm.reg注注冊表文件,在在此文件中包包含了對一些些硬件的初始始化的代碼。在“IF BSP_NNOSERIIAL!”與與“END BSP_NNOSERIIAL!”兩兩句代碼之間間,可以看到
23、到藍牙串口的的注冊表初始始化代碼,下下面只需要添添加初始化紅紅外串口的代代碼:;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 oobjec
24、tt 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,
25、05,00,000,00, 10,011,00,000, 000,4B,000,00, 00,000, 088, 00, 00, 00,000,00,000修改好注冊冊表代碼以后后,保存pllatforrm.regg文件。打開開剛才建立的的操作系統(tǒng)設(shè)設(shè)計工程,選選擇Builld OS菜菜單下的Maake Ruun-Timme Imaage命令,生生成新的內(nèi)核核文件NK.bin。3.4 操操作系統(tǒng)的生生成與下載定制并組建建Windoows CEE后,將會生生成BoottLoadeerEBBOOT.nnb0文件和和NK內(nèi)核nk.bbin,將它它們燒寫進入入XSBasse270實實驗箱。4 應(yīng)用軟軟
26、件設(shè)計4.1 應(yīng)應(yīng)用程序編寫寫 HYPERLINK .com/class_free/153_1.shtml 環(huán)境開發(fā)環(huán)境:Microosoft Visuaal Stuudio 22005開發(fā)語言:Microosoft Visuaal C+ 20055軟件開發(fā)包包:XSBaase2700 SDK智能家居系系統(tǒng)的應(yīng)用程程序采用Viisual Studiio 20005進行開發(fā)發(fā)。Visuual Sttudio是是微軟公司開開發(fā)的Winndows平平臺上的應(yīng)用用程序開發(fā)環(huán)環(huán)境。Vissual SStudioo可以創(chuàng)建WWindowws 下的WWindowws應(yīng)用程序序和網(wǎng)絡(luò)應(yīng)用用程序,也可可以用來創(chuàng)
27、建建網(wǎng)絡(luò)服務(wù)、智智能設(shè)備應(yīng)用用程序和Offfice插插件5。Viisual Studiio 20005面向.nnet框架(22.0版本),同同時可以開發(fā)發(fā)跨平臺的應(yīng)應(yīng)用程序。圖4-1 Viisual Studiio 200054.2 智智能家居人機機接口設(shè)計打開Vissual SStudioo 20055,創(chuàng)建一個個基于MFCC Smarrt Devvice AAppliccationn的VC+程序。如圖圖4-2所示示:圖4-2 新建建智能家居的的應(yīng)用程序到選擇平臺臺步驟時選擇擇XSBasse270平平臺,刪除默默認的Poccket PPC 20003平臺。如如圖4-3所所示。圖4-3 選擇擇
28、軟件開發(fā)包包支持單擊“Neext”按鈕鈕進入選擇應(yīng)應(yīng)用程序類型型和資源語言言程序界界面上采用的的語言的畫面面。如圖4-4所示,選選擇“Diaalog bbased”(基基于對話框)類類型,資源語語言選擇“中中文(中國)”。其其他項目保留留默認的選項項。圖4-4 選擇擇應(yīng)用程序種種類保持默認的的設(shè)置,一直直到完成新建建項目向?qū)?。進進入IDE環(huán)環(huán)境。集成環(huán)環(huán)境的窗口分分布如圖4-5所示:圖4-5 Viisual Studiio 20005集成環(huán)境境將對話框設(shè)設(shè)計成如圖44-6所示:圖4-6 智智能家居操作作界面設(shè)計表4-1 智能能家居應(yīng)用軟軟件界面控件件配置控件類型控件名稱功能按鈕控件初始化GSM
29、初始化GSM模模塊開始攝像打開攝像頭,開開始視頻捕捉捉停止攝像停止攝像頭視頻頻捕捉開始監(jiān)聽打開ARM的99000號端端口,打開網(wǎng)網(wǎng)絡(luò)通信停止監(jiān)聽關(guān)閉端口,停止止TCP通信信冰箱打開家中的冰箱箱設(shè)備燈光打開家中的燈光光設(shè)備微波爐打開家中的微波波爐設(shè)備空調(diào)打開家中的空調(diào)調(diào)設(shè)備關(guān)于我們查看軟件作者版版權(quán)聲明信息息退出程序關(guān)閉未關(guān)閉的線線程,退出程程序列表控件消息窗口用來顯示用戶發(fā)發(fā)回的短信記記錄圖片控件煤氣煤氣傳感器報警警信號,報警警時紅色,常常態(tài)時綠色煙霧煙霧傳感器報警警信號,報警警時紅色,常常態(tài)時綠色紅外紅外傳感器報警警信號,報警警時紅色,常常態(tài)時綠色編輯框信息框?qū)崟r顯示系統(tǒng)運運行情況4.3串口
30、 HYPERLINK t _blank 通通信功能設(shè)計計 4.3.11 串口通信信協(xié)議串口通信協(xié)協(xié)議采用CCCESeriies類實現(xiàn)現(xiàn),通過對此此類的成員函函數(shù)的調(diào)用,完完成對串口的的初始化、讀讀寫操作等,在在不用串口的的情況下,還還可以關(guān)閉串串口。4.3.22 軟件的實實現(xiàn)在Visuual Sttudio的的解決方案視視圖里添加類類CCESeeries,如如圖4-7所所示。CCEESeriees類的成員員函數(shù)如表44-2所示。圖4-7 在VVS20055中建立CCCESeriies類表4-2 串口口操作類CCCESeriies的成員員函數(shù)函數(shù)作用函數(shù)名稱打開串口BOOL OppenPorrt
31、(HWNND pPoortOwnner, UUINT pportNoo = 11, UINNT bauud= 96600,UIINT paarity= NOPAARITY, UINTT dataabits= 8,UIINT sttopbitts= 0 );關(guān)閉串口Void CllosePoort();設(shè)置串口超時BOOL SeetSeriiesTimmeoutss(COMMMTIMEOOUTS CCommTiimeOutts);讀串口線程Static DWORRD WINNAPI RReadThhreadFFunc(LLPVOIDD lparram);寫串口BOOL WrritePoort(L
32、PPCTSTRR lpSttring);BOOL WrritePoort(chhar *bbuf,innt nSiize);BOOL WrritePoort(chhar *bbuf);關(guān)閉讀線程Void ClloseReeadThrread();表4-3 串口口操作類CCCESeriies的成員員變量變量類型變量名稱作用HANDLEm_hCommm已打開的串口句句柄HWNDm_hWnd此串口類所屬的的窗口句柄HANDLEm_hReaddThreaad讀串口線程句柄柄HANDLEm_hWritteThreead寫串口線程句柄柄DWORDm_dwReaadThreeadID讀串口線程IDDDWOR
33、Dm_dwWriiteThrreadIDD寫串口線程IDDHANDLEm_hReaddCloseeEventt讀串口線程退出出事件HANDLEm_hWritteClosseEvennt寫串口線程退出出事件 打開開串口與配置置串口在Winddows CCE中,驅(qū)動動程序分為本本地設(shè)備驅(qū)動動和流設(shè)備驅(qū)驅(qū)動兩種66。本地設(shè)設(shè)備如鍵盤、觸觸摸屏等,一一般在設(shè)備生生產(chǎn)后是不會會再更換的,相相應(yīng)的驅(qū)動這這些設(shè)備的驅(qū)驅(qū)動程序也是是必需的。而而流接口設(shè)備備驅(qū)動程序可可以由第三方方提供,支持持另外添加到到系統(tǒng)中的設(shè)設(shè)備。而串口口就屬于流接接口設(shè)備之一一。流設(shè)備驅(qū)動動在系統(tǒng)中是是以三位字符符串后跟一位位數(shù)字表示的
34、的,對于串口口而言,這三三位字符是“CCOM”(不不包括引號)。當(dāng)當(dāng)引用一個流流接口驅(qū)動程程序時,除了了三位字符后后跟一位數(shù)字字以外,還要要緊跟一個冒冒號“:”(英英文半角冒號號),冒號是是必需的,是是為了區(qū)別桌桌面Winddows的設(shè)設(shè)備驅(qū)動程序序的命名規(guī)則則。該函數(shù)的流流程圖如圖44-8所示:圖4-8 OppenPorrt函數(shù)流程程圖(1)串串口的打開所所有的流驅(qū)動動程序都將采采用CreaateFille函數(shù)打開開串口設(shè)備。在在Windoows CEE下,系統(tǒng)不不支持設(shè)備的的重疊I/OO,所以不能能在參數(shù)dwwFlagssAndAtttribuutes中傳傳遞標(biāo)志,返返回的句柄要要么是已打
35、開開的串口端口口的句柄,或或者是INVVAILIDD_HANDDLE_VAALUE。CCreateeFile與與大多數(shù)Wiindowss函數(shù)不一樣樣,打開失敗敗時,不返回回0。CreatteFilee函數(shù)的原型型如下:HANDLE CreatteFilee(LPCTSTRR lp, / 對象路徑徑名DWORD ddwDesiiredAcccess, /控制模式DWORD ddwSharreModee, / 共享享模式LPSECURRITY_AATTRIBBUTES lpSeccurityyAttriibutess, /安全屬性性(也即銷毀毀方式)DWORD ddwCreaationDDispo
36、ssitionn, / 創(chuàng)建的方方式DWORD ddwFlaggsAndAAttribbutes, / 對象屬性性HANDLE hTempplateFFile / 一一個文件模板板句柄);在CCESSeriess類中, HHANDLEE類型全局變變量m_hCComm存儲儲CreatteFilee函數(shù)打開串串口成功時的的返回值,憑憑借此句柄可可以控制打開開的串口對象象;以讀寫的的方式打開串串口。(2)串口口的設(shè)置打開串口后后,還必須對對端口配置好好正確的波特特率、字符長長度、停止位位等等。在OOpenPoort函數(shù)中中,使用兩個個函數(shù)GettCommSState和和SetCoommStaate來
37、配置置串口。函數(shù)原型如如下:BOOL SeetCommmStatee(HANDDLE hRRle, LLPDCB lpDCBB);BOOL GeetCommmStatee(HANDDLE hFFile, LPDCBB lpDCCB);這兩個函數(shù)數(shù)都包含了同同樣的參數(shù),即即已打開的串串口的句柄和和指向DCBB結(jié)構(gòu)的指針針。DCB結(jié)結(jié)構(gòu)的設(shè)置如如表4-4所所示。表4-4 OOpenPoort函數(shù)中中的串口DCCB配置DCB定義項目目設(shè)置值備注BaudRatteBaud設(shè)置波特率為傳傳入型參baaud的值fBinaryyTRUE二進制模式有效效fParityyTRUE支持奇偶校驗ByteSizzeD
38、atabitts設(shè)置數(shù)據(jù)位為傳傳入型參daatabitts,范圍448ParityNOPARITTY校驗?zāi)J接行topBittsStopbitts設(shè)置停止位為傳傳入型參sttopbittsfOutxCttsFlowwTRUE串口輸出由端口口的CTS線線控制fOutxDssrFlowwTRUE串口輸出由端口口的DSR線線控制fDtrSennsitivvityDTR_CONNTROL_ENABLLE續(xù)表4-4 OpenPPort函數(shù)數(shù)中的串口DDCB配置DCB定義項目目設(shè)置值備注fDsrSennsitivvityFALSEfTXConttinueOOnXofffTRUE串口接收緩沖區(qū)區(qū)已滿時,且
39、且驅(qū)動程序已已傳送了XOOFF字符,則則驅(qū)動程序停停止傳送字符符fOutXFALSEXON/XOFFF控制不用用于控制串行行輸出fInXFALSEXON/XOFFF控制不為為輸入串行流流使用fErrorCCharFALSEfNullFALSE串行驅(qū)動不忽略略接收到的空空字節(jié)fRtsConntrolRTS_CONNTROL_ENABLLEfAbortOOnErroorFALSE串口發(fā)生錯誤時時,并不終止止串口讀寫來源: HYPERLINK t _blank 論文天天下論文網(wǎng) HYPERLINK t _blank lunweentiannxia.ccom(3)串口超時時設(shè)置 設(shè)置好串口驅(qū)驅(qū)動操作的
40、配配置后,一個個必要的步驟驟是,設(shè)置端端口的超時值值。所謂超時時,是指Wiindowss CE.nnet在讀串串口和寫串口口的自動返回回前等待讀或或?qū)懖僮鞯臅r時間長度。在在程序中,用用以下兩個函函數(shù)控制串行行超時。BOOL GeetCommmTimeoouts(HHANDLEE hFille, LPPCOMMTTIMEOUUTS lppCommTTimeouuts);BOOL SeetCommmTimeoouts(HHANDLEE hFille, LPPCOMMTTIMEOUUTS lppCommTTimeouuts);這兩個函數(shù)數(shù)都包含了對對應(yīng)的串行設(shè)設(shè)備的句柄和和COMMTTIMEOUUT
41、S結(jié)構(gòu)的的指針,COOMMTIMMEOUTSS結(jié)構(gòu)定義為為:typedeff struuct _CCOMMTIIMEOUTTSDWORD RReadInntervaalTimeeout;DWORD RReadTootalTiimeouttMultiiplierr;DWORD RReadTootalTiimeouttConsttant;DWROD WWriteTTotalTTimeouutMulttiplieer;DWORD WWriteTTotalTTimeouutConsstant;COMMTIIMEOUTTS;(4)其他他的函數(shù)設(shè)置串口的的輸入輸出緩緩沖區(qū)。原型型如下BOOL Seetup
42、Coomm(HAANDLE hFilee, DWOORD dwwInQueeue, DDWORD dwOuttQueuee);設(shè)置串口檢檢測的事件集集。SetCommmMask(HANDLLE h ddwEvtMMask);通過這個函數(shù),可可以使線程等等待如表4-5中的常見見的串口驅(qū)動動程序事件。表4-5 串串口驅(qū)動程序序事件事件標(biāo)志表達意義EV_BREAAK檢測到中斷EV_CTSCTS更改狀態(tài)態(tài)EV_DSRData Seet Reaady信號更更改狀態(tài)EV_ERR串行驅(qū)動程序檢檢測到錯誤EV_RKSDDReceivee Linee Signnal Deetect 行更改狀態(tài)態(tài)EV_RXCHH
43、AR接收到一個字符符EV_RXFLLAG接收到一個事件件字符EV_TXEMMPTY傳輸緩沖區(qū)為空空關(guān)閉串串口調(diào)用ClooseHanndle可以以關(guān)閉一個串串行端口,用用關(guān)閉在打開開串口時創(chuàng)建建的那個句柄柄即可關(guān)閉串串口了。方法法如下CloseHaandle(m_hCoomm);關(guān)閉線程函函數(shù):BOOL TeerminaateThrread(HHANDLEE hThrread, DWORDD dwExxitCodde); 其中,hTThreadd為要關(guān)閉的的線程的句柄柄。dwExxitCodde一般為00。若成功關(guān)關(guān)閉,則返回回一個非零值值。關(guān)閉串口口函數(shù)的工作作流程如圖44-9所示。SHAPE
44、 * MMERGEFFORMATT 圖4-9 CClosePPort函數(shù)數(shù)流程圖 串口口讀線程讀串口ReaddFile函函數(shù)原形:BOOL ReeadFille(HANDLEE hFille, /文件的句柄柄LPVOIDD lpBuuffer, /用于保存讀讀入數(shù)據(jù)的一一個緩沖區(qū)DWORD nNumbberOfBBytesTToReadd, /要讀入的字字符數(shù)LPDWORRD lpNNumberrOfByttesReaad, /從文件中實實際讀入的字字符數(shù)LPOVERRLAPPEED lpOOverlaapped /異步讀取描描述,在Wiindowss CE中為為NULL);在該線程中中,若串
45、口讀讀完一條信息息,則發(fā)送一一個系統(tǒng)消息息到系統(tǒng)窗體體,該消息的的名稱為WMM_RXCHHAR_ALLL,是一個個用戶自定義義消息。發(fā)送送給系統(tǒng)窗體體的附帶消息息包含收到的的消息的內(nèi)容容和消息的長長度。發(fā)送系統(tǒng)消息的的API函數(shù)數(shù)SendMMessagge的原型如如下:LRESULTT SenddMessaage(HWWND hWWnd,UIINT Mssg,WPAARAM wwParamm,LPARRAM IPParam);圖4-10 串串口讀線程流流程圖 寫串串口在CCESSeriess類中,一共共編寫了三個個寫串口的函函數(shù),為的是是方便不同情情況下的調(diào)用用。如要向?qū)憣懸阎L度的的字符串,
46、可可以采用WrritePoort(chhar *bbuf,innt nSiize)函數(shù)數(shù)。寫未知長長度字符串時時,采用WrritePoort(chhar *bbuf)函數(shù)數(shù),字符串的的長度將在函函數(shù)內(nèi)部進行行計算。前者者提高了寫串串口的時間效效率。這三個個函數(shù)中,采采用了一個共共同的APII函數(shù)WriiteFille(),它它的函數(shù)原型型如下:BOOL WWriteFFile(HANDLE hFilee, / 文件件句柄LPCVOIDD lpBuuffer, / 數(shù)據(jù)據(jù)緩存區(qū)指針針DWORD nnNumbeerOfByytesTooWritee, / 要寫寫的字節(jié)數(shù)LPDWORDD lpNuu
47、mberOOfByteesWrittten, / 用于于保存實際寫寫入字節(jié)數(shù)的的存儲區(qū)域的的指針LPOVERLLAPPEDD lpOvverlappped / OVVERLAPPPED結(jié)構(gòu)構(gòu)體指針,CCE里設(shè)為NNULL);5 串口類的的調(diào)用在主程序中中,必須調(diào)用用此CCESSeriess類,以達到到操作串口的的目的。在定義智能能家居的窗口口行為的CSSmartHHomeDllg類的頭文文件CSmaartHommeDlg.h文件中,添添加CCESSeriess.h頭文件件。并且新建建一個pubblic HYPERLINK t _blank 公共共型變量m_BTSerrial(藍藍牙串口)和和m
48、_IRSSeriess進行對CCCESeriies類的實實例化。CCESeriies m_BTSerrial;CCESeriies m_IRSerrial;在用于CSSmartHHomeDllg類成員函函數(shù)的定義的的文件CSmmartHoomeDlgg.cpp文文件中,采用用形如m_BBTSeriial.OppenPorrt(thiis-m_hWnd,1,96000)的方式式進行串口類類成員函數(shù)的的調(diào)用。 串口口的監(jiān)聽在讀串口線線程中,讀完完串口的一條條信息后發(fā)送送名為WM_RXCHAAR_ALLL的系統(tǒng)消息息給系統(tǒng)窗體體。在窗體程程序中,必須須對其進行響響應(yīng)。在CSmarttHomeDDlg
49、.cppp文件中,添添加一條消息息響應(yīng)的聲明明:ON_MESSSAGE(WWM_RXCCHAR_AALL,OnnComReecvMsgg)其中OnCommRecvMMsg為對其其消息響應(yīng)的的函數(shù),函數(shù)數(shù)的聲明如下下:afx_msgg longg OnCoomRecvvMsg(WWPARAMM wParram, LLPARAMM lParram);其中“afx_msg”說說明該函數(shù)是是一消息響應(yīng)應(yīng)函數(shù)。4.4 GGSM HYPERLINK t _blank 通信模塊 智能家家居以GSMM網(wǎng)絡(luò)作為數(shù)數(shù)據(jù)的無線傳傳輸網(wǎng)絡(luò),利利用基于GSSM網(wǎng)絡(luò)上的的短信息服務(wù)務(wù),完成智能能家居的遠程程安全監(jiān)控和和無
50、線報警的的功能。4.4.1 設(shè)設(shè)計基本原理理1 PDU編編碼規(guī)則自短信息技技術(shù)被開發(fā)到到現(xiàn)在,對短短信息的控制制方式包含了了Blockk Modee、基于ATT的Textt Modee基于AT指指令的PDUU Modee。 使用Bloock模式需需要廠家驅(qū)動動的支持,隨隨著技術(shù)的發(fā)發(fā)展,后兩種種模式將其取取代。Texxt模式比較較簡單,但不不能發(fā)送中文文短信息。在在智能家居的的軟件設(shè)計中中,采用的是是基于PDUU模式,該模模式支持各個個國家 HYPERLINK /class_free/135_1.shtml 語言,當(dāng)然也也包括中文。在在智能家居中中,采用中文文報警和中文文指令。PDU數(shù)據(jù)據(jù)包格
51、式,是是手機發(fā)送短短信的一個數(shù)數(shù)據(jù)單位77。其中的的發(fā)送源手機機號碼、短消消息服務(wù)中心心號碼(SMMSC)、時時間戳等都是是用壓縮BCCD碼表示,低低位在前,高高位在后。在在PDU模式式中,可采用用Bit7、BBit8和UUCS2編碼碼方式對短消消息發(fā)送內(nèi)容容進行編碼。這這三種編碼方方式可以發(fā)送送的最大字符符數(shù)分別為1160,1440和70。其中Bitt7編碼發(fā)送送普通ASCCII字符,從從0 x00到到0 x7f,共可以表示示128個字字符。而短消消息的報文是是以8位字節(jié)節(jié)傳輸?shù)模跃捅仨毎寻?位碼壓縮縮成7位碼。實實現(xiàn)方法是: 將第二個個字符的最后后一位, 補補充到第一個個字符的前面面
52、第一位, 第三個字符符的后兩位, 補充到第第二個字符的的前兩位, 依次類推, 就可得到到相應(yīng)的字符符串。最后轉(zhuǎn)轉(zhuǎn)換成十六進進制。Bit8編編碼通常用于于發(fā)送任何二二進制數(shù)據(jù)。UCS2編編碼用于發(fā)送送Unicoode字符。它它固定使用116位共兩個個字節(jié)來表示示一個字符,共共可以表示665535個個字符。圖44-11和圖圖4-12分分別是接收和和發(fā)送短信的的報文格式。圖4-11 接接收短信的報報文格式圖4-12 發(fā)發(fā)送短消息的的報文格式實例一、發(fā)送短短信時的PDDU碼:08 91 668 31 08 200 01 005 F0 11 000 0B 991 31 58 811 27 664 F8
53、00 000 00 006 C8 32 9BB FD 00E 01表4-6 發(fā)送送PDU包解解析分段含義說明08SMSC地址信信息的長度共8個八位字節(jié)節(jié)(包括911)91SMSC地址格格式(TONN/NPI)用國際格式號碼碼(在前面加加+)68 31 008 20 01 055 F0SMSC地址861380002505000,補FF湊成偶數(shù)數(shù)個11基本參數(shù)(TPP-MTI/VFP)發(fā)送,TP-VVF用相對格格式00消息基準(zhǔn)值(TTP-MR)00B目標(biāo)地址數(shù)字個個數(shù)共11位,不包包括補足的F91目標(biāo)地址格式(TON/NNPI)用國際格式號碼碼(在前面加加+)68 31 118 48 31 466
54、 F9目標(biāo)地址(TPP-DA)861381884136449,補FF湊成偶數(shù)數(shù)個00協(xié)議標(biāo)識(TPP-PID)是普通GSM類類型,點到點點方式00用戶信息編碼方方式(TP-DCS)7-bit編碼碼00有效期(TP-VP)5分鐘06用戶信息長度(TP-UDDL)實際長度6個字字節(jié)C8 32 99B FD 0E 011用戶信息(TPP-UD)“Hello!”結(jié)合發(fā)送短信的的報文格式,知知道短消息中中心號碼是:+861338002110500,對對方號碼是:1381884136449,消息內(nèi)內(nèi)容是“Heello!”。實例二、接收短短信時的PDDU碼08 91 668 31 08 200 01 005
55、 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個八位字節(jié)節(jié)(包括911)91SMSC地址格格式(TONN/NPI)用國際格式號碼碼(在前面加加+)68 31 008 20 05 055 F0SMSC地址861380002505000,補FF湊成偶數(shù)數(shù)位84基本參數(shù)(TPP-MTI/MMS/RRP)接收,無更多消消息,有回復(fù)復(fù)地址0B回復(fù)地址數(shù)字個個數(shù)共11個十進制制數(shù)(不包括括F)9
56、1回復(fù)地址格式(TON/NNPI)用國際格式號碼碼(在前面加加+)68 31 558 81 27 644 F8回復(fù)地址(TPP-RA)861385118724668,補FF湊成偶數(shù)數(shù)位00協(xié)議標(biāo)識(TPP-PID)是普通GSM類類型,點到點點方式08用戶信息編碼方方(TP-DDCS)UCS2編碼30 30 221 80 63 544 80時間戳(TP-SCTS)2003-3-12 088:36:445 +88時區(qū)06用戶信息長度(TP-UDDL)實際長度6個字字節(jié)53 4E 44E 1C 00 211用戶信息(TPP-UD)“華東!”短消息中心號碼碼是:+8661380002105000,對方
57、號號碼是1388518722468,消消息內(nèi)容是“華華東!”。2 AT指令令在智能家居中,控控制中心通過過串口給MCC35模塊發(fā)發(fā)送AT指令令以達到控制制它的目的。表表4-8中是是一些系統(tǒng)中中采用的ATT指令。表4-8 系統(tǒng)統(tǒng)采用的ATT指令A(yù)T指令功能AT+CMGFF=0選擇短消息信息息格式,等于于0時為PDDU格式,等等于1時為文文本模式,AT+CNMII=1,1,0,0,11設(shè)置為短信到達達時自動提醒醒AT+CMGSS=?發(fā)送短消息,發(fā)發(fā)送成功則返返回OK字符符串AT+CMGRR=?讀取短消息,讀讀取成功則返返回+CMGGR: 0,iidcoontenttAT+CMGDD=?刪除短消息4
58、.4.22 軟件的實實現(xiàn) PDDU編碼解碼碼短信的PDDU解碼和編編碼的功能由由智能家居軟軟件工程中的的CEncoode類實現(xiàn)現(xiàn)。CEncodee類的成員函函數(shù)如表4-9所示:表4-9 CEEncodee類的方法方法備注Int gsmmStrinng2Byttes(coonst cchar* pSrc, unsiigned char* pDstt, intt nSrccLengtth)可打印字符串轉(zhuǎn)轉(zhuǎn)換為字節(jié)數(shù)數(shù)據(jù)如:C83229BFD00E01 - 0 xC8, 0 x322, 0 x99B, 0 xxFD, 00 x0E, 0 x01int gssmBytees2Strring(ccons
59、t unsiggned cchar* pSrc, charr* pDsst, innt nSrrcLenggth)字節(jié)數(shù)據(jù)轉(zhuǎn)換為為可打印字符符串如:0 xC88, 0 x332, 0 xx9B, 00 xFD, 0 x0E, 0 x011 - C83329BFDD0E01int gsmmEncodde7bitt(consst chaar* pSSrc, uunsignned chhar* ppDst, int nnSrcLeength)7bit編碼int gsmmDecodde7bitt(consst unssignedd charr* pSrrc, chhar* ppDst, int nnS
60、rcLeength)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 gsmmDecodd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)生青春成長路上的困惑解讀
- 醫(yī)療器械產(chǎn)品使用不當(dāng)風(fēng)險免責(zé)協(xié)議書
- 農(nóng)業(yè)生產(chǎn)應(yīng)急管理與風(fēng)險防范方案
- 高考文言文一輪復(fù)習(xí):《元史》專練
- 高考語文答題技巧指導(dǎo)
- 商務(wù)往來溝通文書寫作指南
- 企業(yè)法務(wù)顧問服務(wù)協(xié)議書與風(fēng)險提示告知書
- 涵洞工程勞務(wù)分包合同
- 高考語文一輪復(fù)習(xí)-文言實詞盤點8:敝、蔽、便
- 《數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)指導(dǎo):算法與程序設(shè)計基礎(chǔ)》
- 胸椎小關(guān)節(jié)紊亂診斷與治療-課件
- 四川省德陽市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細及行政區(qū)劃代碼
- Unit1Developingideaslittlewhitelies課件-高中英語外研版必修第三冊
- Unit 2 Listening and speaking 課件-高中英語人教版(2019)選擇性必修第二冊
- (參考)食品加工操作流程圖
- 員工面試登記表
- 鋼棧橋施工方案型鋼
- PySide學(xué)習(xí)教程
- 事業(yè)單位綜合基礎(chǔ)知識考試題庫 綜合基礎(chǔ)知識考試題庫.doc
- 譯林初中英語教材目錄
- 物業(yè)交付后工程維修工作機制
評論
0/150
提交評論