顏頤欣 呂實(shí)誠 陳鋼強(qiáng)
摘要:設(shè)計(jì)是對原有的一種基于PC機(jī)平臺的遙控遙測警報(bào)系統(tǒng)控制中心的改進(jìn)。提出一種基于ARM硬件平臺和嵌入式Windows CE.net操作系統(tǒng)的警報(bào)控制中心的原理設(shè)計(jì)。
關(guān)鍵詞:嵌入式無線WindowsCE警報(bào)
中圖分類號TP332.3文獻(xiàn)標(biāo)識碼A文章編號:1002-2422(2007)03-0006-02
1系統(tǒng)框架結(jié)構(gòu)
在本系統(tǒng)中,控制中心和終端控制器需要實(shí)現(xiàn)的主要任務(wù)都是數(shù)據(jù)傳輸和音頻的處理,所以在硬件資源選擇上,中心和終端可以使用同一套硬件設(shè)備。在系統(tǒng)組網(wǎng)時(shí),只需在中心控制器和終端控制器上安裝不同的應(yīng)用軟件即可完成系統(tǒng)要求。所以在設(shè)計(jì)開發(fā)中,一旦實(shí)現(xiàn)了控制中心的功能,也就是基本上完成了終端的設(shè)計(jì)任務(wù)。
2系統(tǒng)硬件軟件資源的選擇
2.1系統(tǒng)選擇
為了能方便的實(shí)現(xiàn)音頻的處理功能,加快系統(tǒng)的開發(fā)時(shí)間,選擇Windows CE作為控制器的操作系統(tǒng)。雖然Windows CE是一個(gè)軟實(shí)時(shí)的操作系統(tǒng),但是完全可以滿足本系統(tǒng)對實(shí)時(shí)性的要求。能使系統(tǒng)顯示出很大的優(yōu)越性。
2.2硬件結(jié)構(gòu)
系統(tǒng)控制中心的CPU選擇Intel@XSale PXA255微控制處理器它遵從ARM 5V.TE體系構(gòu)架,運(yùn)行速度高達(dá)400MHz,Intel超流水線技術(shù)和獨(dú)特的動(dòng)態(tài)功率管理技術(shù),使她成為高性能與低功耗的完美結(jié)合。為了達(dá)到嵌入WinCE操作系統(tǒng)的要求,系統(tǒng)配置64M的SDRAM和32MHash。系統(tǒng)還配置LCD顯示系統(tǒng)和觸摸屏。音頻控制器采用,公司的TSC2301 Audio Codee芯片,該芯片支持AC97標(biāo)準(zhǔn)20位立體聲編解碼、支持可編程采樣率、輸入輸出增益和數(shù)字音響處理功能,同時(shí)集成觸摸屏控制功能。
3Windows CE操作系統(tǒng)和應(yīng)用程序
3.1系統(tǒng)的制定
每一個(gè)Windows CE操作系統(tǒng)都是基于固定的硬件平臺來運(yùn)行的。一個(gè)完整的Windows CE操作系統(tǒng)的基本內(nèi)容包括以下幾個(gè)方面:
1、Bootloader,用于加載Windows CE操作系統(tǒng)的程序;
2、CPU初始代碼,基于特定的CPU系列;
3、驅(qū)動(dòng)程序,包括鍵盤、鼠標(biāo)、聲卡、COM等等,不同的硬件設(shè)備可能有不同的設(shè)置,驅(qū)動(dòng)程序分別由Windows CE和硬件廠商提供;
4、用戶界面接口;
5、完成特定功能的應(yīng)用程序。
WinCE的制定是在Platform Builder下完成的,在此過程中需要選擇特定的開發(fā)板支持包BSP和相應(yīng)的應(yīng)用程序和服務(wù)組件,在選擇過程中為了節(jié)約硬件資源,使內(nèi)核在能到達(dá)要求的前提下盡可能的小,需要盡量精簡應(yīng)用程序和組件.
3.2應(yīng)用程序
應(yīng)用程序主要是繪制人機(jī)交互界面,實(shí)現(xiàn)串口通信功能,并具有聲音的采集、編碼和播放功能。
應(yīng)用程序是在embedded Visual C++的環(huán)境下編輯的。Win CE同桌面Windows系統(tǒng)一樣也是一個(gè)圖形界面的操作系統(tǒng),可幫助我們設(shè)計(jì)出豐富的圖形界面,Win CE提供了功能強(qiáng)大的圖形設(shè)備接口(GDI),利用GDI函數(shù)可以方便地繪制出點(diǎn)、線、矩形、多邊形、橢圓、位圖、以及文本等,同時(shí)和Visual C++一樣,embedded Visual C++也提供了許多常用的控件。所以繪制人機(jī)交互界面的工作相對簡單。
3.3 Windows CE的串行口通信程序
在Visual C++中實(shí)現(xiàn)串口通信可以簡單地使用MSCOMM控件,但是在Embedded Visual C++中沒有此控件,所以串口的實(shí)現(xiàn)相對復(fù)雜。但是Win CE提供了豐富的API函數(shù)庫,在EVC的編輯環(huán)境中可以使用API函數(shù)來實(shí)現(xiàn)嵌入式系統(tǒng)控制器和無線數(shù)傳模塊的通信。具體過程是:先對串口進(jìn)行初始化,其中包括使用CreateFile函數(shù)打開存在且沒有被占用的串口資源,設(shè)置設(shè)備的屬性例如波特率,數(shù)據(jù)位數(shù),校驗(yàn)方式等。然后設(shè)置串口的讀寫時(shí)間,指定端口監(jiān)測的事件集。在串口的讀寫過程中,因?yàn)閷懯强梢钥刂频模x的時(shí)候無法確定數(shù)據(jù)什么時(shí)候能收到,所以可以在程序的主線程中寫數(shù)據(jù),同時(shí)創(chuàng)建一個(gè)輔助線程專門用來讀數(shù)據(jù),當(dāng)有數(shù)據(jù)需要發(fā)送時(shí),使用WriteFile函數(shù)向已打開的串口寫需要發(fā)送數(shù)據(jù)。而在輔助線程中,用WaitCom-mEvent來檢測線路狀態(tài),當(dāng)檢測到收到一個(gè)字符的事件發(fā)生時(shí)調(diào)用ReadFile函數(shù)對串口進(jìn)行讀操作。讀取數(shù)據(jù)后,為了觸發(fā)事件響應(yīng)以完成數(shù)據(jù)處理,可以在輔助線程中使用PostMessageBox函數(shù)向應(yīng)用程序主窗體類郵遞一個(gè)自定義消息,這樣就可以在主線程中完成消息響應(yīng)過程.
值得注意的是Win CE操作系統(tǒng)是一種UNICODE環(huán)境,它只支持UNICODE的應(yīng)用程序和控件,這也是為什么同樣是32位機(jī),具有基本類似的API函數(shù),很多在Win-dows下能運(yùn)行的控件在WINCE環(huán)境中無法正常工作的原因,所以在進(jìn)行串口數(shù)據(jù)發(fā)送的時(shí)候需要把數(shù)據(jù)由UNI-CODE字符串轉(zhuǎn)換為ANSI字符串,可以使用API函數(shù),WideCharToMulitByte進(jìn)行轉(zhuǎn)換。
另外,WINCE操作系統(tǒng)中不支持重疊I/O模式,所以在打開串口的時(shí)候需要選擇以非重疊I/O方式打開,但是在同步方式下如果有一個(gè)通訊API在操作,另一個(gè)會被阻塞,直到上一個(gè)操作完成,所以當(dāng)讀數(shù)據(jù)的線程停留在Wait-CommEvent的時(shí)候。WfitFile就無法繼續(xù)執(zhí)行。為了解決此問題需要在調(diào)用WfitFile函數(shù)之前使用TerminateThread函數(shù)先終止寫線程,在發(fā)送完數(shù)據(jù)后再次創(chuàng)建同樣的寫線程用來等待數(shù)據(jù)接收事件。因?yàn)闊o線數(shù)傳模塊就是被設(shè)計(jì)成使用半雙工方式進(jìn)行數(shù)據(jù)傳輸?shù)?,所以使用非重疊方式是合理的.系統(tǒng)進(jìn)行警報(bào)發(fā)放時(shí),由控制中心向終端發(fā)送數(shù)據(jù)包,數(shù)據(jù)包被定義為如下格式:
終端接收到數(shù)據(jù)頭后,判斷設(shè)備地址是否為本機(jī)地址,如果是則讀取命令,根據(jù)命令字,發(fā)送不同的警報(bào),如果地址不是本機(jī)地址則丟棄數(shù)據(jù)包。
3.4 Windows CE中聲音播放程序的實(shí)現(xiàn)
在檢測時(shí)需要系統(tǒng)在終端進(jìn)行聲音播放和錄入,再通過無線網(wǎng)絡(luò)把錄入的聲音文件傳送到控制中心。在應(yīng)用程序中,聲音的錄入和播放使用波形音頻編程接口來實(shí)現(xiàn),通過這個(gè)接口可以對音頻以脈沖編碼調(diào)制(pulse code medu-lation,PCM)的方式進(jìn)行壓縮編碼,并能使應(yīng)用程序精確地控制波形音頻的輸入輸出設(shè)備。
聲音的錄制過程如下:
l、使用waveInOpen函數(shù)打開一個(gè)音頻輸入設(shè)備;
2、用WAVEHDR結(jié)構(gòu)體分配錄制聲音時(shí)所需的內(nèi)存,然后調(diào)用waveInPrepareHeader函數(shù)準(zhǔn)備一個(gè)音頻輸入的數(shù)據(jù)頭;
3、調(diào)用waveInAddBuff函數(shù)為音頻輸入設(shè)備準(zhǔn)備一個(gè)緩存數(shù)據(jù)塊;
4、使用waveInStart函數(shù)開始錄制音頻;
5、錄音結(jié)束時(shí)使用wavelnUnprepareHeader函數(shù)釋放音頻輸入緩存區(qū),并調(diào)用waveInClose函數(shù)關(guān)閉音頻設(shè)備。
音頻的播放過程如下:
l、使用waveOutOpen函數(shù)打開一個(gè)音頻輸出設(shè)備;
2、用WAVEHDR結(jié)構(gòu)體分配錄制聲音時(shí)所需的內(nèi)存,然后調(diào)用waveOutPrepareHeader函數(shù)準(zhǔn)備一個(gè)音頻輸出的數(shù)據(jù)頭;
3、用waveOutWrite函數(shù)發(fā)送數(shù)據(jù)塊到音頻輸出設(shè)備;
4、錄音結(jié)束時(shí)使用waveInUnprepareHeader函數(shù)釋放音頻輸入緩存區(qū)。并調(diào)用waveInClose函數(shù)關(guān)閉音頻設(shè)備。
相對來說音頻錄入比輸出更為復(fù)雜一些。將模擬的(連續(xù)的)聲音波形數(shù)字元化(離散化)的過程,主要包括采樣和量化兩個(gè)方面。數(shù)字音頻的質(zhì)量也主要取決于:采樣頻率和量化位數(shù)這兩個(gè)重要參數(shù)。
4結(jié)束語
完成了對遙控遙測警報(bào)系統(tǒng)中心控制器的硬件結(jié)構(gòu)的設(shè)計(jì),并在嵌入式硬件平臺的基礎(chǔ)上。開發(fā)了控制中心和終端的應(yīng)用程序。新的系統(tǒng)控制器體積變小了,可靠性增加了。不過.由于系統(tǒng)中無線通信模塊無法達(dá)到太高的波特率,導(dǎo)致系統(tǒng)檢測時(shí)間比較長,待進(jìn)一步改進(jìn)。