本帖最后由 华禹支持 于 2010-3-2 10:48 编辑
一、Hello World
上面一节我们建立好了开发环境,现在是时候实战一把了,在进行实质性的项目开发之前,我们先来了解下P1300上写程序的一般性做法。从“Hello World”开始吧,有句笑话讲:“会编程就是会Hello World,编程高手就是会写很多个Hello World”,虽然是句笑话,但是细想也是有道理的,麻雀虽小五脏俱全嘛,掌握了框架,剩下的就无非是些编程技巧的问题了。这和建房子一个道理,地基打的深不深,框架建的是否合理,决定房屋总体质量好不好,其他就是装修的功夫了,当然还有水电线路的铺设,这涉及到习惯和技巧了,设计不好会漏水漏电,哈哈。扯远了,下面开始Hello World。
下面为描述上的方便,我们将Hello World称为一个模块。首先建立新的模块目录,之后把模块相关文件都放到这个目录下统一进行管理,新的模块一般放到plutommi\MMI下面,这里我们新建一个目录“HelloWorld”,然后在模块目录“HelloWorld”下再建三个子目录:“Inc”、“Src”和“Res”,分别用来存放模块的头文件、源文件和资源文件,目录结构如下图所示:
接着我们在Inc下创建几个头文件:HelloWorldGprot.h,HelloWorldProt.h, HelloWorldTypes.h, HelloWorldDefs.h,
再在Src下创建一个源文件:HelloWorld.c,关于文件名和函数名等的命名标准每个公司及个人各有不同,统一就好,否则在进行大的项目开发时彼此协同会遇到问题,有时候弄不好光这些问题就能折腾你半天甚至数日或数月,呵呵。
上面几个文件的作用我大致讲下:
HelloWorldGprot.h
模块对外接口,供模块外部调用的函数原型在此申明,模块内部接口就不要放这里了
HelloWorldProt.h
模块内部接口,供模块内部调用的函数原型在此申明
HelloWorldTypes.h
本模块用到的一些常量、自定义数据类型、结构的定义
HelloWorldDefs.h
本模块用到的资源ID定义
HelloWorld.c
模块功能函数的实现部分
头文件HelloWorldGprot.h的内容大致如下:
/*************************************************************************/
#ifndef
__HELLOWORLD_GPROT_H__
#define
__HELLOWORLD_GPROT_H__
#include "PixtelDataTypes.h"
#include "HelloWorldTypes.h"
extern
void mmi_HelloWorld_entry(void);/* 模块入口,理解成dos程序的main好了 */
#endif
/* __HELLOWORLD_GPROT_H__ */
/*************************************************************************/
头文件HelloWorldProt.h的内容的大致如下:
/*************************************************************************/
#ifndef
__HELLOWORLD_PROT_H__
#define
__HELLOWORLD_PROT_H__
#include "HelloWorldGprot.h"
extern void mmi_HelloWorld_entry(void);
/* 本模块主界面入口例程 */
extern void mmi_HelloWorld_exit(void);
/* 本模块主界面退出例程 */
#endif
/* __HELLOWORLD_PROT_H__ */
/*************************************************************************/
其他几个文件的内容因模块功能而异,这里先略过,后面再讲。
紧接着,我们要修改的相关系统文件,使这个模块成为整个项目的一部分,需要修改的系统文件如下:
make\plutommi\plutommi.inc
所有mmi部分的头文件所在目录的相对路径列表
make\plutommi\plutommi.pth
所有mmi部分的源文件所在目录的相对路径列表
make\plutommi\plutommi.lis
所有mmi部分的源文件(相对路径)列表
在上述3个文件里面分别加上我们模块的对应内容,就现在讲的HelloWorld而言,所加内容如下:
make\plutommi\plutommi.inc文件追加一行“plutommi\mmi\HelloWorld\Inc”
make\plutommi\plutommi.pth文件追加一行“plutommi\mmi\HelloWorld\Src”
make\plutommi\plutommi.lis文件追加一行“plutommi\mmi\HelloWorld\Src\HelloWorld.c”
再接着,我们需要增加一个开关,以决定这个模块是否成为最终发布版本的一部分,这实际上是一个编译开关,需要修改系统文件及相关的模块源文件,需要修改的系统文件包括:
plutommi\Customer\CustResource\PLUTO_MMI\MMI_featuresPLUTO.h,这里我们用 名字为“__MMI_HELLOWORLD_ENABLED__”这个开关好了,在这个文件里面追加一行:
#define
__MMI_HELLOWORLD_ENABLED__,同时在相关源文件里面用:
#ifdef
__MMI_HELLOWORLD_ENABLED__
#endif
来框住相关代码行就OK了,当不打算将这个模块发布的时候,注释掉“#define
__MMI_HELLOWORLD_ENABLED__”这一句重新make一次就好了。 |