这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 开源硬件 » 疯壳-MTK智能穿戴入门篇-第一个程序

共1条 1/1 1 跳转至

疯壳-MTK智能穿戴入门篇-第一个程序

菜鸟
2020-10-26 15:51:36     打赏

 

官网地址:https://www.fengke.club/GeekMart/views/mall/goodsDetails.html?productId%3D33

配套书籍:https://www.fengke.club/GeekMart/views/mall/goodsDetails.html?productId%3D73

配套视频:http://www.fengke.club/GeekMart/su_fihsGbMhu.jsp

淘宝地址http://shop115904315.taobao.com/

QQ群:457586268

 

第一个程序

首先,建立 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界面按09 个数字时,都会进入拨号界面。这个函数使用的比较少,在穿戴设备开发中,基本不会用到。

 

接下来,我们在代码中实现按键注册功能。 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_REDUI_COLOR_BLACK等。也可以使用gui_color(U8 r, U8 g, U8 b)自己生成,比如gui_color(255,0,0)为红色。

2、 gui_move_text_cursor

设置字符显示的坐标。屏幕上有一个坐标系,以左上角为原点(00),右下角坐标为屏幕尺寸(LCD_WIDTH, LCD_HEIGHT)。宽为X轴,高为Y轴。

3、 gui_set_font

设置字符打印的字体。MTK 的字体跟字库有关,此处我们不讲解斜体、下划线等特效,只讲解字体大小。系统中定义有一些字体全局变量,常用的有MMI_small_fontMMI_medium_fontMMI_large_font

4、 gui_print_text

在屏幕上显示字符。是否发现字符常量"Hello MTK !"前面有一个大写的L?因为MTK的手机屏幕上能够显示的所有字符,不管是英文、中文还是日文,都必须是UCS2编码,而L的作用就是把字符常量强制转换成UCS2编码。特别注意,L只能转换字符常量,不能转换变量。有兴趣的读者可以试一下不加L打印出来的效果。

5、 gui_BLT_double_buffer

屏幕上显示的内容只要有变更,都必须调用这个函数刷新屏幕,否则看不到任何效果。屏幕中的四个参数为要刷新的矩形区域,这个矩形区域必须包含你绘画的内容,此处为全屏刷新。当然也可以不使用全屏刷新,此函数中字符显示的坐标为(100150),假设字符串的宽度为50,高度为20,则改gui_BLT_double_buffer(100, 150, 100+50, 15+20) 也是同样的效果。有兴趣的读者可以改为gui_BLT_double_buffer(0, 0, 50,50),试试看能否显示出"Hello MTK !"


 

特别说明:

定义屏幕宽度的常量或全局变量有:UI_DEVICE_WIDTHLCD_WIDTHUI_device_width

定义屏幕高度的常量或全局变量有:UI_DEVICE_HEIGHTLCD_HEIGHTUI_device_height

 





关键词: 疯壳     智能     穿戴    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]