μClinux下基于MiniGUI的監(jiān)控終端的實現(xiàn)_第1頁
μClinux下基于MiniGUI的監(jiān)控終端的實現(xiàn)_第2頁
μClinux下基于MiniGUI的監(jiān)控終端的實現(xiàn)_第3頁
μClinux下基于MiniGUI的監(jiān)控終端的實現(xiàn)_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、Clinux下基于MiniGUI的監(jiān)控終端的實現(xiàn)      摘 要  介紹了MiniGUI的主要特點,實現(xiàn)了MiniGUI在Clinux下的移植,最后給出了基于MiniGUI的監(jiān)控終端軟件開發(fā)的詳細流程。關鍵詞  嵌入式; Clinux ;MiniGUI;arm7;數(shù)據(jù)監(jiān)控1         引言 隨著軟硬件資源的成熟與完善,嵌入式技術在工業(yè)控制領域中應用廣泛。而開放源碼的Linux操作系統(tǒng)成為開發(fā)嵌入式產品的首選。本系統(tǒng)采用了Clin

2、ux操作系統(tǒng),它是專為沒有MMU(內存管理單元)的CPU而設計的,并且提供了多種設備驅動、網絡通信協(xié)議,大大簡化了應用程序的開發(fā)過程。同時,配備一個高性能的GUI ( 圖形用戶界面 ),使用戶與產品能進行方便的、可靠的交互,也已成為嵌入式開發(fā)工作中的一個重點。本系統(tǒng)使用的MiniGUI就是嵌入式系統(tǒng)下一個小型的GUI支持系統(tǒng),它具有占用資源少、高性能、高可靠性及可配置的氐悖丫曬浦駁蕉嘀鐘布筒僮饗低稱教稀?lt;/DIV> 2          MiniGUI的特點和體系結構  &

3、#160; MiniGUI由魏永明先生主持開發(fā),目標是為基于Linux的嵌入式系統(tǒng)提供一個小型的GUI支持系統(tǒng)。2.1 MiniGUI的特點                         MiniGUI的主要特點有:(1)         遵循GPL條款的純自由軟件。(2)&#

4、160;        多字符集和多字體支持,目前支持 ISO8859-1、GB2312及Big5 等字符集,并且支持各種光柵字體和 TrueType、Type 1 等矢量字體。(3)         Windows的資源文件支持,如位圖、圖標、光標、插入符、定時器及加速鍵等。(4)         可配置??筛鶕?jù)用戶的需求進行配置和編譯。 (5) 

5、0;       提供了完備的多窗口機制和消息傳遞機制。(6)         小巧,經過裁減的minigui應用程序(包括資源和配置文件)不超過700K。(7)         可移植性好。2.2 MiniGUI的體系結構   從整體結構上看,MiniGUI是分層設計的,層次結構如圖1所示。     

6、60;                               圖1MiniGUI體系結構圖在最底層,GAL和IAL提供底層圖形接口以及輸入設備的驅動;中間層是MiniGUI 的核心層,包括窗口系統(tǒng)必不可少的各個模塊;最頂層是API,為用戶提供編程接口。GAL和IAL為 MiniGUI提供了底層的圖形接口

7、以及輸入接口。3  MiniGUI在44B0上的移植    本系統(tǒng)采用的開發(fā)板配置如下:三星公司生產的S3C44B0,2M Nor Flash,16M Nand Flash,8M SDRAM。CC=arm-elf-linux-gcc ./configure -prefix=/opt/usr/local     -target=arm-linux -build=i386-linux -host=arm-linux -disable-vbfsupport     -enable-lite -enable-st

8、andalone -disable-shared -disable-micemoveable  -disable-nativeial -disable-newgal -enable-nativegal -enable-fblin8   -enable-cursor     -enable-ipaqial    其中,arm-elf-linux-gcc是針對arm7體系結構目標的編譯器,prefix是文件安裝路徑的前綴,build是指執(zhí)行編譯的機器,這里是x86的開發(fā)主機;target是運行該編譯器所產生目標文件的機

9、器;ipaqial是使用的觸摸屏的輸入引擎;由于本系統(tǒng)的任務不是很復雜,只需運行一個minigui應用程序,所以選擇了standalone版本;并且Clinux不支持動態(tài)編譯,所以選擇了靜態(tài)編譯。用戶還可以根據(jù)自身的需要對minigui的庫文件進行配置。配置完,運行編譯安裝命令。   用下面的命令編譯用戶應用程序:arm-elf-linux-gcc elf2flt I /opt/usr/local/include L /opt/usr/local/lib o helloworld helloworld.c lminigui   根據(jù)用戶的配置相應修改Mi

