OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5726|回复: 0

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

[复制链接]

98

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2017-2-27
在线时间
53 小时
发表于 2021-2-2 10:09:47 | 显示全部楼层 |阅读模式
1金钱

官网地址: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 文件,编译生称模拟器。模拟器运行界面如下图:

     

图中红色字符标注了几个常用的按键值,在后面的编码过程中会经常提到。其中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 !”字符的功能,代码如下:

然后在mmi_idle_set_handler 函数的最后一行添加代码,注册 KEY_LSK 按键的弹起功能执行函数mmi_my_mtk_func。

运行模拟器,鼠标单击 左软键(KEY_LSK,位置如图红色框中),是否发现屏幕上显示有“hello MTK!”

这是一个很简单的函数,代码中都有详细的注释。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


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 03:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表