侯萱
(中國計(jì)量大學(xué) 浙江杭州 310018)
摘要:本文著重闡述了基于嵌入式系統(tǒng)PDA在Windows CE平臺(tái)下實(shí)現(xiàn)紅外通訊功能的開發(fā)方法,目的在于實(shí)現(xiàn)遵從IrDA標(biāo)準(zhǔn)的PDA系統(tǒng)與和IrDA標(biāo)準(zhǔn)不兼容的紅外設(shè)備進(jìn)行通訊。主要內(nèi)容涉及PDA針對(duì)與IrDA協(xié)議不兼容設(shè)備進(jìn)行紅外通訊的解決辦法,相關(guān)驅(qū)動(dòng)程序設(shè)計(jì)方法與開發(fā)策略,以及實(shí)際驗(yàn)證與研究結(jié)論等,核心的技術(shù)思路是通過對(duì)紅外通訊協(xié)議進(jìn)行自定義進(jìn)而繞開IrDA協(xié)議,通過EVC開發(fā)環(huán)境開發(fā)相關(guān)驅(qū)動(dòng)程序?qū)DA進(jìn)行下載,從而通過PDA的URAT串行端口發(fā)送與協(xié)議相對(duì)應(yīng)的編碼到IR收發(fā)器,實(shí)現(xiàn)需求的紅外通信功能。文中對(duì)技術(shù)方法、設(shè)計(jì)思路、開發(fā)流程、編譯環(huán)境,以及驅(qū)動(dòng)程序主要模塊的關(guān)鍵源代碼,給予了充分的闡述和說明。
關(guān)鍵詞:紅外通訊;自定義協(xié)議;IrDA
1.前言
由于紅外通信的方便高效,使之在PC、PC外設(shè)以及信息家電等設(shè)備上的應(yīng)用日益廣泛,如目前PDA的紅外通信收發(fā)端口已成為必要的通信接口,因此應(yīng)用PDA的紅外收發(fā)端口對(duì)某些受紅外控制的設(shè)備進(jìn)行控制與通信正成為一個(gè)新的技術(shù)應(yīng)用方向。由于當(dāng)前PDA紅外收發(fā)協(xié)議都是遵照IrDA協(xié)議的,而大部分的紅外通信器所使用的IR通信協(xié)議一般并不與IrDA協(xié)議相兼容。為實(shí)現(xiàn)與這類設(shè)備進(jìn)行紅外通信,必須對(duì)紅外通訊協(xié)議進(jìn)行自定義,開發(fā)相關(guān)驅(qū)動(dòng)程序?qū)DA進(jìn)行下載,從而通過PDA的URAT串行端口發(fā)送與協(xié)議相對(duì)應(yīng)的編碼到IR收發(fā)器,實(shí)現(xiàn)需求的紅外通信功能??紤]到當(dāng)前PDA采納的Pocket PC架構(gòu)是基于WinCE系統(tǒng),由于WinCE系統(tǒng)是專門為信息設(shè)備和嵌入式應(yīng)用等所設(shè)計(jì),并具有可壓縮、高效和易升級(jí)特性的操作系統(tǒng),因此在WinCE平臺(tái)上利用EVC開發(fā)環(huán)境,開發(fā)和編譯自定義協(xié)議的紅外通訊驅(qū)動(dòng)程序和應(yīng)用軟件,進(jìn)而實(shí)現(xiàn)基于WinCE的自定義紅外協(xié)議PDA通訊技術(shù),對(duì)于PDA通訊功能的拓展和相關(guān)紅外通訊設(shè)備的適用性提高,具有很好的技術(shù)深化意義和開發(fā)應(yīng)用價(jià)值。
2.紅外通訊基本原理與IrDA協(xié)議簡(jiǎn)介
紅外通訊一般采用紅外波段內(nèi)的近紅外線,波長(zhǎng)在0.75μm至25μm之間,目前紅外通信主要應(yīng)用在無線遙控領(lǐng)域。紅外遙控器在發(fā)射遙控指令時(shí)把二進(jìn)制數(shù)調(diào)制成一系列的脈沖串行格式信號(hào)后發(fā)射出去,常用的調(diào)制方法有脈沖寬度調(diào)制(PWM)和脈沖位置調(diào)制(PPM)兩種,用于遙控的紅外信號(hào)的載波頻率大約在36kHz上下,通常以載波的通斷實(shí)現(xiàn)。紅外受控器件的接受頭在接受到紅外光波時(shí),如果光波的頻率是在要求的頻率下,如38~40kHz,則在接受頭輸出端輸出低電平,反之則是高電平。
IrDA是常用于計(jì)算機(jī)和外設(shè)中的紅外傳輸標(biāo)準(zhǔn),該標(biāo)準(zhǔn)起源于Hewlett-Packard計(jì)算器中使用的紅外通信連接。最初的IrDA標(biāo)準(zhǔn)定義協(xié)議是IrDA1.0,簡(jiǎn)稱為SIR(Serial InfraRed),它是基于HP-SIR開發(fā)出來的一種異步的、半雙工的紅外通訊方式。SIR以系統(tǒng)的異步通訊收發(fā)器(UART)為依托,通過對(duì)串行數(shù)據(jù)脈沖的波形壓縮和對(duì)所接收的光信號(hào)電脈沖的波形擴(kuò)展這一編碼解碼過程(3/16 EnDec)實(shí)現(xiàn)紅外數(shù)據(jù)傳輸。由于受到UART通訊速率的限制,SIR的最高通訊速率只有115.2Kbps,即通常的電腦串行端口的最高速率,但在一般應(yīng)用中已能滿足傳輸設(shè)備對(duì)通訊速率要求。隨后IrDA又推出了更高速率的協(xié)議標(biāo)準(zhǔn),如FIR(傳輸速率達(dá)到4Mbit/s)和VFIR協(xié)議標(biāo)準(zhǔn)(傳輸速率達(dá)到16Mbit/s)。
3.自定義紅外協(xié)議PDA通訊技術(shù)
3.1 WinCE系統(tǒng)紅外通訊特點(diǎn)
Windows CE的設(shè)計(jì)思路是一種小型基于ROM的,具有Win32子集API的操作系統(tǒng),同時(shí)Windows CE設(shè)備幾乎均具有與IrDA協(xié)議兼容的紅外IR端口。一般基于WinCE的設(shè)備具有3種實(shí)現(xiàn)紅外IR通信的方法,即原始IR、仿真紅外串口IrComm和紅外套接字IrSock。原始IR就是系統(tǒng)將IR收發(fā)機(jī)作為串行電纜,不對(duì)數(shù)據(jù)做任何處理,而由應(yīng)用程序負(fù)責(zé)檢測(cè)沖突和其它可能發(fā)生的問題;IrComm模式把紅外口虛擬為串口和并口,通訊時(shí)把它作為一個(gè)串口或并口來對(duì)待。IrComm端口在很多方面與串行端口和原始IR端口不同。這些差別是因?yàn)镮rComm端口是一個(gè)模擬端口而不是真實(shí)的設(shè)備。IrComm驅(qū)動(dòng)程序使用IrSock來管理IR鏈接。然后驅(qū)動(dòng)程序只負(fù)責(zé)反映數(shù)據(jù)流和一些控制字符以便模擬串行連接。IrSock實(shí)際上是一種與套接相似的API,這種API建立在用于紅外通信的IrDA堆棧頂端。IrSock是IrDA堆棧唯一高級(jí)接口,IrSock所提供的是一種查詢準(zhǔn)備通過紅外端口進(jìn)行會(huì)話的設(shè)備的方法,以及仲裁、沖突偵測(cè)和控制。
3.2 設(shè)計(jì)與開發(fā)思路
基于PDA自定通訊協(xié)議技術(shù)實(shí)現(xiàn)對(duì)移動(dòng)通訊信道分配仿真器的紅外控制,關(guān)鍵是在紅外通訊的基本收發(fā)規(guī)則的基礎(chǔ)上,通過自定義紅外通訊協(xié)議進(jìn)而繞開IrDA協(xié)議,進(jìn)行驅(qū)動(dòng)程序和應(yīng)用軟件的開發(fā)。首先必須使用原始IR方法進(jìn)行通訊,同時(shí)要考慮如何實(shí)現(xiàn)38~40kHz的紅外載波,解決思路是通過設(shè)置串口的波特率為115200HZ,數(shù)據(jù)位為8位,偶校驗(yàn),兩個(gè)停止位,并由串口連續(xù)發(fā)送數(shù)據(jù)0xDB,則完整的串行通信數(shù)據(jù)幀就是011011011011,由此連續(xù)發(fā)送的0xDB數(shù)據(jù)就構(gòu)成了38.4KHZ的載波;其次要考慮采用合適的驅(qū)動(dòng)程序與應(yīng)用軟件的編譯環(huán)境,由于是EVC(eMbedded Visual C++)是對(duì)應(yīng)WinCE平臺(tái)進(jìn)行嵌入式系統(tǒng)開發(fā)的軟件編譯環(huán)境,在開發(fā)手段與編譯方式上與VC++非常類似,因此基于EVC編譯環(huán)境進(jìn)行相關(guān)驅(qū)動(dòng)程序和應(yīng)用軟件的開發(fā),在編譯調(diào)試通過后下載到PDA上,即可實(shí)現(xiàn)對(duì)通訊仿真器的紅外控制功能。
4.結(jié)束語
本文自定義的紅外協(xié)議是按照有調(diào)制脈沖編碼方式進(jìn)行的,也可以改變MakeStream()來實(shí)現(xiàn)其他的編碼方式,在這種情況下當(dāng)獲知某種紅外遙控設(shè)備的編碼協(xié)議后,則可以使用PDA對(duì)該設(shè)備進(jìn)行紅外控制,從而實(shí)現(xiàn)PDA的通用控制器角色并易于走進(jìn)工業(yè)控制領(lǐng)域。進(jìn)一步的開發(fā)改進(jìn)方向可以在PDA上構(gòu)建小型數(shù)據(jù)庫,并且存儲(chǔ)多種紅外控制協(xié)議,從而使該紅外控制驅(qū)動(dòng)程序更為通用;另外以上紅外控制方案僅涉及到紅外發(fā)送功能,如果要增加紅外接受功能,則可利用基于IrDA協(xié)議的Ircomm和IrSock方法。隨著PC上紅外應(yīng)用的日益廣泛以及對(duì)紅外通信質(zhì)量要求的提高,與IrDA協(xié)議兼容的設(shè)備將越來越多,以該兩種方法開發(fā)驅(qū)動(dòng)程序?qū)崿F(xiàn)PDA的多功能紅外控制較采用原始IR方法將更加高效和穩(wěn)定。
參考文獻(xiàn)
[1][美] Douglas Boling 著. Microsoft Windows CE 程序設(shè)計(jì). 北京大學(xué)出版社. 1999年8月
[2][美] John Catsoulis 著. 嵌入式硬件設(shè)計(jì) 徐君明等譯. 中國電力出版社
[3]Microsoft Windows CE Programmers Guide 1999 Microsoft Press