管理信息化物聯(lián)網智能家居系統(tǒng)的設計與實現(xiàn)54_第1頁
管理信息化物聯(lián)網智能家居系統(tǒng)的設計與實現(xiàn)54_第2頁
管理信息化物聯(lián)網智能家居系統(tǒng)的設計與實現(xiàn)54_第3頁
管理信息化物聯(lián)網智能家居系統(tǒng)的設計與實現(xiàn)54_第4頁
管理信息化物聯(lián)網智能家居系統(tǒng)的設計與實現(xiàn)54_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

管理信息化物聯(lián)網智能家居系統(tǒng)的設計與實現(xiàn)54{管理信息化物聯(lián)網}智能家居系統(tǒng)的設計與實現(xiàn)54本文討論了基于Windows5.0嵌入式操作系統(tǒng),以使用IntelXScale270為CPU的ARM10嵌入式實VisualStudio2005和Delphi的系統(tǒng)設計過程,開發(fā)了相應的軟件程序,包括嵌入式操作系統(tǒng)WindowsCE5.0的定制、應用程序的界面設系統(tǒng)測試結果表明,該系統(tǒng)設計基本滿足要求,并有一定的功能擴展空間。1緒論解家中的安全,提高業(yè)主的安全感,而且通過手機實時控制家電,提高了業(yè)主生活的舒適度。本文提出了基于嵌入式系統(tǒng)ARM10境并且通過手機短信告知業(yè)主,以及以太網實時視頻監(jiān)控等功能。2系統(tǒng)設計方案2.1硬件總體設計框圖ARM10含GSM通信模塊的智能家居系統(tǒng),硬件結構框圖如圖2-1所示。SHAPE\*MERGEFORMAT圖2-1硬件設計框圖2.2控制核心選擇智能家居控制系統(tǒng)采用如圖2-2所示的XSBase270Intel?高性能的PXA270處理器,支持WindowsCE和Linux等嵌入式操作系統(tǒng),是針對教學和實驗的多功能實驗平臺。PXA270處理器的最高主頻可達520MHz,且該處理器被加入了WirelessMXX技術,大大的提高了多媒體處理能力,而且加入了IntelSpeedStep動態(tài)電源管理技術,在保證CPU性能的前提下,最大限度的降低設備功耗[1]。XSBase270配置32MFLASHROM64MSDRAMUSBCF/MMCPCMCIA等接口。滿足了智能家居系統(tǒng)控制中心的硬件要求。圖2-2XSBase270實驗箱展開圖2.3家電控制板家電控制板采用AT89C512-3LED分別模擬四種家電,三個按鈕模擬三種傳感器。其中四盞LED分別連接單片機的P1.0、P1.1、P1.2、P1.3;三個按鈕分別連接P2.0、P2.1、P2.2。圖2-3家電控制模塊2.3.1串行端口電路家電控制板采用串口與XSBase270RS-232標準的MAX232芯片作為串口的電平轉換芯片。電路的連接如圖2-4所示:圖2-4家電控制板串行接口電路如上圖所示,家電擴展板采用的是常用的DB9頭作為串口接口,其針腳定義圖如圖2-5所示:圖2-5RS-232DB9頭針腳定義圖其中2腳RxD3腳TxDGNDDSR引腳和CTS出采用這兩個腳的信號控制;而其他引腳是跟MODEM相關的。在智能家居系統(tǒng)中,家電控制板接普通串口,GSM模塊接藍牙串口。RS-232信號相對于信號地而言,在正負電平之間擺動。發(fā)送數(shù)據(jù)時,發(fā)送端輸出的正電平在+5V到+15V之間,負電平在-5V和-15V之間。無數(shù)據(jù)傳輸時,線上為TTL電平。接收器典型的工作電平在+3V~+12V與-3V~-12V2~3V信號傳輸距離最大為15m,最高速率為20kb/s[2]。MAX232包含2個驅動器、2個接收器和一個電壓發(fā)生器電路,提供TIA/EIA-232-F電平。該器件符合TIA/EIA-232-F標準,每一個接收器將TIA/EIA-232-F電平轉換成5VTTL/CMOS電平。每一個發(fā)送器將TTL/CMOS電平轉換成TIA/EIA-232-F電平。圖2-6MAX232引腳圖2.3.2家電控制電路圖2-7模擬家電控制電路家用電器控制的接口電路如圖2-7所示,K1~K4為繼電器,分別控制四路家電的閉合和斷開,Q1~Q4為繼P1DD1~DD4發(fā)光二極管用于顯示某路控制電路的工作情況,主要為了調試電路而設置。2.3.3傳感器接口電路圖2-8傳感器接口電路圖煙霧、煤氣泄漏、紅外等這些傳感器的報警信號通過光電耦合接入單片機的P2口,如圖2-8所示,在傳感做出相應處理。2-9所示的西門子MC35GSM/GPRS無線模塊作為通信工具。它支持EGSM900和GSM1800雙頻,支持數(shù)字、語

音、短消息和傳真,使用AT指令控制發(fā)送短消息。它采用9V直流電源供電,通過RS-232串行端口與

XSBase270試驗箱連接進行通信。圖2-9西門子MC352.5視頻監(jiān)控模塊VimicroZC0301P芯片的攝像頭,ZC0301P芯片可支持USB1.1接口,

