基于MiniGUI的GPS自動(dòng)定位系統設計
(1)主程序設計
主程序流程如圖7(a)所示,用來(lái)完成操作系統的初始化。其中使用語(yǔ)句OSTaskCreate(Task0,(void*)O,TaskStk[TaskStkLengh-1],10)創(chuàng )建任務(wù)O;使用語(yǔ)句MiniGUI_app_entry()創(chuàng )建MiniGUI主線(xiàn)程;使用語(yǔ)句KevMbox=OSMboxCreate(NULL)建立一個(gè)郵箱,用于傳遞按鍵消息,最后開(kāi)始多任務(wù)調度。
(2)任務(wù)O設計
任務(wù)O流程如圖7(b)所示,用來(lái)完成系統硬件的初始化。通過(guò)I2C接口的輸入引擎讀取按鍵鍵值,如有按鍵按下通過(guò)OSMboxPost(KeyMbo-x,(void*)s_key_in)發(fā)送鍵值到KeyMbox郵箱。通過(guò)郵局OSTimeDly(5)交出CPU占用資源,運行其他任務(wù)。
(3)MiniGUI入口程序設計
入口程序如圖7(c)所示,用來(lái)完成消息處理。使用語(yǔ)句InitMainWindow()初始化窗體;使用語(yǔ)句ShowWindow(hMainWnd,SW_SHOWNORMAL)顯示窗體,其中hMainWnd為窗體句柄;使用語(yǔ)句GetMessage(Msg,hMainWnd))獲取消息,其中Msg數據結構用于保存消息;使用語(yǔ)句Trans-lateMessage(Msg)把消息送入隊列;使用語(yǔ)句DispatchMessage(Msg)分配信息給窗體回調函數;使用語(yǔ)句MainWindowThreadCleanup(hM-ainWnd)清除線(xiàn)程。
(4)MiniGUI窗體回調程序設計
窗體回涮函數流程如圖7(d)所示,根據消息類(lèi)型確定要執行的程序。如果消息類(lèi)型為MSG-PAINT,先調用GPS數據讀取以及處理程序,用MiniGUI內部函數TextOut(hdc,10,10,”顯示字符”),在指定位置顯示字符;最后調用μC/OS-II系統函數OSTimeDly(100)開(kāi)始任務(wù)調度。如果消息類(lèi)型為MSG_CLOSE,用語(yǔ)句DestroyMainWindow(hWnd)銷(xiāo)毀窗體;用語(yǔ)句PostQuitMessage(hWnd)發(fā)送退出消息。

系統軟件采用ADS V1.2開(kāi)發(fā)、調試,使用PC機對MiniGUI源代碼進(jìn)行編譯,生成MiniGUI靜態(tài)鏈接庫文件MiniGUI-Lib.a。然后交叉編譯MiniGUI應用程序,與MiniGUI靜態(tài)鏈接庫、POSIX線(xiàn)程庫鏈接,生成二進(jìn)制文件下載到LPC2103的FLASH運行。系統軟件編譯過(guò)程如圖8所示。

GPS模塊和LPC2103串口0連接,并放置到室外,將生成的可執行文件燒寫(xiě)到LPC2103的FLASH內部,上電運行,運行結果如圖9所示。
結語(yǔ)
本自動(dòng)定位系統運行穩定,具有功耗低、速度快、可裁剪、可固化、實(shí)時(shí)性能優(yōu)越等特點(diǎn)。能夠準確顯示經(jīng)度、緯度、系統日期、時(shí)間、海拔、航向、航速等信息,并可以對所處位置進(jìn)行查詢(xún)。
評論