目前,一般警報發放系統是基于PC機/單片機技術的半雙工的點對多點天線專用遙控網。系統中控制中心由PC/工控機擔任,各執行終端以單片機為核心的控制器來執行控制功能。從使用管理和建設角度看,有如下不足:基于PC機/工控機技術的控制中心單位體積大,設備成本較高,且由于承擔的任務相對簡單,故使用效率不高,而基于單片機技術的控制執行終端能較好地完成解碼控制功能,但不能滿足警報發放技術的信息交互化改進和運行管理的需求,例如由單片機完成高質量,高效率的音頻編解碼,錄入和還原來實現信息交互化功能是一個比較棘手的問題。本文設計的目的是鑒于以上需求,采用硬軟件資源豐富且可裁減的數據處理能力強大且具備一般單片機控制功能的嵌入式技術,設計一種體積小,成本低,功能強,開發周期短的嵌入式中心控制器和終端控制器,以對原有警報發放系統進行改進。 一、系統整體介紹 改進的系統由一個控制中心和多個終端構成?刂浦行暮徒K端之間使用無線數傳模塊來構成無線數據通路。每個終端配置唯一的地址,當發放警報時,控制中心既可以以群發的方式發放警報內容,又可以通過指定終端地址,以點對點的方式向某一指定的終端主機發放指定的警報內容。 終端控制器的音頻輸出端口和功放相連。當終端接收到屬于本機的警報指令后,根據不同的警報內容,調用不同的音頻文件,最后由音頻輸出單元和功放發放。 為保證控制器的可靠性,需要定時進行檢測。檢測時主控中心以串行點名的方式對每個終端進行查詢。檢測的內容包括中心和終端的無線數據通路和音頻發放設備的工作情況。為了能正確了解終端設備的工作情況,在終端音頻輸入接口配備麥克風,用于采集發放的警報聲音,采集的聲音壓縮文件再通過無線網絡返回給主控中心,再在主控中心進行處理,分析終端的整套設備工作正常與否。 一般來說嵌入式控制器是針對某一特定功能來設計的,它可被認為是一種具有特定功能的專用計算機。在本系統中,控制中心和終端控制器需要實現的主要任務都是數據傳輸和音頻的處理,所以在硬件資源選擇上,中心和終端可以使用同一套硬件設備。在系統組網時,只需在中心控制器和終端控制器上安裝不同的應用軟件即可完成系統要求。所以在設計開發中,一旦實現了控制中心的功能,也就是基本上完成了終端的設計任務。 二、系統硬件軟件資源的選擇 1 系統選擇 為了能方便的實現音頻的處理功能,加快系統的開發時間,選擇Windows CE作為控制器的操作系統。雖然Windows CE是一個軟實時的操作系統,但是完全可以滿足本系統隊實時性的要求。同時Windows CE具有出色的圖形用戶界面,強大的多媒體功能,良好的通信能力。界面友好的嵌入式平臺工具Platform Builder為Windows CE的制定提供了方便。具有和Visual C++基本相同特性的應用程序開發工具Embedded Visual C++又為熟悉Windows編程的開發人員提供了捷徑。所以使用具有功能完備的API函數庫的Windows CE操作系統,能使系統顯示出很大的優越性。 2 硬件結構 目前已有多款CPU內核支持WinCE操作系統,例如ARM、x86、MIPS、PowerPC、SH等。目前市場上采用MIPS和ARM架構的CPU占據了主導地位。本系統控制中心的CPU選擇Intel @XScale PXA255微控制處理器它遵從ARM 5V.TE體系構架,運行速度高達400MHz,Intel超流水線技術和獨特的動態功率管理技術,使它兼有高性能與低功耗的特點。為了達到嵌入Win CE操作系統的要求,系統配置64M SDRAM和32M Flash。系統還配置LCD顯示系統和觸摸屏。音頻控制器采用TI公司的TSC2301 Audio Codec芯片,該芯片支持AC’97標準20位立體聲編/解碼、支持可編程采樣率、輸入輸出增益和數字音響處理功能,同時集成觸摸屏控制功能。它也是本系統硬件的重要組成部分;诖谕ㄐ诺臒o線數傳模塊在實際應用中已經很成熟,在市場上也有多種可供選擇的產品。本文對此不作詳細介紹。以下是系統硬件結構圖。 三、Windows CE操作系統和應用程序 1 系統的制定 每一個Windows CE操作系統都是基于固定的硬件平臺來運行的。一個完整的Windows CE操作系統的基本內容包括以下幾個方面: 1). Bootloader,用于加載Windows CE操作系統的程序; 2). CPU初始代碼,基于特定的CPU系列; 3). 驅動程序,包括鍵盤、鼠標、聲卡、COM等等,不同的硬件設備可能有不同的設置,驅動程序分別由Windows CE和硬件廠商提供; 4). 完成特定功能的應用程序。 WinCE的制定是在Platform Builder下完成的,在此過程中需要選擇特定的開發板支持包BSP和相應的應用程序和服務組件,在選擇過程中為了節約硬件資源,使內核在能到達要求的前提下盡可能的小,需要盡量精簡應用程序和組件。 自己編寫應用程序后,為了使應用程序也能成為鏡像系統的一部分,可以在Platform Builder下創建自己的CEC文件,使其成為新的特性并添加到需制定的系統特性目錄中去。 制定完成的系統經過編譯后即可生成系統內核鏡像,同時還能生成一個Eboot文件。首先通過JTAG下載Eboot文件,再通過以太網下載系統鏡像文件,在這基礎上便可以完成對系統同的調試和固化。 四、應用程序 應程序主要是繪制人機交互界面,實現串口通信功能,并具有聲音的采集、編碼和播放功能。 應用程序是在Embedded Visual C++的環境下編輯的。Win CE同桌面Windows系統一樣也是一個圖形界面的操作系統他可以幫助我們設計出豐富的圖形界面,Win CE提供了功能強大的圖形設備接口(GDI),利用GDI函數可以方便地繪制出點、線、矩形、多邊形、橢圓、位圖、以及文本等,同時和Visual C++一樣embedded Visual C++也提供了許多常用的控件,所以繪制人機交互界面的工作相對簡單。 1 Windows CE的串行口通信程序 在Visual C++中實現串口通信可以簡單地使用MSCOMM控件,但是在Embedded Visual C++中沒有此控件,所以串口的實現相對復雜。但是Win CE提供了豐富的API函數庫,在EVC的編輯環境中可以使用API函數來實現嵌入式系統控制器和無線數傳模塊的通信。具體過程是首先對串口進行初始化,其中包括使用CreateFile函數打開存在且沒有被占用的串口資源,設置設備的屬性例如波特率,數據位數,校驗方式等。然后設置串口的讀寫時間,指定端口監測的事件集。在串口的讀寫過程中,因為寫是可以控制的,而讀的時候無法確定數據什么時候能收到,所以可以在程序的主線程中寫數據,同時創建一個輔助線程專門用來讀數據,當有數據需要發送時,使用WriteFile函數向已打開的串口寫需要發送數據。而在輔助線程中,用WaitCommEvent來檢測線路狀態,當檢測到收到一個字符的事件發生時調用ReadFile函數對串口進行讀操作。讀取數據后,為了觸發事件響應以完成數據處理,可以在輔助線程中使用PostMessageBox函數向應用程序主窗體類郵遞一個自定義消息,這樣就可以在主線程中完成消息響應過程。 值得注意的是Win CE操作系統是一種UNICODE環境它只支持UNICODE的應用程序和控件,這也是為什么同樣是32位機,具有基本類似的API函數,很多在Windows下能運行的控件或類在WINCE環境中無法正常工作的原因。所以在進行串口數據發送的時候需要把數據由UNICODE字符串轉換為ANSI字符串,可以使用API函數,WideCharToMulitByte進行轉換。 另外WINCE操作系統中不支持重疊I/O模式,所以在打開串口的時候需要選擇以非重疊I/O方式打開,但是在同步方式下如果有一個通訊API在操作,另一個會被阻塞,直到上一個操作完成,所以當讀數據的線程停留在WaitCommEvent的時候,WritFile就無法繼續執行。為了解決此問題需要在調用WritFile函數之前使用TerminateThread函數先終止寫線程,在發送完數據后再次創建同樣的寫線程用來等待數據接收事件。因為無線數傳模塊就是被設計成使用半雙工方式進行數據傳輸的,所以使用非重疊方式是合理的。 系統進行警報發放時,由控制中心向終端發送數據包,數據包被定義為如下格式: 終端接收到數據頭后,判斷設備地址是否為本機地址,如果是則讀取命令,根據命令字,發送不同的警報,如果地址不是本機地址則丟棄數據包。 2 Windows CE中聲音播放程序的實現 系統的在檢測時需要系統在終端進行聲音播放和錄入,再通過無線網絡把錄入的聲音文件傳送到控制中心。在應用程序中,聲音的錄入和播放使用波形音頻編程接口來實現,通過這個接口可以對音頻以脈沖編碼調制(pulse code modulation,PCM)的方式進行壓縮編碼,并能使應用程序精確地控制波形音頻的輸入輸出設備。 聲音的錄制過程如下: 1). 使用waveInOpen函數打開一個音頻輸入設備; 2). 使用WAVEHDR結構體分配錄制聲音時所需的內存,然后調用waveInPrepareHeader函數準備一個音頻輸入的數據頭; 3). 錄音結束時使用waveIn UnprepareHeader函數釋放音頻輸入緩存區,并調用waveInClose函數關閉音頻設備。 音頻的播放過程如下: 1). 使用waveOutOpen函數打開一個音頻輸出設備; 2). 使用WAVEHDR結構體分配錄制聲音時所需的內存,然后調用waveOutPrepareHeader函數準備一個音頻輸出的數據頭; 3). 使用waveOutWrite函數發送數據塊到音頻輸出設備; 4). 錄音結束時使用waveIn UnprepareHeader函數釋放音頻輸入緩存區,并調用waveInClose函數關閉音頻設備。 相對來說音頻地錄入比輸出更為復雜一些。將模擬的(連續的)聲音波形數字元化(離散化)的過程,主要包括采樣和量化兩個方面。數字音頻的質量也主要取決于:采樣頻率和量化位數這兩個重要參數。此外,聲道的數目、相應的音頻設備也是影響音頻質量的原因。在PCM語音壓縮編碼中: 數據量=(采樣頻率×量化位數)/8(字節數) ×聲道數目 應用程序錄制的Wave文件中也同樣有幾個重要的參數來定義聲音數據格式,它們是:采樣方式、采樣位數、采樣頻率和聲道數。一般采樣頻率有8kHz、11kHz、22kHz和44kHz,采樣頻率越高,聲音的保真性就越好,但同時也就使音頻數據的存儲量增大了。在本設計中采集聲音只是為了檢測設備的運行情況,所以對聲音的質量要求不是很高,同時為了減輕網絡負擔,提高檢測速度,設定數據格式為8kHz采樣頻率、8位量化、單聲道。通過實驗發現,采樣得到音質有所下降,但是可以十分清晰地分辨警報類型的。假設我們測試設備的時間為三秒鐘,那么數據量為8000×8÷8×1×3=24KB,在串行口波特率為76800bps時,加上數據包的包頭、包長,大約在3~4秒的時間能完成一個終端設備的檢測。 五、結語 本設計完成了對遙控遙測警報系統中心控制器的硬件結構的設計,并在嵌入式硬件平臺的基礎上,開發了控制中心和終端的應用程序。新的系統更好的滿足了用戶的,同時控制器體積變小了,可靠性增加了。不過,由于系統中無線通信模塊無法達到太高的波特率,導致系統檢測時間比較長,在這一點有待進一步改進。 |