硬件最高支持VGA分辨率(640×480)。在VGA模式下可達到15幀/秒速率,在CIF(352×288)和SIF(320×240)模式下可達到30幀/秒速率。它通過USB接口連接到XSBase270試驗箱。圖2-10301P攝像頭2.6總體軟件設計方案根據(jù)智能家居的硬件設計方案,設計出軟件的總體設計方案如圖2-11所示:圖2-11軟件設計框圖其中:、(1GSM網絡通信各自獨占一個RS-232XSBase270的紅外串口,GSM模塊接藍牙串口。如圖2-12所示。(2)實時視頻監(jiān)控通過USB攝像頭捕捉圖像,圖像數(shù)據(jù)通過以太網發(fā)送到PC客戶端進行圖像還原。(3TCP/IP所在的局域網連接到因特網的網關——即路由器上,要進行端口映射,才可以進行網絡的連接。圖2-12紅外串口與藍牙串口智能家居系統(tǒng)的軟件基于WindowsCE5.0嵌入式操作系統(tǒng)。WindowsCE被設計成一種分層結構,從下而上一OEM[3]用軟件隔離開,以便于實現(xiàn)系統(tǒng)的移植。智能家居的軟件設計主要是集中在應用層。3操作系統(tǒng)的定制WindowsCE5.0嵌入式操作系統(tǒng)的定制依靠PlatformBuilder5.0完成。PlatformBuilder是微軟公司設計的系統(tǒng)移植到特定的目標平臺上。3.1BSP的安裝為了讓WindowsCE5.0XSBase270BSP為上層的驅動程序提供訪問硬件設備寄存器的函數(shù)包。在PC上安裝好Windows5.0和PlatformBuilder5.0后,打開實驗箱附帶光盤中的BSP文件夾,運行XSBase270_V010106.msi文件,安裝XSBase270的BSP。如圖3-1所示。圖3-1BSP安裝程序文件安裝好BSPPlatformBuilder5.0的因特網應用類型的系統(tǒng)鏡像設計[4]。如圖3-2所示。圖3-2定制系統(tǒng)時選擇BSP種類3.2添加平臺特征和配置平臺征。(1USBActiveSync(FileSync)組件。只有添加此組件,才能使用PC的USB接口與WindowsCE進行文件同步。這也是在應用軟件調試過程中所必須的條件。(Catalog->CoreOS->WindowsCEdevices->Applications-EndUser->ActiveSync->FileSync)(2)添加Chinese[Simplified]Font。安裝中文簡體字體后,才能正常顯示中文。(Catalog->CoreOS->WindowsCEdevices->International->LocaleSpecificSupport->Chinese[Simpified]->Fonts)(3)添加文件系統(tǒng)支持。(Catalog->CoreOS->WindowsCEdevices->FileSystemsandDataStore->StorageManager->FATFileSystem)(4)添加分區(qū)管理(Catalog->CoreOS->WindowsCEdevices->FileSystemsandDataStore->StorageManager->PartitionDriver)(5)添加控制面板中的存儲器管理組件(Catalog->CoreOS->WindowsCEdevices->FileSystemsandDataStore->StorageManager->StorageManagerControlPanelApplet)(6)添加基于軟件的輸入系統(tǒng)(軟鍵盤等)(Catalog->CoreOS->WindowsCEdevices->ShellandUserInterface->UserInterface->SoftwareInputPanel->Software-basedInputPanel(SIP)(Choose1ormore)->SIPforLargeScreens)(7)添加平臺管理器(PlatformManager)(Catalog->PlatformManager->PlatformManager)(8)添加UsbActiveSync(USBFunction)(Catalog->ThirdParty->BSPs->EmdoorSystemsXSBase270:ARMV4I->DeviceDrivers->USBFunction->USBFunctionBusDrivers->PXA27xUSBFunction)完成特性的添加后,設置平臺的屬性。在“Platform”菜單下單擊在Configuration下拉菜單中選擇“EmdoorSystemsXSBase270:ARMV4IRelease”項,選擇Locale選項卡,進行系統(tǒng)地理位置和環(huán)境語言支持的設置。Locales列表中,為最下[端的“中文(中國)”項打勾。在DefaultLanguage下拉菜單里選擇“中文(中國)”為系統(tǒng)的默認語言。如圖3-3所示。圖3-3選擇操作系統(tǒng)默認語言在BuildOption列表中,只選擇EnableEbootSpaceinMemory(IMGEBOOT=1)和WriteRun-timeImagetoFlashMemory(IMGFLASH=1)兩項。如圖3-4所示。圖3-4程序組建選項設置單擊“BuildOS”菜單下的“Sysgen”開始組建操作系統(tǒng)。如圖3-5所示:

圖3-5生成操作系統(tǒng)鏡像3.3紅外串口與藍牙串口的打開XSBase270GSM居系統(tǒng)的功能,必須將它們打開。(1)查找中斷號中斷號的定義是在試驗箱所提供的板級支持包中被配置的。打開C:\WINCE500\Platform\XSBase270\Src\inc\bsp_cfg.h文件??梢钥吹秸{試串口和通信串口的中斷號的定義,如圖3-6所示。圖3-6BSP中的串口中斷定義可以看到調試串口BFUART的中斷號是28,轉化為16進制為0x1c;通信串口SFUART中斷號27,轉換為16進制是0x1b。(2)修改注冊表打開以下文件夾,其中“F:\platform\270\”是在新建操作系統(tǒng)平臺時所存儲它的磁盤位置。F:\Platform\270\RelDir\XSBase270_ARMV4I_Release\打開注冊表文件,在此文件中包含了對一些硬件的初始化的代碼。在“IFBSP_NOSERIAL!”與“ENDBSP_NOSERIAL!”兩句代碼之間,可以看到藍牙串口的注冊表初始化代碼,下面只需要添加初始化紅外串口的代碼:;OpentheIRSerialPort[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SerialIR]"Irq"=dword:14;20IRQ_STUART"SysIntr"=dword:1b;27SYSINTR_SFUART"MemBase"=dword:0;STUARTRegister"MemLen"=dword:40"DeviceArrayIndex"=dword:82;STUARTobject"Prefix"="COM""Index"=dword:3"Order"=dword:1"IClass"="{CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}";"Dll"="ms2_"[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SerialIR\Unimodem]"Tsp"="""DeviceType"=dword:0"FriendlyName"="IRSerialCableonCOM3:""DevConfig"=hex:10,00,00,00,05,00,00,00,10,01,00,00,00,4B,00,00,00,00,08,00,00,00,00,00,00

修改好注冊表代碼以后,保存文件。打開剛才建立的操作系統(tǒng)設計工程,選擇BuildOS菜單下的

MakeRun-TimeImage命令,生成新的內核文件。3.4操作系統(tǒng)的生成與下載定制并組建WindowsCE后,將會生成BootLoader——0文件和NK內核——,將它們燒寫進入XSBase270實驗箱。4應用軟件設計4.1應用程序編寫環(huán)境開發(fā)環(huán)境:MicrosoftVisualStudio2005開發(fā)語言:MicrosoftVisualC++2005軟件開發(fā)包:XSBase270SDK智能家居系統(tǒng)的應用程序采用VisualStudio2005進行開發(fā)。VisualStudio是微軟公司開發(fā)的Windows平臺上的應用程序開發(fā)環(huán)境。VisualStudio可以創(chuàng)建Windows下的Windows應用程序和網絡應用程序,也可以用來創(chuàng)建網絡服務、智能設備應用程序和Office插件[5]。VisualStudio2005面向.net框架(2.0版本),同時可以開發(fā)跨平臺的應用程序。圖4-1VisualStudio20054.2智能家居人機接口設計打開VisualStudio2005,創(chuàng)建一個基于MFCSmartDeviceApplication的VC++程序。如圖4-2所示:圖4-2新建智能家居的應用程序到選擇平臺步驟時選擇XSBase270平臺,刪除默認的PocketPC2003平臺。如圖4-3所示。圖4-3選擇軟件開發(fā)包支持“Next”按鈕進入選擇應用程序類型和資源語言——4-4擇“Dialogbased”(基于對話框)類型,資源語言選擇“中文(中國)”。其他項目保留默認的選項。圖4-4選擇應用程序種類保持默認的設置,一直到完成新建項目向導。進入IDE環(huán)境。集成環(huán)境的窗口分布如圖4-5所示:圖4-5VisualStudio2005集成環(huán)境將對話框設計成如圖4-6所示:圖4-6智能家居操作界面設計表4-1智能家居應用軟件界面控件配置控件類型控件名稱功能初始化GSM初始化GSM模塊開始攝像打開攝像頭,開始視頻捕捉停止攝像停止攝像頭視頻捕捉開始監(jiān)聽打開ARM的9000號端口,打開網絡通信按鈕控件停止監(jiān)聽關閉端口,停止TCP通信冰箱打開家中的冰箱設備燈光打開家中的燈光設備微波爐打開家中的微波爐設備空調打開家中的空調設備關于我們查看軟件作者版權聲明信息退出程序關閉未關閉的線程,退出程序列表控件消息窗口用來顯示用戶發(fā)回的短信記錄煤氣煤氣傳感器報警信號,報警時紅色,常態(tài)時綠色圖片控件煙霧煙霧傳感器報警信號,報警時紅色,常態(tài)時綠色紅外紅外傳感器報警信號,報警時紅色,常態(tài)時綠色編輯框信息框實時顯示系統(tǒng)運行情況[4.3串口通信功能設計4.3.1串口通信協(xié)議串口通信協(xié)議采用CCESeries類實現(xiàn),通過對此類的成員函數(shù)的調用,完成對串口的初始化、讀寫操作等,在不用串口的情況下,還可以關閉串口。4.3.2軟件的實現(xiàn)在VisualStudio的解決方案視圖里添加類CCESeries4-7所示。CCESeries類的成員函數(shù)如表4-2所示。圖4-7在VS2005中建立CCESeries類表4-2串口操作類CCESeries的成員函數(shù)數(shù)作用BOOLOpenPort(HWNDpPortOwner,UINTportNo=1,UINTbaud=9600,UINTparity=NOPARITY,UINTdatabits=8,UINTstopbits=0);串口VoidClosePort();閉串口BOOLSetSeriesTimeouts(COMMTIMEOUTSCommTimeOuts);置串口超時StaticDWORDWINAPIReadThreadFunc(LPVOIDlparam);串口線程BOOLWritePort(LPCTSTRlpString);BOOLWritePort(char*buf,intnSize);BOOLWritePort(char*buf);VoidCloseReadThread();閉讀線程表4-3串口操作類CCESeries的成員變量變量類型變量名稱作用HANDLEm_hComm已打開的串口句柄HWNDm_hWnd此串口類所屬的窗口句柄HANDLEm_hReadThread讀串口線程句柄HANDLEm_hWriteThread寫串口線程句柄DWORDm_dwReadThreadID讀串口線程IDDWORDm_dwWriteThreadID寫串口線程IDHANDLEm_hReadCloseEvent讀串口線程退出事件HANDLEm_hWriteCloseEvent寫串口線程退出事件打開串口與配置串口在WindowsCE[6]方提供,支持另外添加到系統(tǒng)中的設備。而串口就屬于流接口設備之一。流設備驅動在系統(tǒng)中是以三位字符串后跟一位數(shù)字表示的,對于串口而言,這三位字符是“COM”(不包括引號)。當引用一個流接口驅動程序時,除了三位字符后跟一位數(shù)字以外,還要緊跟一個冒號“:”(英文半角冒號),冒號是必需的,是為了區(qū)別桌面Windows的設備驅動程序的命名規(guī)則。該函數(shù)的流程圖如圖4-8所示:圖4-8OpenPort函數(shù)流程圖(1)串口的打開所有的流驅動程序都將采用CreateFileWindowsCE備的重疊I/OdwFlagsAndAttributes中傳遞FILE_FLAG_OVERLAPPEDINVAILID_HANDLE_VALUECreateFile與大多數(shù)Windows函數(shù)不一樣,打開失敗時,不返回0。CreateFile函數(shù)的原型如下:HANDLECreateFile(LPCTSTRlpFileName,//對象路徑名DWORDdwDesiredAccess,//控制模式DWORDdwShareMode,//共享模式LPSECURITY_ATTRIBUTESlpSecurityAttributes,//安全屬性(也即銷毀方式)DWORDdwCreationDisposition,//創(chuàng)建的方式DWORDdwFlagsAndAttributes,//對象屬性HANDLEhTemplateFile//一個文件模板句柄);在CCESeriesHANDLE類型全局變量m_hComm存儲CreateFile句柄可以控制打開的串口對象;以讀寫的方式打開串口。(2)串口的設置打開串口后,還必須對端口配置好正確的波特率、字符長度、停止位等等。在OpenPort函數(shù)中,使用兩個函數(shù)GetCommState和SetCommState來配置串口。函數(shù)原型如下:BOOLSetCommState(HANDLEhRle,LPDCBlpDCB);BOOLGetCommState(HANDLEhFile,LPDCBlpDCB);這兩個函數(shù)都包含了同樣的參數(shù),即已打開的串口的句柄和指向DCB結構的指針。DCB結構的設置如表4-4所示。表4-4OpenPort函數(shù)中的串口DCB配置DCB定義項目設置值備注BaudRateBaud設置波特率為傳入型參baud的值fBinaryTRUE二進制模式有效fParityTRUE支持奇偶校驗ByteSizeDatabits設置數(shù)據(jù)位為傳入型參databits,范圍4~8ParityNOPARITY校驗模式有效StopBitsStopbits設置停止位為傳入型參stopbitsfOutxCtsFlowTRUE串口輸出由端口的CTS線控制fOutxDsrFlowTRUE串口輸出由端口的DSR線控制fDtrSensitivityDTR_CONTROL_ENABLE續(xù)表4-4OpenPort函數(shù)中的串口DCB配置DCB定義項目設置值備注fDsrSensitivityFALSEXOFFfTXContinueOnXoffTRUE字符,則驅動程序停止傳送字符fOutXFALSEXON/XOFF控制不用于控制串行輸出fInXFALSEXON/XOFF控制不為輸入串行流使用fErrorCharFALSEfNullFALSE串行驅動不忽略接收到的空字節(jié)fRtsControlRTS_CONTROL_ENABLEfAbortOnErrorFALSE串口發(fā)生錯誤時,并不終止串口讀寫[來源:論文天下論文網](3)串口超時設置Windows在讀串口和寫串口的自動返回前等待讀或寫操作的時間長度。在程序中,用以下兩個函數(shù)控制串行超時。BOOLGetCommTimeouts(HANDLEhFile,LPCOMMTIMEOUTSlpCommTimeouts);BOOLSetCommTimeouts(HANDLEhFile,LPCOMMTIMEOUTSlpCommTimeouts);這兩個函數(shù)都包含了對應的串行設備的句柄和COMMTIMEOUTS結構的指針,COMMTIMEOUTS結構定義為:typedefstruct_COMMTIMEOUTS{DWORDReadIntervalTimeout;DWORDReadTotalTimeoutMultiplier;DWORDReadTotalTimeoutConstant;DWRODWriteTotalTimeoutMultiplier;DWORDWriteTotalTimeoutConstant;}COMMTIMEOUTS;(4)其他的函數(shù)設置串口的輸入輸出緩沖區(qū)。原型如下BOOLSetupComm(HANDLEhFile,DWORDdwInQueue,DWORDdwOutQueue);設置串口檢測的事件集。SetCommMask(HANDLEhFile,DWORDdwEvtMask);

通過這個函數(shù),可以使線程等待如表4-5中的常見的串口驅動程序事件。

表4-5串口驅動程序事件事件標志表達意義EV_BREAK檢測到中斷EV_CTSCTS更改狀態(tài)EV_DSRDataSetReady信號更改狀態(tài)EV_ERR串行驅動程序檢測到錯誤EV_RKSDReceiveLineSignalDetect行更改狀態(tài)EV_RXCHAR接收到一個字符EV_RXFLAG接收到一個事件字符EV_TXEMPTY傳輸緩沖區(qū)為空關閉串口調用CloseHandleCloseHandle(m_hComm);關閉線程函數(shù):BOOLTerminateThread(HANDLEhThread,DWORDdwExitCode);hThreaddwExitCode一般為0函數(shù)的工作流程如圖4-9所示。SHAPE\*MERGEFORMAT圖4-9ClosePort函數(shù)流程圖串口讀線程讀串口ReadFile函數(shù)原形:BOOLReadFile(HANDLEhFile,//文件的句柄LPVOIDlpBuffer,//用于保存讀入數(shù)據(jù)的一個緩沖區(qū)DWORDnNumberOfBytesToRead,//要讀入的字符數(shù)LPDWORDlpNumberOfBytesRead,//從文件中實際讀入的字符數(shù)LPOVERLAPPEDlpOverlapped//異步讀取描述,在WindowsCE中為NULL);WM_RXCHAR_ALL一個用戶自定義消息。發(fā)送給系統(tǒng)窗體的附帶消息包含收到的消息的內容和消息的長度。

發(fā)送系統(tǒng)消息的API函數(shù)SendMessage的原型如下:LRESULTSendMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMIParam);

圖4-10串口讀線程流程圖寫串口在CCESeriesWritePort(char*buf,intnSize)WritePort(char*buf)函

的API函數(shù)WriteFile(),它的函數(shù)原型如下:BOOLWriteFile(HANDLEhFile,//文件句柄LPCVOIDlpBuffer,//數(shù)據(jù)緩存區(qū)指針DWORDnNumberOfBytesToWrite,//要寫的字節(jié)數(shù)LPDWORDlpNumberOfBytesWritten,//用于保存實際寫入字節(jié)數(shù)的存儲區(qū)域的指針LPOVERLAPPEDlpOverlapped//OVERLAPPED結構體指針,CE里設為NULL);串口類的調用在主程序中,必須調用此CCESeries類,以達到操作串口的目的。在定義智能家居的窗口行為的CSmartHomeDlg類的頭文件CSmartHomeDlg.hCCESeries.h頭文public公共型變量m_BTSerial(藍牙串口)和m_IRSeries進行對CCESeries類的實例化。CCESeriesm_BTSerial;CCESeriesm_IRSerial;在用于CSmartHomeDlgm_(this->m_hWnd,1,9600)的方式進行串口類成員函數(shù)的調用。串口的監(jiān)聽在讀串口線程中,讀完串口的一條信息后發(fā)送名為WM_RXCHAR_ALL的系統(tǒng)消息給系統(tǒng)窗體。在窗體程序中,必須對其進行響應。在文件中,添加一條消息響應的聲明:ON_MESSAGE(WM_RXCHAR_ALL,OnComRecvMsg)其中OnComRecvMsg為對其消息響應的函數(shù),函數(shù)的聲明如下:afx_msglongOnComRecvMsg(WPARAMwParam,LPARAMlParam);其中“afx_msg”說明該函數(shù)是一消息響應函數(shù)。4.4GSM通信模塊智能家居以GSMGSM全監(jiān)控和無線報警的功能。4.4.1設計基本原理PDU編碼規(guī)則自短信息技術被開發(fā)到現(xiàn)在,對短信息的控制方式包含了BlockMode、基于AT的TextMode基于AT指令的

PDUMode。使用Block模式需要廠家驅動的支持,隨著技術的發(fā)展,后兩種模式將其取代。Text模式比較簡單,但不

PDU包括中文。在智能家居中,采用中文報警和中文指令。PDU[7](SMSC)、時間戳等都是用壓縮BCDPDUBit7Bit8和UCS2編碼方式對短消息發(fā)送內容進行編碼。這三種編碼方式可以發(fā)送的最大字符數(shù)分別為160,140和70。其中Bit7編碼發(fā)送普通ASCII0x00到0x7f,共可以表示1288位字8位碼壓縮成7:將第二個字符的最后一位,補充到第一個字符的前面第一位,第三個字符的后兩位,補充到第二個字符的前兩位,依次類推,成十六進制。Bit8編碼通常用于發(fā)送任何二進制數(shù)據(jù)。UCS2編碼用于發(fā)送Unicode1665535個字符。圖4-11和圖4-12分別是接收和發(fā)送短信的報文格式。圖4-11接收短信的報文格式圖4-12發(fā)送短消息的報文格式實例一、發(fā)送短信時的PDU碼:F011000B4F06C8329BFD0E01表4-6發(fā)送PDU包解析分段含義說明08SMSC地址信息的長度共8個八位字節(jié)(包括91)91SMSC地址格式(TON/NPI)用國際格式號碼(在前面加‘+’)5F0SMSC地址00,補‘F’湊成偶數(shù)個11基本參數(shù)(TP-MTI/VFP)發(fā)送,TP-VF用相對格式00消息基準值(TP-MR)00B目標地址數(shù)字個數(shù)共11位,不包括補足的‘F’91目標地址格式(TON/NPI)用國際格式號碼(在前面加‘+’)6F9目標地址(TP-DA)49,補‘F’湊成偶數(shù)個00協(xié)議標識(TP-PID)是普通GSM類型,點到點方式00用戶信息編碼方式(TP-DCS)7-bit編碼00有效期(TP-VP)5分鐘06用戶信息長度(TP-UDL)實際長度6個字節(jié)C8329BFD0E01用戶信息(TP-UD)“Hello!”結合發(fā)送短信的報文格式,知道短消息中心號碼是:+00,對方號碼是:,消息內容是“Hello!”。實例二、接收短信時的PDU碼F0840D764FE4E1C0021表4-7接收短消息PDU包解析分段含義說明08SMSC地址信息的長度共8個八位字節(jié)(包括91)91SMSC地址格式(TON/NPI)用國際格式號碼(在前面加‘+’)5F0SMSC地址00,補‘F’湊成偶數(shù)位84基本參數(shù)(TP-MTIRP)接收,無更多消息,有回復地址0B回復地址數(shù)字個數(shù)共11個十進制數(shù)(不包括‘F’)91回復地址格式(TON/NPI)用國際格式號碼(在前面加‘+’)4F8回復地址(TP-RA)68,補‘F’湊成偶數(shù)位00協(xié)議標識(TP-PID)是普通GSM類型,點到點方式08用戶信息編碼方(TP-DCS)UCS2編碼480時間戳(TP-SCTS)2003-3-1208:36:45+8時區(qū)06用戶信息長度(TP-UDL)實際長度6個字節(jié)534E4E1C0021用戶信息(TP-UD)“華東!”短消息中心號碼是:+00,對方號碼是,消息內容是“華東!”。AT指令MC35模塊發(fā)送AT4-8中是一些系統(tǒng)中采用的AT指令。表4-8系統(tǒng)采用的AT指令AT指令功能AT+CMGF=0選擇短消息信息格式,等于0時為PDU格式,等于1時為文本模式,AT+CNMI=1,1,0,0,1設置為短信到達時自動提醒AT+CMGS=?發(fā)送短消息,發(fā)送成功則返回OK字符串AT+CMGR=?讀取短消息,讀取成功則返回+CMGR:0,"",[id][content]AT+CMGD=?刪除短消息4.4.2軟件的實現(xiàn)PDU編碼解碼短信的PDU解碼和編碼的功能由智能家居軟件工程中的CEncode類實現(xiàn)。CEncode類的成員函數(shù)如表4-9所示:

表4-9CEncode類的方法方法備注IntgsmString2Bytes(constchar*pSrc,unsignedchar*pDst,intnSrcLength)可打印字符串轉換為字節(jié)數(shù)據(jù)如:"C8329BFD0E01"-->{0xC8,0x32,0x9B,0xFD,0x0E,0x01}字節(jié)數(shù)據(jù)轉換為可打印字符串intgsmBytes2String(constunsignedchar*pSrc,char*pDst,如:intnSrcLength){0xC8,0x32,0x9B,0xFD,0x0E,0x01}-->"C8329BFD0E01"intgsmEncode7bit(constchar*pSrc,unsignedchar*pDst,in7bit編碼tnSrcLength)intgsmDecode7bit(constunsignedchar*pSrc,char*pDst,in7bit解碼tnSrcLength)intgsmEncode8bit(constchar*pSrc,unsignedchar*pDst,in8bit編碼tnSrcLength)intgsmDecode8bit(constunsignedchar*pSrc,char*pDst,in8bit解碼tnSrcLength)intgsmEncodeUcs2(constchar*pSrc,unsignedchar*pDst,inUCS2編碼tnSrcLength)intgsmDecodeUcs2(constunsignedchar*pSrc,char*pDst,inUCS2解碼tnSrcLength)正常順序的字符串轉換為兩兩顛倒的字符串,intgsmInvertNumbers(constchar*pSrc,char*pDst,intnSrc若長度為奇數(shù),補'F'湊成偶數(shù)。如:Length)"68"-->"4F8"intgsmSerializeNumbers(constchar*pSrc,char*pDst,intn兩兩顛倒的字符串轉換為正常順序的字符串。SrcLength)如:"4F8"-->"68"IntgsmDecodePdu(constchar*pSrc,SM_PARAM*pDst)PDU解碼,用于接收、閱讀短消息intgsmEncodePdu(constSM_PARAM*pSrc,char*pDst)PDU編碼,用于編制、發(fā)送短消息[來源:論文天下論文網]在該類中,關鍵的函數(shù)為gsmDecodePdu函數(shù)與gsmEncodePdu函數(shù),它們將在智能家居中的對話框類CSmartHomeDlg中被調用。調用方法將在下文給予介紹。gsmDecodePdu函數(shù)與gsmEncodePdu函數(shù)分別用來在發(fā)短信時根據(jù)PDUPDU與發(fā)送短信時是共用的。#defineGSM_7BIT0//7Bit編碼方式#defineGSM_8BIT4//8Bit編碼方式#defineGSM_UCS28//UCS2編碼方式typedefstruct{charSCA[16];//短消息服務中心號碼(SMSC地址)charTPA[16];//目標號碼或回復號碼(TP-DA或TP-RA)charTP_PID;//用戶信息協(xié)議標識(TP-PID)charTP_DCS;//用戶信息編碼方式(TP-DCS)charTP_SCTS[16];//服務時間戳字符串(TP_SCTS),接收時用到charTP_UD[161];//原始用戶信息(編碼前或解碼后的TP-UD)charindex;//短消息序號,在讀取時用到}SM_PARAM;CEncode類各成員函數(shù)的作用和工作流程:gsmDecodePdu()PDUPDU度。源PDU串是可打印字符串,如“C8329BFD0E01”,目標PDU參數(shù)是字節(jié)數(shù)據(jù),如“{0xC8,0x32,0x9B,0xFD,0x0E,0x01}”,在這個函數(shù)中,較多的采用了同在一個類中的可打印字符串轉換為字節(jié)數(shù)據(jù)的函數(shù)gsmString2Bytes;在短消息服務中心(SMSC)和回復號碼的字符處理過程中,根據(jù)PDU串的編碼規(guī)范,需要對描述SMSC的字符串段進行兩兩顛倒,并且去掉經顛倒后的字符串后的最后一個字符——“F”,那就采用了同在一個類中的gsmSerializeNumbers函數(shù);經過數(shù)據(jù)分離,將PDU串中的描述短信編碼位TP-DCS7位碼的數(shù)值為08位碼為4UCS2編碼為8成后,將用戶信息進行對應方式的解碼——如7位解碼。它的工作流程如圖4-13所示。SHAPE\*MERGEFORMAT圖4-13CEncode類gsmDecodePdu函數(shù)工作流程gsmEncodePdu()PDUPDUPDU串長度。源PDU參數(shù)是字節(jié)信息,如“{0xC8,0x32,0x9B,0xFD,0x0E,0x01},目標PDU參數(shù)是字節(jié)數(shù)據(jù),如“C8329BFD0E01”,在這個函數(shù)中,較多的采用了同在一個類中的字節(jié)數(shù)據(jù)轉換為可打印字符串的函數(shù)gsmBytes2String;在短消息服務中心(SMSC)和回復號碼的字符處理過程中,根據(jù)PDU串的編碼規(guī)范,需要對描述SMSC——“F”個類中的gsmInvertNumbersTP-DCS跟規(guī)定的數(shù)值進行對比,如表示7位碼的數(shù)值為0,8位碼為4,UCS2編碼為8等。對比完成后,將用戶信息進行對應方式的編碼——如7位編碼。它的工作流程如圖4-14所示。SHAPE\*MERGEFORMAT圖4-14CEncode類gsmEncodePdu函數(shù)工作流程gsmString2Bytes函數(shù)的作用是將可打印字符串轉換為字節(jié)數(shù)據(jù),如

"C8329BFD0E01"-->{0xC8,0x32,0x9B,0xFD,0x0E,0x01}標數(shù)據(jù)指針,返回目標數(shù)據(jù)的長度。流程圖如圖4-15所示:SHAPE\*MERGEFORMAT圖4-15gsmString2Bytes函數(shù)工作流程其中每兩個字符串要整合成一個字節(jié)數(shù)據(jù),如“C8”要轉化為“0xC8”,故第一個字符“C”經字符轉化為十六進制后要左移四位,使其成為“0xC0”,再與經過轉換的低四位進行相或;然后計數(shù)器加2,源字符串0ASCII碼之差,‘8’就轉換成了數(shù)字類型的81000。而A、B、C、D、E、F等字符是與‘A’的ASCII碼值相減,再加上10,就可以得到其表達的十六進制數(shù)值。如‘F’減去‘A’得到5,再加10,得到15,實質上就是十六進制中F所對應的十進制數(shù)15。gsmBytes2String函數(shù)的功能與gsmString2Bytes函數(shù)相反,工作流程如圖4-16所示。SHAPE\*MERGEFORMAT圖4-16gsmBytes2String函數(shù)工作流程其中低四位是每個字節(jié)數(shù)據(jù)與0x0f位與得到。每四位表達的數(shù)值為0~15,而在tab數(shù)組中,從tab[0]到tab[15],對應的字符為‘0’到‘9’和‘A’到‘F’,通過此算法可以達到由數(shù)值型到字符型的轉換,最后完成整條字節(jié)數(shù)據(jù)到字符串的轉換。gsmEncode7bit函數(shù)的作用是7bit編碼。輸入源字符串指針和源字符串的長度,輸出目標字符串指針和目標編碼串長度。工作流程圖如圖4-17所示。SHAPE\*MERGEFORMAT圖4-17gsmEncode7bit函數(shù)流程gsmDecode7bit函數(shù)用于7位碼的解碼,輸入源編碼串指針和源編碼串長度,輸出目標字符[來源串指針和目標字符串的長度。流程圖如圖4-8所示:SHAPE\*MERGEFORMAT圖4-18gsmDecode7bit函數(shù)工作流程gsmEncode8bit函數(shù)用于88以其編碼工作用memcpy函數(shù)簡單的復制即可完成。gsmDecode8bit函數(shù)用于8gsmEncode8bit字符串末尾加一個“\0”結束字符。gsmEncodeUcs2函數(shù)用于UCS2PDU編碼規(guī)則,UCS2碼采用的是16式如圖4-19所示。SHAPE\*MERGEFORMAT圖4-19gsmEncodeUsc2函數(shù)工作流程gsmDecodeUsc2函數(shù)用于UCS2碼的解碼。它的工作流程如圖4-20所示:SHAPE\*MERGEFORMAT圖4-20gsmDecodeUcs2函數(shù)工作流程gsmEncodeUcs2函數(shù)和gsmDecodeUcs2函數(shù)分別用了作用相反的兩個API函數(shù)——MultiByteToWideChar

和WideCharToMultiByte函數(shù)。它們的作用分別為將短字符(用8位數(shù)據(jù)表示的字符)轉換為寬字符(16位數(shù)據(jù)表示的字符,如Unicode編碼),和將寬字符轉換為短字符。gsmInvertNumbers函數(shù)的作用是將形如這樣的字符串兩兩顛倒成,其中源字符串長度為奇數(shù)時,補字符‘F’湊成偶數(shù)。流程圖如圖4-21所示。SHAPE\*MERGEFORMAT圖4-21gsmInvertNumbers函數(shù)工作流程收發(fā)短信(1)監(jiān)聽新短信GSM模塊連接在串口上,對短信的監(jiān)聽實質上是對串口的監(jiān)聽。具體的新短消息的監(jiān)聽流程如圖4-22圖4-22新消息監(jiān)聽流程其中:1)AT+CMGF=0——設置短消息內容控制模式為PDU模式2)AT+CNMI=1,1,0,1,1——設置短消息到達自動提醒功能。3)AT+CMGR=[index],其中index是短消息在SIM卡中的地址。如果讀取成功,既對應的地址中存在信息,則返回CMGR:0,"",[id][content]index的值改成短消息在SIM卡中的地址即可。若短消息不存在,則返回ERROR。(2)發(fā)送短消息在發(fā)送短信之前,要對數(shù)據(jù)結構體SM_PARAM進行數(shù)據(jù)填充。其中短消息服務中心和目標號碼的格式是不包含加號卻包含國家代碼的國際標準格式號碼,如34。在數(shù)據(jù)填充之前要將這些號碼文本進行處理。在CSmartHomeDlg類中,必須對短信編碼解碼類CEncode和SM_PARAM結構體進行實例化。CEncodem_encode;SM_PARAMparam;在填充好機構體以后,用下面一句nPduLength=m_(¶m,pdu);對短消息結構體進行PDU編碼,編碼結果放入pdu數(shù)組中,PDU長度返回到nPduLength。流程圖如圖4-23所示:SHAPE\*MERGEFORMAT圖4-23發(fā)送短信流程4.5圖象采集模塊中星微攝像頭采用了中星微301PLUSMIPEG視頻流

數(shù)據(jù)。MIPEG(MotionJPEG)主要是基于靜態(tài)視頻壓縮發(fā)展起來的技術,特點是基本不考慮視頻流中不同幀之

間的變化,只單獨對某一幀進行壓縮,通??蛇_到6:1的壓縮率。它的誤差穩(wěn)定性非常好,可以獲取清晰

度很高的視頻圖像,而且還可以靈活設置各路視頻清晰度,壓縮幀數(shù)。4.5.1攝像頭驅動程序該攝像頭的官方提供了其在WindowsCE環(huán)境下的驅動程序zc030x.dll和在VC下對其編程的lib庫文件zc030。只要在智能家居的工程屬性中,將其提供的lib庫文件導入即可使用它提供的一些函數(shù)。步驟:Project菜單->SmartHomeProperties,選擇左邊列表ConfigurationProperties->Linker->Input導入lib庫文件操作的截圖如圖4-24所示:圖4-24在VS2005中添加lib庫文件圖像采集模塊用到的主要函數(shù)有:capInitCamera()用來初始化視頻設備,并獲取當前可用的視頻設備數(shù)目;capSetVideoFormat()設置視頻格式和分辨率。本系統(tǒng)使用的視頻格式為RGB24,分辨率為320×240像素;capGetPicture()獲取攝像頭最近捕捉的一幅位圖,存入指定的緩存中capCloseCamera()關閉視頻設備4.5.2視頻捕捉和視頻信息傳送攝像頭工作流程經過了初始化攝像頭和捕捉視頻和關閉攝像頭等流程,詳細的流程如圖4-25所示:SHAPE\*MERGEFORMAT圖4-25攝像頭的工作流程CaptureThreadProc統(tǒng)應用程序界面上的“打開攝像頭”按鈕后創(chuàng)建,在點擊“關閉攝像頭”后關閉。據(jù)包的大小為1440字節(jié)。在系統(tǒng)的運行測試中,通過斷點調試的方式,知道攝像頭通過capGetPicture()函數(shù)獲取到的一幀圖象信息的大小大概在4000字節(jié)到5000將一幅畫面的數(shù)據(jù)發(fā)送到客戶端。4.6以太網通信模塊在智能家居中,嵌入式平臺充當服務器的角色,相應的PC視頻監(jiān)控端充當客戶端的角色。服務器端與客戶端之間的通信基于TCP/IP協(xié)議。4.6.1TCP/IP協(xié)議Internet上使用的一個關鍵的底層協(xié)議是網際協(xié)議,通常稱IP協(xié)議。通過這個共同遵守的協(xié)議,可以使InternetIP協(xié)議是TCP/IP協(xié)議,IP協(xié)議用來幫助數(shù)據(jù)找到通往目的計算機的路徑[8]。IP層接收從網絡接口層發(fā)送過來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層——TCPIP層也將從TCP層發(fā)送過來的數(shù)據(jù)包發(fā)送到接口層——網絡

層的更低層。而IP數(shù)據(jù)包是不可靠的,因為IP協(xié)議并沒有做任何事情來確認數(shù)據(jù)包的順序和它的完整性。

IP數(shù)據(jù)包中包含了發(fā)送數(shù)據(jù)包的計算機IP地址(源地址)和接收數(shù)據(jù)包的計算機IP地址(目標地址)。

TCP協(xié)議主要是對IP數(shù)據(jù)包中被封裝好的TCP數(shù)據(jù)包進行排序和錯誤檢查。TCP更高層的應用程序。應用程序輪流將信息發(fā)給TCP層,TCP層將數(shù)據(jù)發(fā)送給IP層,最后通過設備驅動和物

理介質(網線)等發(fā)送到目標計算機。如圖4-26所示。應用層協(xié)議(HTTP、FTP等)傳輸控制協(xié)議TCP網間協(xié)議IP以太網驅動程序硬件以太網接口圖4-26IP層與以太網驅動器以及TCP層、應用程序層通信4.6.2軟件實現(xiàn)所有的TCP通信都發(fā)生在兩個端點或兩個套接字(Socket[8]。每個Socket都有一個端口號與一個IP地址。SocketSocketSocket將這段信息發(fā)送給另外一個Socket中,使這段信息能傳送到其他程序中。在智能家居系統(tǒng)的服務端,TCP編程的流程如下:(1)TCP服務器聲明一SOCKET類型的全局變量m_Socket;(2)通過bind函數(shù)綁定本地地址;(3)用Listen函數(shù)進行監(jiān)聽客戶端連接(4)當有客戶端請求時,套接字采用Accept函數(shù)接受客戶端請求(5)服務端新添加一個單獨的套接字與客戶端進行通訊。若用流程圖表示,如圖4-27所示?;谝陨狭鞒毯驮?,在VS2005中新添加兩個類——CTCPServer_CE和CTCPCustom_CE。其中CTCPServer_CE類用于開啟與關閉TCP服務,以及打開監(jiān)聽套接字事件的線程。CTCPCustom_CE用于打開套接字和關閉套接字,以及向客戶端發(fā)送數(shù)據(jù)等。SHAPE\*MERGEFORMAT圖4-27TCP服務工作流程圖WSAStartup()函數(shù)以在應用程序初始化WindowsSocketDLL,采用WindowsSocket中的其他有關API函數(shù)。在此之后,在程序中建立一個用于監(jiān)聽網絡的Socket,并定

義其采用的通訊協(xié)議——TCP協(xié)議。完成這一操作的函數(shù)是socket()。它的原型是:

SOCKETPASCALFARsocket(intaf,inttype,intprotocol)其中第二個形參用于指定套接字的通信類型,當type為SOCK_STREAM時,為遵從TCP協(xié)議的通信,若要遵

從UDP協(xié)議,應設置為SOCK_DGRAM;在智能家居中,采用前者。根據(jù)流程,接下來要綁定一個IP地址和端口,這個地址和端口是客戶端將要連接的目標,通過調用bind()

函數(shù)可以完成這一操作,以下是bind()函數(shù)的原型。intPASCALFARbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);

其中s為被操作的Socket對象,name是ARM端的IP地址。namelen為IP地址的長度。

ARMlisten()函數(shù)可以完成這一操

作。intPASCALFARlisten(SOCKETs,intbacklog);s為要操作的Socket;backlog為最大連接數(shù),在系統(tǒng)中設置為8。在客戶端發(fā)出連接請求時,ARM客戶端調用accept()函數(shù),從而完成完整的連接操作。在智能家居系統(tǒng)的軟件設計中,將監(jiān)聽以太網通過一個線程來實現(xiàn)。SHAPE\*MERGEFORMAT圖4-28TCP讀線程工作流程4.7PC端視頻監(jiān)控模塊該模塊采用Delphi7BorlandWindows應用程序開發(fā)的工具之一[9]Windows象編程語言。在Delphi中,提供了包含TCP通信控件在內的許多控件使開發(fā)人員能夠快速構建和實現(xiàn)應用軟件系統(tǒng)。基于這一特點,PC客戶端采用Delphi編寫。PC端處于TCP/IPDelphi中的TCPClient控件完成。TCPClient控件需要完成的操作是:1)打開一個通信信道,連接到智能家居ARM服務器端的特定端口。2)向服務器發(fā)送服務請求報文,等待并接收應答,如此反復3)請求結束后關閉通信通道并終止通訊。按照以下步驟建立好PC端視頻監(jiān)控程序的界面,如圖4-29所示圖4-30所示的是客戶端工作流程。圖4-29PC端視頻監(jiān)控程序界面A、打開Delphi7集成環(huán)境,系統(tǒng)自動新建一個工程。BStandard控件工具箱的buttonlabel控件2EditGroupbox一個,Additional工具箱里的Image控件一個,Internet工具箱里的TCPClient控件一個。C、設置各控件屬性,如表4-10所示。表4-10PC端視頻監(jiān)控軟件控件設置情況控件種類名稱屬性設置窗體主窗體caption:“視頻監(jiān)控PC端”設置caption:“設置”,name:“BtnSetting”按鈕開啟視頻caption:“開啟視頻”,name:“BtnOpenCamera”關閉視頻caption:“關閉視頻”,name:“BtnCloseCamera”對方IP:caption:“對方IP:”,name:“Label1”標簽對方端口:caption:“對方端口:”,name:“Label2”IPname:“txtIP”,text:“6”編輯框端口name:“txtPort”,text:“9000”TCPClientHost:“6”,Port:“9000”圖像框name:“VideoFrame”,height:“240”,width:“320”Image比較快,所以人眼看起來是動態(tài)的圖象。界面中的文本框控件是為了能在對方的IP地址和端口號改變的情IPTCPClient控件的Host對方IP)和Port屬性(用于指定對方端口),再打開以太網通信通道,向ARM服務端進行連接請求。SHAPE\*MERGEFORMAT圖4-30PC客戶端工作流程在程序設計中采用了Delphi中的TJpegImage對象和TMemory對象。TMemory對象用于存儲TCP層發(fā)送給應用層的數(shù)據(jù)包包含的數(shù)據(jù),在接收完數(shù)據(jù)包后,程序創(chuàng)建TJpegImage類型對象jpg,jpg通過LoadFromStream()方法裝載緩沖區(qū)中的數(shù)據(jù),最后在窗體上的VideoFrame圖片控件上顯示出來。4.8家電控制及傳感器模塊在該模塊中,家電控制以及傳感器報警模塊依托89C51單片機豐富的I/O口完成。傳感器的報警狀態(tài)通過RS232串口向ARM發(fā)送相應的字符串,由ARM端的應用程序進行解析。類似的,ARM端通過串口發(fā)送指定格式的字符串到單片機串口,串口打開相應的LED,以表示對應的家電的電源的打開。4.8.1單片機串口的配置在智能家居系統(tǒng)的家電控制板中,單片機的串行口通信采用10位為一幀的工作方式1101個起始位、8位數(shù)據(jù)位和1個停止位[10]。起始位D0D1D2D3D4D5D6D7停止位圖4-31單片機串行工作方式1的幀格式1SBUF8硬件自動地在它的前面加入起始位和在后面加上一個停止位,構成完整的幀格式。數(shù)據(jù)從串口的TXD輸出,輸出完一幀數(shù)據(jù)后,TXD輸出線保持高電平,并且SCON寄存器的TI位被置位為1,通知CPU可以發(fā)送下一幀數(shù)據(jù)。SCON寄存器的REN位被設為1RXDRXD片機識別出起始位到達,在移位脈沖的控制下,讀完數(shù)據(jù)位并且將其存入接收寄存器中,直到停止位到達,

置位RI中斷標志位,單片機的CPU即可將數(shù)據(jù)取走。9600bps夠與ARM正常通信。波特率的大小由單片機的定時(計數(shù))器T1的計數(shù)溢出率決定。

在單片機擴展板中,采用的是11.0592MHz的晶振,計算定時器的計數(shù)初值:

(4-1)其中smod=0,使波特率不倍增,PCON=00H。對于定時器1216位的計數(shù)器T18位

TH1作為預置寄存器,在初始化時,將計數(shù)初值分別存入TH1和TL1中,即兩者內容相同,當計數(shù)溢出時,

預置寄存器TH1將計數(shù)初值直接給TL1加載,這樣就避免了在程序中反復地存儲計數(shù)初值,進一步的提高了定時的精度,保證了串行接口的波特率的穩(wěn)定,同時也是保證了串口通信的穩(wěn)定性。4.8.2串口通信的自定義約定為了便于單片機與ARM之間的通訊信息的解析,特別定義了以下自定義的信息交流的格式約定。A傳感器報警字符串,如圖4-32所示。#$#1報頭傳感器編號圖4-32傳感器報警字符串格式該字符串為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論