打印
[华禹工控]

MTK入门——用C实现helloworld(一)

[复制链接]
3692|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
华禹支持|  楼主 | 2010-3-9 10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C实现helloworldHelloWorld是在计算机屏幕上输出“HelloWorld”,这通常是初学者学习每一门语言所编写的第一个程序,他可以确认该语言的编译器、开发环境、运行环境是否设置正确,也有助于初学者理解该语言的程序框架。

环境搭建好了,接下来我们就通过在屏幕上输出“Hello World!”这个例子来体验在MTK手机上编写程序。并将其加在“Menu->Organizer->HelloWorld”菜单下面。

在开始程序之前,需要说明的是,MTK平台下开发的C程序和整个系统是一体的,编译的时候也是整体进行编译最终生成同一个bin文件。整个编译过程是由make工具来管理编译的。这样的话,我们编写的程序文件就必须添加编译路径。
1.
添加程序文件和路径为了规范,用户添加的MMI程序代码一般都放在plutommi\MMI下面(当然也可以放在其它位置)。本例中我们在plutommi\MMI下创建一个文件夹MyTestApp,并在其下创建两个文件MyTestAppSrc.cMyTestAppDef.h
接下来就是添加文件的路径,在make\plutommi目录下有三个需要添加路径的文件:plutommi.lisplutommi.incplutommi.pth,分别指明了MMI所要编译的所有源文件、所有头文件所在的目录以及所有源文件所在目录。我们的添加如下:plutommi.lis文件中添加一行plutommi\MMI\MyTestApp\MyTestAppSrc.cplutommi.inc文件中添加一行plutommi\MMI\MyTestApp,在plutommi.pth文件中添加一行plutommi\MMI\MyTestApp
2.
资源MTK环境将字符串、图像、菜单等信息做成了资源的形式。在编译代码之前,如果资源有改变或是第一次进行编译,则首先得生成资源。同时程序中要定义一个与其对应的ID号,以后程序中就通过这个ID来使用这些资源。
所有菜单ID都定义在plutommi\MMI\Inc\GlobalMenuItems.h头文件中,但注意这里菜单ID必须加在MENU_ID_DEVAPP_START之前,不然会导致其产生错误。我们将菜单ID命名为MENU_ID_HELLO_WORLD,然后加入到GLOBALMENUITEMSID枚举类型中:
enum GLOBALMENUITEMSID
{

IDLE_SCREE_MENU_ID= 1,

……

MENU_ID_HELLO_WORLD,
MENU_ID_DEVAPP_START,

MENU_ID_DEVAPP_END= MENU_ID_DEVAPP_START + 100,

MAX_MENU_ITEMS_VALUE,

MENU_ITEM_END
};
字符ID和图像ID将定义在文件MyTestAppDef.h中,在定义之前,先得为我们自己的程序添加一个基础ID,因为所有程序的资源ID都是独自定义到自己的相关文件中,这样就可能产生两个程序的ID相同而冲突,使用基础ID避免了这个问题的产生。

3
.添加基础ID基础ID统一被定义在plutommi\MMI\Inc\MMIDataType.h文件中,我们在枚举类型RESOURCE_BASE_ENUM中添加一个宏RESOURCE_BASE_RANGE(MYTESTAPP,
50),然后在该文件后面的相应位置定义基础ID和该程序的最大ID,方法如下:
typedef enum
{

……

RESOURCE_BASE_RANGE(MYTESTAPP,
50),

RESOURCE_BASE_RANGE(END,0)
} RESOURCE_BASE_ENUM;
……
#define MYTESTAPP_BASE
((U16)RESOURCE_BASE_MYTESTAPP)
#define MYTESTAPP_BASE_MAX
((U16)RESOURCE_BASE_MYTESTAPP_END)
RESOURCE_BASE_TABLE_ITEM(MYTESTAPP)

RESOURCE_BASE_TABLE_ITEM(END)
RESOURCE_BASE_TABLE_END()
定义好了以后,我们程序的IDMYTESTAPP_BASE开始,且有50ID可供使用。需要注意的是,当定义字符或是图像资源ID的时候,都是从已定义的基础ID开始,这不会产生冲突,因为字符和图像是分开管理的。

4.
添加资源ID
下面我们就来具体添加字符串资源和图像资源:在MyTestApp.h文件中添加:
typedef enum
{

STR_ID_HELLO_WORLD= MYTESTAPP_BASE + 1,
}STR_ID_MYTESTAPP;
typedef enum
{

IMG_ID_HELLO_WORLD= MYTESTAPP_BASE + 1,
}IMG_ID_MYTESTAPP;
其分别为字串ID和图像ID,另外,我们再加一个屏幕ID,这将会在后面用到:
typedef enum
{

SCR_ID_HELLO_WORLD= MYTESTAPP_BASE + 1,
}SCREEN_ID_MYTESTAPP;
然后在plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt中添加下面一行:
STR_ID_HELLO_WORLD
Undefined
11
Hello,World
Hello,World
你好,世界
每个字串之间用TAB键隔开,它们分别表示字串ID、字串所属的程序名(可任意写)、字串的最大长度、字串描述(可任意写),之后就是各种语言对应的字串。

相关帖子

沙发
VERY0| | 2010-3-9 10:39 | 只看该作者
呵呵不错

使用特权

评论回复
板凳
linhai2009| | 2010-3-12 23:00 | 只看该作者
好东西,收下了

使用特权

评论回复
地板
HonMe| | 2010-3-14 09:36 | 只看该作者
好东西呀,我正在学习MDK平台的软件开发呀,谢谢分享了!

使用特权

评论回复
5
yoyowodeai| | 2010-3-21 17:25 | 只看该作者
MTK   的 hello world 这么复杂?

使用特权

评论回复
6
sanguo147| | 2010-4-11 20:46 | 只看该作者
标记 学习中

使用特权

评论回复
7
yoyowodeai| | 2010-4-12 22:06 | 只看该作者
写的不错,学习了

使用特权

评论回复
8
想实习去| | 2010-4-13 14:27 | 只看该作者
编译器用的是什么都没有交代清楚!初学者必须是云里雾里的!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

53

帖子

1

粉丝