10、niGUI.cfg。把helloworld ,MiniGUI.cfg配置文件和資源拷貝到相應目錄下,制作romfs文件系統(tǒng),把romfs文件系統(tǒng)重新燒寫到開發(fā)板上。重啟開發(fā)板,在shell提示符下運行helloworld ,可以看到應用程序輸出的效果。至此,MiniGUI圖形包在目標板上移植安裝完成。   移植過程中要注意的問題:(1)         觸摸屏輸入引擎的編寫       對觸摸屏來講,MiniGUI 能夠自動識別移動信息

11、,也能夠自動識別用戶的單擊和雙擊事件。這樣,底層輸入引擎只需提供位置信息和當前的按鍵狀態(tài)信息就可以了。修改src/ial/ipaq.c 源碼中相關的部分:static int mouse_getbutton(void)             return pos.b;  函數(shù)mouse_getbutton()返回觸摸屏的狀態(tài)(是否被點擊)。wait_event() 被定時調用。如果觸摸屏被點擊,則讀取觸摸屏的位置信息和當前的按鍵狀態(tài)信息。相關部分代碼如下:  &#

12、160;                      read (ts, &pos, sizeof (POS);                      

13、0; if ( pos.b1)                                 mousex = pos.x;             

14、0;                  mousey = pos.y;                            pos.b = ( pos.b &

15、gt; 0 ? 4:0);                           return IAL_MOUSEEVENT;                 用戶需根據(jù)讀取觸摸屏返

16、回的數(shù)據(jù)格式做相應的修改。(2)         MiniGUI 字體文件的裁減    修改 /etc/MiniGUI.cfg,刪除某些不需要的字體文件。刪除的方法是修改 fontnumber 鍵值,對應的那些字體文件,就可以從系統(tǒng)中刪除了。用戶可以只保留rbf中的兩個字體,一個中文的,一個英文的,其余的都可以刪掉的。裁減后的字體文件不超過300K。4  監(jiān)控終端軟件開發(fā) MiniGUI的消息驅動機制MiniGUI 提供了消息循環(huán)機制,而應用程序的結構一般是消息驅動的,應用程

17、序通過被動接收消息來工作。本系統(tǒng)中采用了standalome版本,它基于客戶/服務器(C/S)體系,在服務器和客戶之間傳遞輸入設備數(shù)據(jù),以及客戶和服務器之間的某些語法和響應數(shù)據(jù)。    MiniGUI程序的入口點為MiniGUIMain,在該函數(shù)中先設置主窗口一些基本屬性,建立每個客戶程序唯一的一個消息隊列。如果應用程序為lite版本MiniGUI下的應用程序,則應首先調用SetDesktopRect函數(shù)來設置程序的顯示區(qū)域,然后調用CreateMainWindow函數(shù)創(chuàng)建并顯示程序的主窗口,最終進入消息循環(huán)。在主窗口建立時,通過設置MainWindowProc,

18、可以定義對應該窗口的過程函數(shù)。     MiniGUI使用消息驅動作為應用程序的創(chuàng)建構架。窗口過程函數(shù)主體上都是switch和case結構的選擇語句,不同的消息對應響應的處理子函數(shù)。MSG_CREATE消息在窗口生成時被發(fā)送。MSG_PAINT一般是在調用UpdateWindow重繪時發(fā)生,用戶可根據(jù)需要定義相應的操作子函數(shù)。MSG_CLOSE即是關閉窗口時的動作,一般調用DestroyMainWindow銷毀主窗口,調用PostQuitMessage退出消息循環(huán)。   (2) 數(shù)據(jù)監(jiān)控軟件實現(xiàn)    數(shù)據(jù)監(jiān)控終端

19、用戶界面程序選擇在Clinux啟動的時候自動運行,首先彈出的是用戶登陸窗口。用戶輸入密碼,然后登陸到控制界面。MiniGUI應用程序框架如圖2所示。                     圖2 MiniGUI應用程序框架圖              

20、0;       因MiniGUI應用程序需要和監(jiān)控主機服務程序交換數(shù)據(jù),所以我們采用了經MiniGUI包裝過的Socket通信機制。    在MiniGUI應用程序建立一個監(jiān)聽套接字。    通過MiniGUI的API函數(shù)RegisterListenFD注冊監(jiān)聽套接字sockfd 。當監(jiān)控服務器有連接請求時,MiniGUI應用程序的窗口過程函數(shù)中會收到MSG_FDEVENT消息,我們可以在這里添加相應的數(shù)據(jù)處理子函數(shù):    case MSG_FDEVENT:if(LOWORD(wParam)=sockfd) acc_fd=serv_accept(sockfd,&uid);if(acc_fd>0)readsocket(acc_fd,buf,20);MiniGUI應用程序同時需要從串口讀取數(shù)據(jù)。首先在對話框創(chuàng)建時通過子函數(shù)InitCom1()設置好串口0相關參數(shù),如波特率,數(shù)據(jù)位和停止位等.然后調用RegisterLis

溫馨提示

  • 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

提交評論