技术笔记:Mocor平台SC6531模块添加

简介: 技术笔记:Mocor平台SC6531模块添加

1. 创建模块文件夹(假设模块名为XXX,以下类同):


  a) 在“%工程目录%\MS_MMI\source\mmi_app\app”目录下创建模块文件夹“xxx”,并在其下创建名为“c”和“h”两个子文件夹,分别用于保存模块的源代码和头文件。


  b) 在“%工程目录%\project\public_mk\mmi_res_128x64\xxx”目录下新建名为“MMI_RES_DEFAULT”的文件夹,并在其中创建“ANIM”、“DATA”、“IMAGE”三个子文件夹。(提醒:建立完毕后需加至相应的压缩包内)


2. 创建模块相关文件:


  a) 在“h”文件夹下分别创建以下文件:xxx_mdu_def.h、mmixxx_export.h、mmixxx_id.def、mmixxx_id.h、mmixxx_image.h、mmixxx_menutable.def、mmixxx_menutable.h、mmixxx_menu_id.def、mmixxx_nv.h、mmixxx_text.h,各文件功能简述如下:


xxx_mdu_def.h:模块资源定义(包含图片、字符串等)


mmixxx_export.h:模块外部接口,用于声明各函数,供其它模块调用


mmixxx_id.def:存放WIN_ID数组的元素(文件被mmixxx_id.c中的数组作为元素包含)


mmixxx_id.h:定义CTRL_ID枚举类型


mmixxx_image.h:定义IMAGE_ID枚举类型,但具体的枚举元素在xxx_mdu_def.h添加(无须改动)


mmixxx_menutable.def:存放MENU_GROUP_ID枚举的元素


mmixxx_menutable.h:定义MENU_GROUP_ID和MENU_ID两个枚举类型,但具体的枚举元素分别在mmixxx_menutable.def和mmixxx_menu_id.def中添加(MENU_GROUP_ID和MENU_ID需要被模块的其它文件使用,因此将定义直接放在头文件中,无须改动)


mmixxx_menu_id.def:存放MENU_ID枚举的元素


mmixxx_nv.h:定义NV的ITEM_ID枚举类型


mmixxx_text.h:定义TEXT_ID枚举类型,但具体的枚举元素在xxx_mdu_def.h添加(无须改动)


  b) //代码效果参考:http://www.lyjsj.net.cn/wx/art_23344.html

在“c”文件夹下分别创建以下文件:mmixxx_app.c、mmixxx_id.c、mmixxx_menutable.c、mmixxx_nv.c、mmixxx_wintab.c,各文件功能简述如下:

mmixxx_app.c:定义模块的功能函数,供外部调用,功能函数的声明在mmixxx_export.h中


mmixxx_id.c:WIN_ID数组的定义,但具体的数组元素在mmixxx_id.def添加(无须改动)


mmixxx_menutable.c:组合各级MENU_GROUP的MENU(当模块较大时,可将各级菜单组分开于多个文件中)


mmixxx_nv.c:NV的ITEM_ID内存空间申请,将ITEM_ID所需空间组合成数组,因此数组元素要与mmixxx_nv.h中的ITEM_ID一一对应


mmixxx_wintab.c:定义WINDOWS_TABLE及其回调函数


3. 在工程文件//代码效果参考:http://www.lyjsj.net.cn/wx/art_23342.html

mmi_res_prj_def.h中添加XXX模块的ID:

1 RES_ADD_MODULE(MMI_MODULE_XXX,"\xxx\xxx_mdu_def.h") // MMI_MODULE_XXX为模块ID,"\xxx\xxx_mdu_def.h"为模块路径


4. 修改mk文件:


  a) 在resource.mk(路径:%工程目录%\make\resource)中增加模块定义路径和文件名:


在相应位置添加:MS_MMI/source/mmi_app/app/xxx/h \


在“SOURCE +=”表达式最后增加xxx_mdu_def.h


  b) 在app.mk(路径:%工程目录%\make\app)中增加模块定义路径和文件名:


在相应位置添加:MINCPATH += MS_MMI/source/mmi_app/app/xxx/h


在相应位置添加:MSRCPATH += MS_MMI/source/mmi_app/app/xxx/c


在“SOURCES =”表达式最后增加模块中所有c文件的文件名


特别声明:模块添加完毕后无法在mainapp.c之流中直接调用(即使是在其中包含了相应的头文件),调用模块还是得新建一级菜单后在其下(或在已有菜单下)附加模块功能。


说明:以下内容为本人在工程中添加模块的具体实践,仅供参考。(模块源码不便上传,如若需要请另外联系本人。)


添加模块需要修改工程中的文件罗列如下(模块名为DEMO):


在mainmenu_win.c的HandleMainMenuWinMsg()函数(文件1985行前后)中的switch(msg_id)结构中添加新case分支:


1 case ID_DEMO_MULTIMEDIA:  //ID_DEMO_MULTIMEDIA为MENU_ID


2 MMIDEMO_EnterMultimediaWin();


3 break;


  注意:需要包含mmidemo_export.h和mmidemo_menutable.h两个头文件


在mmi_menutable.c的menu_mainmenu_icon 【】数组(文件428行前后)中添加元素:


1 {ID_DEMO_MULTIMEDIA,TIP_NULL,{STXT_OK,TXT_NULL,STXT_RETURN},TXT_DEMO_MULTIMEDIA,IMAGE_DEMO_MULTIMEDIA_1,0,0,MENU_NULL},


  注意:需要包含mmidemo_image.h、mmidemo_text.h和mmidemo_menutable.h 三个头文件


在mmimain.c的InitMMIModule()函数(文件1746行前后)中添加模块初始化函数:


1 MMIAPIDEMO_InitModule();


  注意:需要包含mmidemo_export.h头文件


  运行效果(仅截取模拟器屏幕):


(欢迎转载,转载请注明出处!谢谢。)

相关文章
|
3月前
|
开发框架 .NET 中间件
七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
|
3月前
|
JavaScript Java 测试技术
基于Java的在线开放课程的设计与实现(源码+lw+部署文档+讲解等)
基于Java的在线开放课程的设计与实现(源码+lw+部署文档+讲解等)
50 3
|
3月前
|
JavaScript Java 测试技术
基于Java的实验室设备管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的实验室设备管理系统的设计与实现(源码+lw+部署文档+讲解等)
56 1
|
3月前
|
JavaScript Java 测试技术
基于Java的宠物服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的宠物服务平台的设计与实现(源码+lw+部署文档+讲解等)
32 1
|
3月前
|
JavaScript Java 测试技术
基于Java的课程在线教学平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的课程在线教学平台的设计与实现(源码+lw+部署文档+讲解等)
34 0
|
3月前
|
JavaScript Java 测试技术
基于Java的教务信息平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的教务信息平台的设计与实现(源码+lw+部署文档+讲解等)
28 0
|
3月前
|
JavaScript Java 测试技术
基于Java的智能社区管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的智能社区管理系统的设计与实现(源码+lw+部署文档+讲解等)
62 0
|
3月前
|
JavaScript Java 测试技术
基于Java的教师办公管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的教师办公管理系统的设计与实现(源码+lw+部署文档+讲解等)
36 0
|
3月前
|
JavaScript Java 测试技术
基于Java的实验室排课系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的实验室排课系统的设计与实现(源码+lw+部署文档+讲解等)
49 0
|
缓存 安全 Go
Go 开发常用操作技巧--模块管理
Go 依赖管理经历了 3 个阶段,GOPATH、Go Vendor、Go Module。
116 0
Go 开发常用操作技巧--模块管理