色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > MiniGUI在車載導航終端中的應用

          MiniGUI在車載導航終端中的應用

          作者: 時間:2005-12-08 來源:網(wǎng)絡 收藏

          摘要:提出一種GPS的設計方案,并針對電子地圖所需的圖形界面支持系統(tǒng)進行詳細論述。作為一種主要運行于嵌入式Linux下的圖形用戶界面支持系統(tǒng),在本文中將其儀中,并提出一種基于的電子地圖的設計方法,配合GPS信號接收機,實現(xiàn)定位導航功能。

          關鍵詞:GPS  電子地圖 導航


          引 言

            隨著社會信息化的日益發(fā)展,車載的主要發(fā)展方向應該是監(jiān)控跟蹤及導航相結合,即所謂的車載信息系統(tǒng),長遠發(fā)展則是通信、導航、娛樂、安防、辦公和上網(wǎng)為一體的車輛信息系統(tǒng)。

          1 系統(tǒng)整體設計方案

            本文中提出的車載導航設計方案,可實現(xiàn)GPS導航、電子地圖實時定位、GSM/GPRS通信等功能,通過實驗已取得良好的效果。系統(tǒng)整體設計方案如圖1所示。
             
                         圖1車載導航終端整體設計方案

            系統(tǒng)主控芯片采用了由韓國Samsung公司生產的ARM核32位RISC微處理器S3C2410,并在由其組成的開發(fā)板上移植Linux操作系統(tǒng),由Linux操作系統(tǒng)負責系統(tǒng)的整體調度和控制。通過S3C2410的UART接口連接GPS接收機JUPITER 021/031,用以接收NEMA0183格式的GPS定位信息。通過UART接口和GSM/GPRS模塊MC35進行通信,通過發(fā)送AT命令控制MC35,來完成語音呼叫、GSM SMS及GPRS等功能。
          為在車載LCD上實現(xiàn)電子地圖的繪制顯示,系統(tǒng)的整體層次框圖如圖2所示,由Linux操作系統(tǒng)負責底層硬件的初始化和管理,并向上層提供接口,MiniGUI來完成電子地圖在LCD上的繪制,并通過Linux內核提供的接口與GPS接收機和GSM/GPRS模塊完成通信等功能。
                            
                           圖2系統(tǒng)層次結構框圖

          2 圖形界面支持系統(tǒng)――MiniGUI

          2.1MiniGUI介紹

            MiniGUI是由許多自由軟件開發(fā)人員共同開發(fā)的一個自由軟件項目,遵循LGPL條款發(fā)布,其目標是為基于Linux的實時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。MiniGUI能夠在各個不同平臺上提供最大程度的接口兼容性,已運行于ARM、MIPS等各種主流嵌入式硬件平臺之上。目前,在包括手持信息終端產品、金融終端、KTV點播系統(tǒng)、POS機等許多項目和產品中得到廣泛的應用。

            本文利用MiniGUI 1.30版本,將其編譯為lite版本并移植到基于ARM核的32位微處理器S3C2410上。在此基礎上,又開發(fā)了基于MiniGUI的電子地圖顯示應用程序,配合GPS信號接收機實現(xiàn)定位導航功能。

          2.2MiniGUI的交叉編譯

            為了使MiniGUI能夠在不同的目標平臺上運行,必須有針對相應平臺的交叉編譯工具。在本文的設計中,選用了由韓國Mizi公司開發(fā)和維護的armv41交叉編譯工具鏈,該工具鏈是Mizi公司針對Samsung公司32位ARM核RISC微處理器S3C2410設計開發(fā)的,因此與選用的硬件具有更好的兼容性。
          MiniGUI使用自由軟件常用的automake和autoconf接口,因此MiniGUI的配置和編譯相對比較容易。首先進入MiniGUI源代碼的目錄中,下面是具體交叉編譯的步驟。

           ?、?為了達到交叉編譯的目的,首先要修改configure文件。設置make環(huán)境變量CC、LD及AR等,將其設置為選用的armv41交叉編譯工具,以達到交叉編譯的目的。

           ?、?IAL(Input Abstract Layer,輸入抽象層)接口的實現(xiàn)。在MiniGUI中,引入了輸入抽象層的概念,抽象層類似于Linux內核中的虛擬文件系統(tǒng),定義了一組不依賴于任何硬件的抽象接口。(具體請參見MiniGUI源代碼src/include/ial.h及src/ial/ial.c)。

            在具體實現(xiàn)一個輸入引擎的時候,其中最為關鍵的是事件處理函數(shù)wait_event()的實現(xiàn),MiniGUI會不斷的調用該函數(shù),來確定在輸入引擎上是否有輸入事件發(fā)生。這里需要特別注意的是,因為MiniGUI是通過select系統(tǒng)調用來實現(xiàn)進程間通信機制的,因此在實現(xiàn)lite版本輸入引擎的wait_event函數(shù)時,一定要通過select函數(shù)或與其等價的poll函數(shù)來實現(xiàn)。與此同時,在實現(xiàn)目標板的觸摸屏驅動時,必須要實現(xiàn)相對應file_operations結構中的poll函數(shù)指針。即使觸摸屏驅動沒有提供poll函數(shù),也要在wait_event返回之前調用select,并傳遞相關參數(shù)。

           ?、?依次運行configure、make和make install命令,完成MiniGUI的配置和編譯。關于configure命令的詳細參數(shù)及含義可以通過運行./configure Chelp命令獲得。

            經過上述編譯過程,會將編譯好的MiniGUI庫文件安裝在/home/MiniGUI-lite目錄下。為了減小庫文件的大小,可根據(jù)需要利用configure命令將MiniGUI中一些不需要的功能去掉,同時可以用交叉編譯工具鏈中的strip命令刪除MiniGUI函數(shù)庫中的符號信息和其他一些調試信息。關于MiniGUI自帶的范例程序mde及MiniGUI資源文件的編譯和安裝可參照上述庫文件的編譯過程及MiniGUI用戶指南進行。

          2.3MiniGUI向S3C2410上的移植

            一般而言,在嵌入式系統(tǒng)開發(fā)過程中,編譯完MiniGUI和應用程序后,需要把MiniGUI庫、資源和應用程序拷貝到為目標系統(tǒng)準備的文件系統(tǒng)(目標文件系統(tǒng))目錄中,然后使用相關的工具生成文件系統(tǒng)映像,再下載到目標板上。

            本文中Linux使用initrd技術來mount一個ramdisk作為目標板的根文件系統(tǒng),因此需要將編譯好的MiniGUI的庫文件拷貝到ramdisk的/user/lib目錄下,同時將MiniGUI的資源文件也拷貝到該目錄下。

            MiniGUI在運行的時候需要一個配置文件,用來配置MiniGUI運行所需要的環(huán)境參數(shù)。在本文的設計中,將配置文件MiniGUI.cfg放到了目標板的/etc目錄下。mginit初始化時必讀的配置文件包括:系統(tǒng)使用的圖形引擎、輸入引擎、鼠標、屏幕設備的指定、參數(shù)設置以及字體庫等信息。

            另外還有一個問題需要注意,因為MiniGUI使用framebuffer作為其輸入引擎,因此在編譯Linux內核的時候,一定要將framebuffer相關的功能編譯到內核中去。

          3 繪制基于MiniGUI的電子地圖

          3.1電子地圖數(shù)據(jù)的提取

            MapInfo格式的電子地圖是目前使用最為廣泛的地圖格式之一。由于商用原因,截止至現(xiàn)在為止,MapInfo公司一直沒有向外界公布它原始的以矢量形式存儲的文件格式,即TAB格式,這就加大了直接利用MapInfo原始數(shù)據(jù)的難度。但MapInfo公司提供了與外界交換數(shù)據(jù)的機制,即MIF(MapInfo Interchange Format)格式地圖。

            在本文的設計中,利用MapInfo MIF格式的地圖數(shù)據(jù)來完成地圖的繪制工作,通過選取合適的數(shù)學模型和建立合適的數(shù)據(jù)結構,來實現(xiàn)電子地圖的繪制。地圖中的地理信息可以將其歸為3類:

          Point型――用于市區(qū)單位名等圖層的繪制和顯示;
          Pline型――用于一級道路、二級道路、三級道路、單線河和橋等圖層的繪制和顯示;
          Region型――用于邊框、居民地、綠地、市界、縣界和雙線河等圖層的繪制和顯示。

            對應于Point型、Pline型和Region型三種類型的地理信息,分別定義數(shù)據(jù)結構_POINT、_PLINE和_REGION。以道路為例,在程序中定義對應的_PLINE結構來描述相關信息,該結構定義如下:
          struct _PLINE{
          double* B;//描述各節(jié)點經度坐標的數(shù)組指針;
          double* L;//描述各節(jié)點緯度坐標的數(shù)組指針;
          int m_node;//節(jié)點數(shù);
          char *m_name;//名稱標識;
          }

            _PLINE和_REGION等數(shù)據(jù)結構的定義與_PLINE類似,在這里不再詳細介紹。有了上述結構的定義,就可以將MIF和MID文件中的信息讀取到為對應信息定義的結構變量中,然后在具體繪制電子地圖的時候只需對這些結構變量進行相應的操作即可。

          3.2MiniGUI下電子地圖的繪制

            MiniGUI程序的入口點為MiniGUIMain,main函數(shù)已經在MiniGUI的函數(shù)庫中定義,該函數(shù)在進行一些MiniGUI的初始化工作后調用MiniGUIMain函數(shù)。如果應用程序為lite版本MiniGUI下的應用程序,則應首先調用SetDesktopRect函數(shù)來設置程序的顯示區(qū)域,然后調用CreateMainWindow函數(shù)創(chuàng)建并顯示程序的主窗口,最終進入消息循環(huán)。

            MiniGUI是消息驅動的系統(tǒng),一切運作都圍繞著消息進行,MiniGUI應用程序通過接收消息來與外界交互。在電子地圖的繪制過程中,主要用到了MiniGUI的窗口繪制消息MSG_PAINT。該消息在需要進行窗口重繪時發(fā)送到窗口過程。MiniGUI通過判斷窗口是否含有無效區(qū)域來確定是否需要重繪,在需要進行重繪時,MiniGUI會向相應的窗口過程發(fā)送MSG_PAINT消息。

            基于MiniGUI的主程序框架圖如圖3所示,為了與JUPITER 021/031通信,接收GPS定位信息,同時還要與MC35通信實現(xiàn)無線通信相關功能,因此在主程序中啟動兩個子進程來實現(xiàn)與子系統(tǒng)的串口通信。另外,使用Linux下的共享內存(shared memory)和信號(signals)機制來實現(xiàn)進程間的通信,用以傳遞定位數(shù)據(jù)等信息。GPS信息接收的子進程功能框架如圖4所示。
                     
                         圖3MiniGUI主程序框架

                      
                        圖4定位信息接收子進程框圖

                     
                         圖5地圖繪制函數(shù)流程圖

            當MiniGUI主程序接收到其GPS通信子進程發(fā)送的SIGUSR1信號時,就會調用相應的信號處理函數(shù)。為了實時更新定位點在電子地圖中的位置,必須在該函數(shù)中讀取共享內存中的最新位置信息;同時根據(jù)定位點位置的變化確定需要重繪的區(qū)域,調用MiniGUI中的InvalidateRect函數(shù)使該區(qū)域無效。通過這種方式,使得最新的位置信息實時的在電子地圖上顯示出來。

            為了把底層圖形設備和上層圖形接口分離開來,提高MiniGUI圖形系統(tǒng)的可移植性,MiniGUI中引入了圖形抽象層(GAL, graphics abstract layer)的概念。在一定的GAL基礎上,實現(xiàn)了圖形設備接口(GDI,Graph Device Interface)。在程序中定義mpadraw函數(shù)為電子地圖繪制函數(shù),在主程序的MSG_PAINT消息處理時調用該函數(shù),來完成電子地圖的具體繪制工作。mpadraw函數(shù)流程圖如圖5所示。在具體繪制的過程中,要用到MiniGUI提供的GDI函數(shù)來完成道路、道路名、居民區(qū)等地理信息的顯示。圖6即為筆者實現(xiàn)的電子地圖。
                 
                         圖6利用MiniGUI繪制的電子地圖

          結語

            隨著社會信息化的發(fā)展,GPS導航終端在我國有著光明的應用前景。本文中利用MiniGUI來實現(xiàn)車載終端的電子地圖在LCD上地繪制,使地圖的繪制工作脫離煩瑣的底層硬件,大大的簡化了此項工作,再配合GPS信號接收機實現(xiàn)實時定位導航的功能。同時也應該看到,本方案仍有很多方面需要改進,例如矢量化地理信息的顯示及地圖顯示的進一步優(yōu)化等。

                            參考文獻
          1 北京飛漫軟件技術有限公司. MiniGUI用戶手冊, 2003
          2 吳信才. 地理信息系統(tǒng)原理與方法. 北京:北京電子工業(yè)出版社, 2002
          3 宋立新. 面向嵌入式操作系統(tǒng)的圖形用戶界面: [學位論文]. 杭州:浙江大學,2001
          4 黑新宏,崔杜武,常斌. 基于MiniGUI的客戶端PDA的研究及開發(fā). 計算機應用, 2003, 23(4):75~77



          評論


          相關推薦

          技術專區(qū)

          關閉