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