瘋殼-MTK智能穿戴入門篇-第一個程序

第一個程序

首先,建立 source insight工程(使用方法,請自己查閱資料)。然後在CMD命令行窗口切換到工程源碼根目錄,執行make  FengKe2502C_11C GPRS  new 生成二進制bin文件,然後再執行make  -debug  FengKe2502C_11C  GPRS  gen_modis 生稱 VS2008 工程文件。再用 VS2008 打開MoDIS_VC9\ MoDIS.sln 文件,編譯生稱模擬器。模擬器運行界面如下圖:

     blob.png

 

圖中紅色字符標註了幾個常用的按鍵值,在後面的編碼過程中會經常提到。其中KEY_LSK叫確認鍵,KEY_RSK叫返回鍵。KEY_SEND 系統默認用於撥號按鍵,KEY_END稱之爲退出按鍵,在任何界面都可以返回idle界面。idle界面也叫待機界面,即上圖中看到的界面。

按鍵功能註冊

每一個按鍵在不同的屏幕中都有不同的功能,這些功能都可以自己定義。常見的按鍵定義函數有如下幾個:

1、 void SetKeyHandler (FuncPtr funcPtr,U16 keyCode,U16 keyType)

funcPtr : 按鍵執行的功能函數指針。

keyCode: 按鍵值。取值範圍見GlobalConstants.h文件中的枚舉mmi_keypads_enum

keyType: 按鍵方式,取值範圍見GlobalConstants.h 文件中的枚舉mmi_key_types_enum 

比如:SetKeyHandler (mmi_scr_locker_launch, KEY_RSK, KEY_EVENT_UP); 含義爲按住KEY_RSK(右軟鍵),彈起的時候執行mmi_scr_locker_launch 函數。如果KEY_EVENT_UP 改爲KEY_EVENT_DOWN,則表示按下KEY_RSK 鍵立即執行mmi_scr_locker_launch 函數。

SetKeyHandler實際上是對mmi_frm_set_key_handler 的封裝,另外還有一些按鍵註冊函數,比如SetKeyDownHandler(註冊按下事件)、SetKeyUpHandler(註冊彈起事件) 都是對mmi_frm_set_key_handler 函數的封裝,最終執行按鍵註冊都會在mmi_frm_set_key_handler 函數中進行。

 

2、 void SetLeftSoftkeyFunction(void (*f) (void), MMI_key_event_type k)

f:按鍵執行的功能函數指針。

k:按鍵方式,取值範圍見GlobalConstants.h 文件中的枚舉mmi_key_types_enum 

這個函數只能用於註冊左軟鍵按鍵功能,實際上等同於SetKeyHandler (FuncPtr funcPtr, KEY_LSK, U16 keyType)。另外還有一個專用於註冊右軟鍵功能的函數——SetRightSoftkeyFunction。已經一個註冊KEY_CSK的函數——SetCenterSoftkeyFunction。

 

3、 void SetGroupKeyHandler(FuncPtr funcPtr, PU16 keyCodes, U8 len, U16 keyType)

funcPtr : 按鍵執行的功能函數指針。

keyCodes:按鍵值數組。取值範圍見GlobalConstants.h文件中的枚舉mmi_keypads_enum

keyType: 按鍵方式,取值範圍見GlobalConstants.h 文件中的枚舉mmi_key_types_enum

這個函數用於註冊多個按鍵執行同一個函數時使用,比如在idle界面按0~9 個數字時,都會進入撥號界面。這個函數使用的比較少,在穿戴設備開發中,基本不會用到。

 

接下來,我們在代碼中實現按鍵註冊功能。在 souce insight 工程中打開IdleCommon.c 文件,在mmi_idle_set_handler 函數函數上面添加一個我們自己的函數,函數名爲mmi_my_mtk_func,簡單實現一個顯示“hello MTK !”字符的功能,代碼如下:

blob.png

 

然後在mmi_idle_set_handler 函數的最後一行添加代碼,註冊 KEY_LSK 按鍵的彈起功能執行函數mmi_my_mtk_func。

blob.png

運行模擬器,鼠標單擊 左軟鍵(KEY_LSK,位置如圖紅色框中),是否發現屏幕上顯示有“hello MTK!”

blob.png

這是一個很簡單的函數,代碼中都有詳細的註釋。MTK的編碼規範完全遵循C語言的編碼規範,本書的讀者也必須有一定的C 語言基礎。下面簡單介紹幾個MTK的函數接口。

1、 gui_set_text_color

設置字符顯示的顏色。可以調用系統定義的一些顏色常量,比如UI_COLOR_RED、UI_COLOR_BLACK等。也可以使用gui_color(U8 r, U8 g, U8 b)自己生成,比如gui_color(255,0,0)爲紅色。

2、 gui_move_text_cursor

設置字符顯示的座標。屏幕上有一個座標系,以左上角爲原點(0,0),右下角座標爲屏幕尺寸(LCD_WIDTH, LCD_HEIGHT)。寬爲X軸,高爲Y軸。

3、 gui_set_font

設置字符打印的字體。MTK 的字體跟字庫有關,此處我們不講解斜體、下劃線等特效,只講解字體大小。系統中定義有一些字體全局變量,常用的有MMI_small_font、MMI_medium_font、MMI_large_font。

4、 gui_print_text

在屏幕上顯示字符。是否發現字符常量"Hello MTK !"前面有一個大寫的L?因爲MTK的手機屏幕上能夠顯示的所有字符,不管是英文、中文還是日文,都必須是UCS2編碼,而L的作用就是把字符常量強制轉換成UCS2編碼。特別注意,L只能轉換字符常量,不能轉換變量。有興趣的讀者可以試一下不加L打印出來的效果。

5、 gui_BLT_double_buffer

屏幕上顯示的內容只要有變更,都必須調用這個函數刷新屏幕,否則看不到任何效果。屏幕中的四個參數爲要刷新的矩形區域,這個矩形區域必須包含你繪畫的內容,此處爲全屏刷新。當然也可以不使用全屏刷新,此函數中字符顯示的座標爲(100,150),假設字符串的寬度爲50,高度爲20,則改gui_BLT_double_buffer(100, 150, 100+50, 15+20) 也是同樣的效果。有興趣的讀者可以改爲gui_BLT_double_buffer(0, 0, 50,50),試試看能否顯示出"Hello MTK !"。

 

 

特別說明:

定義屏幕寬度的常量或全局變量有:UI_DEVICE_WIDTH、LCD_WIDTH、UI_device_width

定義屏幕高度的常量或全局變量有:UI_DEVICE_HEIGHT、LCD_HEIGHT、UI_device_height

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章