一个完整的MMI程序的定义与实现(你值得一看)
mmi培训资料--自定义模板

mtk平台mmi培训资料(中文)2021-06-0621:48本文具体讲明了如何建设一个自定义列表窗体模板。
原理局部请参见?MTK平台(1)——如何添加一个窗体模板?。
最终实现的是一个字典输进界面。
布局为:该模板不包含业务逻辑,仅提供页面显示和InputBox框输进事件后的ListBox的Redraw事件的注册,以及全然的输进法设置、清空后的返回函数。
一、添加用户自定义列表模板的过程〔一〕在g_categories_controls_map[]中参加:,{MMI_CATEGORY_CUSTOM_LIST,(U8*)custom_define_list,(s16*)coordinate_c ustom_list,NULL}constU8custom_define_list[]={5,DM_BASE_LAYER_START,DM_SCR_BG,DM_BASE_CONTROL_SET1,DM_SINGLELINE_INPUTBOX1,DM_LIST1};constS16coordinate_custom_list[]={DM_FULL_SCREEN_COORDINATE_FLAG,DM_CUSTOM_DEFINE_INPUTBOX, //需要定义DM_CUSTOM_DEFINE_LIST //需要定义};〔二〕在dm_get_coordinates〔〕函数中参加://设定列表位置和大小〔不要不记得全局变量MMI_custom_Listbox_x等的定义〕elseif(*UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_LIST){dm_coordinate_info->s16X=MMI_custom_Listbox_x;dm_coordinate_info->s16Y=MMI_custom_Listbox_y; dm_coordi nate_info->s16Width=MMI_custom_Listbox_width; dm_coordinate_info-> s16Height=MMI_custom_Listbox_height;dm_coordinate_info->Flags=DM_NO_FLAGS;UICtrlAccessPtr_p++;}//设定输进框位置和大小elseif(*UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_INPUTBOX){dm_coordinate_info->s16X=MMI_custom_inputbox_x;dm_coordinate_info->s16Y=MMI_custom_inputbox_y;dm_coordinate_info->s16Width=MMI_custom_inputbox_width;dm_coordinate_info->s16Height=MMI_custom_inputbox_height; dm_coo rdinate_info->Flags=DM_SINGLE_LINE_INPUTBOX_SPECIFIC_HEIGHT;UICtrlAccessPtr_p++;}〔三〕在Wgui_category.c中定义模板显示函数voidShowCategoryCustomListScreen(U8*title,U16title_icon,U16left_softkey,U16left_softkey_icon,U16right_softkey,U16right_softkey_icon,S32number_of_items,U8**list_of_items,U16*list_of_icons,S32flags,S32highlighted_item,U8*history_buffer){/*----------------------------------------------------------------*//*LocalVariables*//*----------------------------------------------------------------*/dm_data_structdm_data;S32i;U8h_flag;/*----------------------------------------------------------------*//*CodeBody*//*----------------------------------------------------------------*/gdi_layer_lock_frame_buffer();SetupCategoryKeyHandlers();MMI_title_string=(UI_string_type)title;MMI_title_icon=(PU8)get_image(title_icon);change_left_softkey(left_softkey,left_softkey_icon);change_right_softkey(right_softkey,right_softkey_icon);//CreateListcreate_fixed_icontext_menuitems();associate_fixed_icontext_list();ShowListCategoryScreen((UI_string_type)title,get_image(title_icon),get_string(left_softkey),get_image(left_softkey_icon),get_string(right_softkey),get_image(right_softkey_icon),number_of_items);for(i=0;i<number_of_items;i++){add_fixed_icontext_item((UI_string_type)list_of_items[i ],wgui_get_list_menu_icon(i,list_of_icons[i]));}h_flag=set_list_menu_category_history(MMI_CATEGORY_CUSTOM_LIST, history_buffer);if(h_flag){fixed_list_goto_item_no_redraw(MMI_fixed_list_menu.high lighted_item);}else{fixed_list_goto_item_no_redraw(highlighted_item);}//CreateInputboxmemset(custom_single_input_buffer,0,100);pfnUnicodeStrcpy(custom_single_input_buffer,L"CustomCategory");=MMI_CATEGORY_CUSTOM_LIST;//不要不记得该常量MMI_CATEGORY_CUSTOM_LIST的定义dm_data.s32flags|=DM_CLEAR_SCREEN_BACKGROUND;//dm_data.s32flags|=DM_SHOW_VKPAD;dm_register_vkpad_callback(CustomList_virtual_keypad_callback);dm_setup_data(&dm_data);dm_redraw_category_screen();} /*endofShowCategory353Screen*/voidCustomList_virtual_keypad_callback(void){#ifdefined(__MMI_TOUCH_SCREEN__)mmi_pen_editor_clear_and_show_virtual_keyboard_area();#endifgui_show_transparent_image(0,200,GetImage(IMG_H_SELECT_LEFT),0); }voidExitCategoryCustomListScreen(){wgui_close_singleline_inputbox();}〔四〕在singleline_inputbox_multitap_input〔〕函数中添加用户处理key_0~key_9的按键事件的函数:void(*singleline_inputbox_custom_input_callback)(void)=UI_dummy_funct ion;voidsingleline_inputbox_multitap_input(UI_character_typec){/*----------------------------------------------------------------*//*LocalVariables*//*----------------------------------------------------------------*//*----------------------------------------------------------------*//*CodeBody*//*----------------------------------------------------------------*/if(MMI_singleline_inputbox.flags&UI_SINGLE_LINE_INPUT_BOX_PLUS_ CHARACTER_HANDLING){if((MMI_singleline_inputbox.text[0]=='+')&&(MMI_singleline_inputbox.current_text_p==MMI_si ngleline_inputbox.text)&&(MMI_singleline_inputbox.text_length>=(MMI_sing leline_inputbox.available_length-ENCODING_LENGTH))){return;}}gui_single_line_input_box_insert_multitap_character(&MMI_single line_inputbox,c);redraw_singleline_inputbox();singleline_inputbox_input_callback();singleline_inputbox_custom_input_callback();}〔五〕Wgui_Category.c中添加用户事件定义接口//右键事件注册voidSetCategoryCustomListRightSoftkeyFunction(void(*f)(void)){wgui_singleline_inputbox_RSK_function=f;}//key_0到key_9按下时的事件注册externvoid(*singleline_inputbox_custom_input_callback)(void); voidSetCategoryCustomListNumKeyFunction(void(*f)(void)){singleline_inputbox_custom_input_callback=f;}//设置InputBox大小voidSetCustomList_Inputbox_Size(S32p_x,S32p_y,S32p_width,S32p_height) {MMI_custom_inputbox_x=p_x;MMI_custom_inputbox_y=p_y;MMI_custom_inputbox_width=p_width;MMI_custom_inputbox_height=p_height;}//设置ListBox大小voidSetCustomList_Listbox_Size(S32p_x,S32p_y,S32p_width,S32p_height) {MMI_custom_Listbox_x=p_x;MMI_custom_Listbox_y=p_y;MMI_custom_Listbox_width=p_width;MMI_custom_Listbox_height=p_height;}二、自定义列表模板的使用方法1、调用SetCustomList_Inputbox_Size和SetCustomList_Listbox_Size设置列表框和输进框的大小。
UNT-MMI技术说明书

目录第一章:装置简介1.1 概述1.2 装置特点第二章:功能原理描述2.1装置原理逻辑图2.2基本控制功能2.3可编程输入、输出控制功能2.4测量功能2.5保护功能2.6监测功能2.7通讯功能第三章:装置设计选型第四章:显示器面板和主机端子布置图第五章:装置的安装及外形尺寸图第六章:装置技术参数第七章:装置订货需知附录A:装置典型设计原理图附录B:组网方案介绍第一章:装置简介1.1装置概述UNT-MMI智能MCC控制保护管理装置是保定市尤耐特电气有限公司在研究国外同类产品、总结国内大量MCC电气系统典型设计经验的基础上,为适应电气系统二次设备终端智能化的趋势,针对MCC回路的设计特点推出的新一代数字式、强抗干扰型智能MCC控制保护管理装置。
产品主要用于一次回路为塑壳断路器+接触器的电动机回路,实现对电动机的各种控制、保护和监测,并能通过现场总线,实现对电动机回路的远程监控。
UNT-MMI智能MCC控制保护管理装置采用通用化设计理念,在简化一次回路的基础上(省却了传统的热继电器、热保护器、欠压过压保护器等多种保护器;取消了时间继电器、中间继电器、辅助继电器、电流互感器、仪表、转换开关、指示灯、可编程逻辑控制器等多种二次分立元件),完成了二次回路的控制、保护、联锁、测量、信号、通讯等功能,极大提高了设计与生产效率,同时降低了用户现场调试及维护工作量,缩短了项目设计及调试周期,具有明显的综合效益。
经过多年的工程实践,UNT-MMI系列产品已经广泛服务于电力、化工、造纸、冶金、市政、煤炭、核工业等众多领域,运行稳定可靠。
1.2装置特点⏹采用32位工业级微处理器,速度快、精度高。
⏹全金属外壳设计,有效屏蔽外界电磁干扰。
⏹通过了“国家继电器质量监督检验中心”的15项电磁兼容检验,严酷等级为Ⅳ级。
⏹内置光电隔离的4~20mA输出接口,输出电量可选,且范围可调。
⏹装置一体化集成设计,选型简单,无需外加附件。
⏹装置小型化设计,安装方式灵活,可以安装于1/4MCC抽屉单元中。
MMI开发(官方)详解

5
File Manager
Screen
Setting App
Screen Setting Main Menu Screen Phone Setup Screen Network Setup Screen Date And Time Screen ……
void EntryScrSettingMenu(void) { U16 nStrItemList[MAX_SUB_MENUS]; /* Stores the strings id of submenus returned */ U16 nNumofItem; /* Stores no of children in the submenu */ U8 *guiBuffer; /* Buffer holding history data */ U16 SettingsSubmenuImageList[MAX_SUB_MENUS];
/* 5 Set current parent id */
SetParentHandler(MAIN_MENU_SETTINGS_NO_SIM_MENUID);
/* 6 Register highlight handler to be called in menu screen */
RegisterHighlightHandler(ExecuteCurrHiliteHandler);
MMI
MTK 2007-06
Agenda/[ədʒendə]/
MMI Architechure Application Layer 应用层 WGUI(Warp GUI) GUI(Graphical User Interface) Input Event GDI(Graphics Device Interface) Local Data Make Environment and Procedures General intro of MoDIS Tool introduction E-service Release document(释放文件)
B5 MMI说明

MMI 使用使用介绍介绍1.1.:注意注意::1:调试设备时如需更换recipe 需确认设备当前没有运行任何recipe ,调试完毕后需换回调试之前的recipe 防止客户切割出错。
2:如果用三级密码进入系统调试时在调试完成后需即时退出,以防止他人更改设备参数。
设备的配置参数。
切割时的满足条件,所有的“OK ”都打“√”表示已经满足了切割的条件。
轴承箱的温度、马达的转速、冷却水的温度,等等的曲线图。
冷却系统的参数。
砂浆的参数。
切割台的参数。
钢线设置的参数。
Recipe 文件。
按这个按钮可以返回到主界面。
按这个按钮可以退回到上一步操作。
的应用程序里所有的数值都是以几下形式显示的::1.2.在MMI的应用程序里所有的数值都是以几下形式显示的1:灰色白底显示的数值是可以由操作员更改的。
2:这种纯灰色的数值操作员是不可以更改的。
3:这种绿底显示的是一个实时数值,不需要更改的。
4:这种灰底绿字的显示数值是期望值,操作员不可以更改。
如需更改参数时将光标移到需更改的数值上点击触摸屏幕就会出现以下的小键盘输入框::,就会出现以下的小键盘输入框需更改参数时将光标移到需更改的数值上点击触摸屏幕,“OK”是确认键。
“E”是工程师模式。
“←”删除键。
“ESC”取消。
1.3. 主界面图标说明切割的位置。
切割的比率(100%= 结束)。
从开始切割到目前的距离,如果切割中断或手工移动工作台这个数值都不会变。
工作台的高度灰色圆圈表示硅锭,其距离钢线高度是实际的硅锭高度。
工作台速度。
钢线的速度。
砂浆到砂浆喷头的流量。
砂浆马达的转速。
切割前将工作台的零点初始化完毕,按这个按钮。
此图标陷进去时表示设备上的安全保护装置已经生效,否则相反。
开始和重新开始的按钮,当其成灰色时表示一直在切割不可以是用。
暂停切割按钮,这个按钮可以让工作台到装载硅锭的位置,也可以重新定义工作台装载硅锭的位置,如果钢线在硅锭里面,此时一定要向上缓缓移动以防止钢线断掉。
MMI-原理

{MMI_ZeroShift_Init, MMI_ZeroShift_Handle}, //MMI_ID_ZEROSHFT
剖析5、数据同步
MMI操作过程中会涉及“参数配置”,在配置生效之前,有一个“非确定状态”, 这样其实就需要“两套内存”:A、workMem; B、mmiMem。 1、进入“Edit”: A B, 即将B同步成A, 以确保“编辑初始状态”。 2、处在“Edit”: B ‘B, 即在编辑过程,生成新的参数‘B。 3、 完成“Edit” : ‘B ‘ A, 在保存配置后,将‘B保存为“工作参数”,起效。
4、最多可以存放多少个“事件”。
5、怎么应对,不一样的“事件大小”。 6、FIFO、FILO 代码的区别 。 ***** 7、事件如果有优先级,该怎么办? “链表”最大的好处是什么?
7
Internal usage only
剖析2、消息队列
“消息”将 “A、请求方”与“B、响应方”隔离开来,变成了一种“松耦合”。
13
Internal usage only
14
Internal usage only
9
Internal usage only
剖析3、捕获、分发
捕获、 采用FIFO轮询“消息队列”,取得消息。 CircleQue_GetOut(&Keypad_MsgQue, (void*)pMsg, OUT_MODE_FIFO); 分发、 从队列取得“消息”后,广播出去。 “特殊消息”由系统统一处理,其他交由“当前菜单的回调函数”自己处理 。 switch (curMsg) { case KEYMSG_ENTER: case KEYMSG_TONEXT: case KEYMSG_RETURN: System_Handle(); break; default: MMI_ItemPara[MMI_CurItem].pfnHandle(curMsg); break; }
MMI开发机制说明(good)

内部公开▲展讯平台 MMI 开发机制说明2005-12-22 井文涛1 22.1概述.......................................................................................................................................2 KERNEL 模块(MMK) .........................................................................................................2消息管理 .................................................................................................................................2 消息分类.........................................................................................................................2 定时器消息 .....................................................................................................................3 消息队列管理 .................................................................................................................4 窗口管理 .................................................................................................................................4 窗口分类.........................................................................................................................4 窗口创建.........................................................................................................................52.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.23 44.1 4.2GUI 模块(MMI) ...................................................................................................................5 应用程序模块(APP).............................................................................................................7计算器应用实例 .....................................................................................................................7 注册事件 .................................................................................................................................8 对 Call 服务器的注册: ................................................................................................9 对 Kaybad 服务器的注册...............................................................................................94.2.1 4.2.25参考文献...............................................................................................................................9本文中的所有信息均为中兴通讯股份有限公司内部信息,不得向外传播1/9内部公开▲1概述展讯TD-SCDMA手机开发平台为客户提供参考MMI开发平台。
MMI编码细则

MMI开发细则(版本1.0)一、概述 (1)二、命名规则 (1)2.1命名所用字符规则 (1)2.2文件命名规则 (1)2.3函数命名规则 (1)2.4类型的命名规则 (2)2.5宏定义的命名规则 (2)2.6变量名的命名规则 (2)三、注释的编写规则 (3)四、文件书写规范 (6)五、函数编写规范 (6)六、数据类型编写规范 (7)七、条件、循环、SWITCH语句编写规范 (8)八、其他 (9)附录: (10)一、环境设置: (10)二、公共约定及注意事项: (10)一、概述MMI软件编码主要考虑以下原则:●软件系统的模块化设计原则●软件系统的稳定性、易读性、可修改性、可扩充性和可重用性本规范中所指的编程是指根据SDL流程图或其它流程图,通过人工方式用高级语言如C语言来实现该流程图的过程。
本规范在充分遵循以上原则的基础之上,定义了在编程过程中文件的命名规则,程序的编排格式、函数名、类型、宏、变量的命名规则、注释的书写规范和C语言的编码规则。
二、命名规则2.1命名所用字符规则1.变量、函数、宏命名只能由26个字母,10个数字,及下划线的一个子集来组成,不能使用“$”等符号。
2.下划线符号‘_’不能出现在符号名头或结尾,因为这类符号名不够醒目,容易与不带下划线‘_’的符号名混淆。
3.一个符号名中间不应出现连续两个‘_’,因为两个‘_’与一个‘_’之间的区别不明显,容易混淆。
2.2文件命名规则1.MMI软件分为若干任务,每个任务由项目经理给出一个英文缩写。
该任务下的所有文件都放在以该缩写为名字的目录中。
所有VSS中的文件都必须按照这种路径存放,禁止擅自在VSS中创建或移动目录。
2.文件命名考虑到与MSDOS等老的文件系统兼容,统一采用符合8.3格式的文件命名格式。
3.在此基础上规定,任务所属的源文件应命名为YYYYXXXX.C,其中YYYY为任务缩写名(如AFCK);XXXX为1~4个字符(可有下划线),说明该文件完成的大体功能。
轨道交通车辆MMI操作—MMI系统的基本操作

维修处理
• 回库后,检查一切正常,故障已消失, MMI显示有“列车网关故障”的记录
造成影响 • 此故障造成晚点1列。
故障原因
• 1175报的TC严重故障,并没有伴随相应 功能模块闪红,应为瞬态的假故障。在重 启列车过程中1176端04F01跳闸,导致 1171车TMS-MMI只显示一半列车。
判断要点
① 查看TMS-MMI(车辆显示屏)是否列车 控制系统等多个子系统的图框红闪报警, 对应系统图框红色提示及故障信息记录。
故障案例 TC严重故障
发生经过
• 2005年11月20日9:00,0523次117车在下行线, 司机(216)报1175车TC严重故障,继续运营, 19:16,117车折返到上行线,司机(221)重 启列车,重启后司机报恢复正常,但TMS-MMI 只显示一半列车,1174~1176车无显示,重合 1176车4F01后TMS-MMI于19:22恢复正常显 示。
②本单元C车04F01跳闸后会同时伴随 “列车控制、辅助逆变器、牵A车04F01跳闸后只显示本单 元车。
④ 任一C车04F01跳闸后只显示本单元三 节车图标的现象将在故障发生5秒后消 失,会出现大量故障信息。
维修处理 • 检查正常。
故障案例 TMS-MMI黑屏
发生经过
• MMI黑屏故障,应与列车自动折返失败有关,也存 在列车软件运行出错的可能;另外分合司机台钥匙 操作不当有可能导致ATP失败。正常情况下,TMSMMI黑屏的故障,只要断4F01开关15S后再打开, 均可以排除此类故障。导致2次分合4F01均未能恢 复正常的原因应为分合4F01的间隔时间不足15S, 也有可能为ATP在折返失败后一直给出错误的信息 而使TMS-MMI不能显示。开门灯不亮、强行开门也 无效的现象是司机台钥匙激活后,ATP并未建立起 来而进行操作造成的。在ATP使用的情况下开门灯 亮需要ATP已经建立起来并且已经释放开门码,否 则一切有关ATP的操作都是无效的。发现关门灯不 亮因为有乘客拉下门紧急解锁装置(EED)使门安 全回路断开造成的。
奥迪多媒体交互系统

奥迪多媒体交互系统(MMI)技术原理详解目前一些高档汽车上装备的配置科技含量越来越高,MultiMediaInterface(多媒体界面)系统,简称MMI,就是一种。
MMI的首要设计目标就是将所有相关的控制面板(MMI终端)集中于一个具有可转可按的控制旋钮及其周围4个操作按键的中央控制板。
在该控制面板的两边,除了用来退出菜单的返回键之外,还有8个功能键可以让用户直接进入相应的功能菜单,实现了操作简便、定位完美和运行通畅的技术理念。
MMI的第二个组成部分是MMI显示屏。
这个7英寸的彩色屏幕位于中控台之上的仪表板中央,正处于驾驶者的最佳视野范围内。
显示屏上排列的几何原理与MMI面板上的控制旋钮和操作按键布局完全一致,让使用者的手眼之间达到和谐对应。
使用频繁的功能会自动排在菜单的优先位置,方便进入。
车载导航等重要信息和电台选择能在自选装置的5英寸的显示屏上显现。
奥迪A6L中装配了MMI。
它集成了车辆控制、功能设定、信息娱乐、导航系统、车载电话等多项功能,驾驶员可方便快捷地从中查询、设置、切换车辆系统的各种信息,从而使车辆达到理想的运行和操纵状态。
MMI系统是奥迪公司首创,率先被应用在顶级豪华乘用车A8L上,经过优化改进后,应用到了A6L车型中。
该系统不但体现了奥迪先进的技术和超前的设计理念,还给用户提供了简捷实用的人车交流平台。
一、系统总览外观部件主要有显示屏和操作单元(如图1所示)。
驾驶员通过操作面板上的按键输入信息,该信息被传送至多媒体操作和显示控制单元(即MMI的主控单元),然后由控制单元控制显示单元显示相关信息。
系统可通过操作面板上的开关键打开或关闭,显示单元可通过其旁边的开关单独打开或关闭。
系统内部则由多媒体操作、显示控制单元和其它功能系统控制单元共同组成。
包括CD播放器、车载电话控制单元、导航控制单元、收音机、音响控制单元、TV 调谐器、网关等。
这些控制单元通过光导纤维相互连接和传递信号,所有控制单元串联在一起,并形成闭环(如图2所示)。
《VPI型计算机联锁系统MMI操作》使用摘要

《VPI型计算机联锁系统MMI操作》使用摘要1 MMI子系统概述人机界面子系统(以下简称MMI)通常由工控机、显示器、鼠标、键盘等设备组成,也可根据用户要求采用控制台、大表示屏等。
MMI采用“N+1”的系统结构,“N”套设备为主用设备,“1”套为备用设备。
通常,MMI显示器上显示站场,值班员用鼠标进行有关操作,系统给予简洁明了的表示和语音提示。
系统采用多窗口界面,在正常运行状态下主窗口显示站场图,下方是命令工具条,上方是设备状态栏,中间有可以移动的操作信息框。
除此以外,系统还提供方便的菜单式窗口提示。
主窗口站场图的显示与6502基本一致,主要包括站场显示、各类报警表示灯、状态表示灯、接发车箭头及操作按钮等。
1.1 操作命令操作命令工具条是操作机MMI操作的关键,主要包括以下操作按钮:【进路建立】、【总取消】、【信号重开】、【引导按钮】、【引导总锁】、【总人解】、【道岔总定】、【道岔总反】、【道岔单锁】、【道岔单解】、【封锁按钮】、【功能按钮】、【分路不良】、【区故解】、【控制区域】、【扣帽】。
1.2 系统设备状态栏联锁车站系统设备状态栏:站号:表示本站站号(软件数据定义的站号)。
本操作机HOSTID:表示现在与工作联锁机通信的MMI的序号。
当前控制区域:表示现在控制的区域状态。
主操作机MMI HOSTID:与本操作机HOSTID相同,表示本操作机是主操作机MMI,若是不相同,表示本操作机为备机。
2 开机操作当联锁机开机或重启后,MMI的界面上自动显示站场图形,此时站场图上所有区段显示橙色,MMI不能进行任何操作。
当MMI与联锁机通信正常后,MMI上显示所有区段锁闭(绿光带)、所有咽喉总锁闭(道岔岔尖显示红圈或岔尖显示红色)、“全站封锁”和“上电解锁”按钮亮红灯。
3 进路建立在一般情况下,MMI缺省状态为排列进路状态。
用鼠标操作时,只要将鼠标的光标移至列、调车按钮上,单击鼠标左键即可。
4进路建立4.1 信号显示状态信号机主要分为进站信号机、出站信号机和调车信号机等。
MMI-Android开发入门(二)

此文档是续上个文档,主要介绍人机界面,比如,如何布局,如何操作(创建、设计)控件,如何传递数据,等等。
更改TextView文字从一开始自Layout里通过Resource初始化TextView的文字,到程序中动态更改TextView文字,但要如何在代码里取得Resource的字符串呢?在Android里,确实是有些方法可以直接以R.string.*直接转换ID为String,不过,这样的数据类型转换是非常规甚至是不妥的,正确的方法是利用Context.getString方法来取得存放在global里的Resource ID。
以下这个范例将示范如何在程序运行时(runtime),通过CharSequence依据Resource ID 取出字符串,并正确更改TextView的文字。
运行结果▲图3-4 通过ng.CharSequence这个Interface来取得存放在global 里的Resource ID范例程序src/irdc.ex03_04/EX03_04.java主程序的差异主要是在更改mTextView02的文字时(setText方法),合并了str_3与str_2这两个不同对象,由于setText方法同时支持CharSequence 与String类型的参数,故在此示范不同数据类型的字符串进行同步输出。
package irdc.ex03_04;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class EX03_04 extends Activity{private TextView mTextView02;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.main);mTextView02 = (TextView) findViewById(R.id.myTextView02);CharSequence str_2 = getString(R.string.str_2);String str_3 = "我是程序里调用Resource的";mTextView02.setText(str_3 + str_2);}}res/layout/main.xml为了作为对比,在main.xml里创建了两个TextView,并采LinearLayout 的方式配置,一上一下,在运行结果中id为 myTextView01的TextView并没有任何文字的更改,维持一开始的str_1(参考字符串常数里的文字),但在程序运行后,id为 myTextView02的TextView则作了文字的实时更改。
BSS MMI命令简介

BSS MMI命令简介一、MMI命令主要用途1、BSS初始化2、安全管理3、维护、故障管理4、配置管理5、呼叫管理6、统计处理7、其他二、命令级别1、Level 1该级别允许显示系统参数,限制使用系统监视命令。
2、Level 2该级别允许使用所有系统命令,能修改系统数据库。
3、Level 3该级别可以监视系统内部进程。
三、命令类型1、Type A2、Type B四、GSM全球小区识别GSM全球小区识别由移动国家代码MCC、移动网络代码MNC、位置区代码LAC和小区识别代码CI组成。
如:Cell=4 6 0 0 2 22345 10052其中:4 MCC的第一位6 MCC的第二位0 MCC的第三位0 MNC的第羝位2 MNC的第二位22345 LAC10052 CI五、SYSGEN模式系统正常运行是在SYSGEN OFF模式下常用MMI命令●Help显示所有可用命令。
●help<command name>显示指定命令的帮助信息。
例如:help disp_element●man<command name>同上,但提供详细信息并举例。
●history显示曾输入的命令。
●!<command number>重复执行曾输入的命令。
例如:!s(最后一次输入的s打头的命令)●!!执行上一次输入的命令。
●chg_cell_id<old cell_id><new cell_id>改变小区的全球识别码。
例如:chg_cell_id 4 6 0 0 2 22345 10052 4 6 0 0 2 22345 20052 ●chg_dte分配OMCR或CBC与BSC连接的DTE地址。
例如:chg_dte bsc 0 14 4 6 0 0 0 0 0 1 0 1 0 0 0 0chg_dte bsc 1 14 4 6 0 0 0 0 0 1 0 1 0 0 0 0chg_dte bsc 2 14 4 6 0 0 0 0 0 1 0 1 0 0 0 0chg_dte bsc 3 14 4 6 0 0 0 0 0 1 0 1 0 0 0 0chg_dte omcr 0 14 4 6 0 0 0 0 0 3 0 0 0 0 4 1chg_dte omcr 1 14 4 6 0 0 0 0 0 3 0 0 0 1 4 2chg_dte omcr 2 14 4 6 0 0 0 0 0 3 0 0 0 0 6 1chg_dte omcr 3 14 4 6 0 0 0 0 0 3 0 0 0 1 6 2chg_dte omcr 4 14 4 6 0 0 0 0 0 3 0 0 0 2 0 0chg_dte omcr 5 14 4 6 0 0 0 0 0 3 0 0 0 2 9 9chg_dte omcr 6 14 4 6 0 0 0 0 0 3 0 0 1 2 9 9chg_dte cbc 3 1 2 3chg_dte bsc_cbc 3 4 5 6●chg_element phase_lock_gclk<value><site#>时钟是否向上一级锁相,value为1则锁相,0不锁相。
调试工具使用(任务一MMI软件认识).

任务1: MMI软件认知
运动管理窗口
用于轴的单一运动 最多到8轴 运动选项: 移动到目标点 增量运行 手动运行
用“开放式数控系统”虚拟机床训练软件 ,可进行运动管理训练
任务1: MMI软件认知
波形捕捉窗口
•四通道显示 •20khz采样周期 •YT, XY, FFT 显示模式 •监控所有变量类型: 标准变量 用户变量 SP 存储器
用“开放式数控系统”虚拟机床训练软件 ,可进行EFAC的设定训练
任务1: MMI软件认知
调整菜单
轴参数设定 开环参数配置 优化调整 位置环 速度环 电流环
用“开放式数控系统”虚拟机床训练软件 ,可进行调整菜单训练
任务1: MMI软件认知
安全监控窗口
监控: 限位 急停 编码器错误 驱动报警 系统报警
课
程:《 开放式数控系统应用》
素材名称: 单元三/任务一教学课件
《开放式数控系统应用》
单元三 调试工具使用
学习任务: 任务1:MMI软件认识
任务1: MMI软件认知
学习目标: 能够利用MMI软件进行系统连接 能够利用MMI软件进行轴的运行设置
任务1: MMI软件认知
主要功能: 通讯设定窗口-建立MMI软件与控制器之间或者模拟 器之间的通讯 配置器-配置电机和运动参数 安全监控-查看安全信号、每轴电机的错误及系统错 误的状态 调整-设置系统参数和调整控制环 运动管理器-执行单一的运动 程序管理器-编辑、管理和调试ACSPL+运动程序 IO窗口-控制外部IO 捕捉窗口– 进行运动分析 项目存储和装载菜单-保存项目文件或者参数文件到 闪存和从闪存中调用项目文件或参数
展讯平台 MMI学习笔记

展讯平台 MMI学习笔记MMI_STRNTOWSTR使ascii转wstr窗口:不仅显示内容,而且处理内部消息和发送给该窗口的外部消息。
一个应用程序是由一个或多个窗口构成的。
窗口创建过程(hello sprd):(1)创建窗口TABLE()宏WINDOW_TABLE定义了窗口数据信息表,在window_parse.h WINDOW_TABLE(MMI_HELLO_SPRD_WIN_TAB)={WIN_ID(MMI_HELLO_SPRD_WIN_ID),//窗口IDWIN_FUNC((uint32)HandleHelloSprdWinMsg), //处理函数WIN_TITLE(TXT_HELLO_TITLE),//窗口标题WIN_SOFTKEY(STXT_OK, TXT_NULL, STXT_RETURN),END_WIN};(2)注册窗口ID暂放于MMI_APP/COMMON/H/mmi_id.def中WIN_ID_DEF(MMI_HELLO_SPRD_WIN_ID,"MMI_HELLO_SPRD_WIN_ID")(3)MMK位于mmk_app.h中在idle窗口的处理函数里面加case_msg_app_ok里加一句:MMK_CreateWin((uint32*)MMI_HELLO_SPRD_WIN_TAB,PNULL);(4)写窗口处理函数,否则是一个空窗口不会显示。
(窗口回调函数)首先要申明,LOCAL MMI_RESULT_E HandleHelloSprdWinMsg(MMI_WIN_ID_T win_id,MMI_MESSAGE_ID_E msg_id,DPARAM param);然后函数实现:窗口的处理函数其实就是一个大的CASE语句,主要处理来自于系统的内部和外部消息。
LOCAL MMI_RESULT_E HandleHelloSprdWinMsg(MMI_WIN_ID_T win_id,MMI_MESSAGE_ID_E msg_id,DPARAM param){ MMI_RESULT_E recode=MMI_RESULT_TRUE;switch(msg_id){case MSG_OPEN_WINDOW: //打开窗口的消息break;case MSG_FULL_PAINT: //刷新窗口消息{GUI_LCD_DEV_INFOlcd_dev_info ={GUI_MAIN_LCD_ID,GUI_BLOCK_MAIN};GUI_POINT_T start_point={1,1};GUI_RECT_T rect={0,0,239,319}; //全屏区域MMI_STRING_T text_str={0};MMIRES_GetText(TXT_HELLO_SPRD,win_id,&text_str);GUI_FillRect(&lcd_dev_info,rect,MMI_WHITE_COLOR);start_point.x=1;start_point.y=30;LCD_DisplayString(&lcd_dev_info,start_point,text_str.wstr_ptr,text_str.wstr_len,0,MMI_BLA CK_COLOR,SONG_FONT_16,0);//显示字符串接口start_point.x=1;start_point.y=50;GUIRES_DisplayImg(&start_point,PNULL,PNULL,win_id,HELLO_SPRD_TEST,&lcd_dev_i nfo);HelloDrawLine();HelloDrawRect();HelloFillRect();}break;case MSG_APP_OK:MMK_CreateWin((uint32*)MMI_TEST_MENU_WIN_TAB,PNULL);break;case MSG_GET_FOCUS: //窗口获得焦点break;case MSG_LOSE_FOCUS: //窗口失去焦点break;case MSG_APP_CANCEL: //////2010-05-10MMK_CloseWin(MMI_HELLO_SPRD_WIN_ID);break;case MSG_CLOSE_WINDOW: //关闭窗口消息 break;default:recode=MMI_RESULT_FALSE;break;}return recode;}总结一下一个窗口的创建步骤:(1)创建窗口TABLE(2) 注册窗口ID(3)调用MMK_createWin创建窗口(4)实现窗口处理函数关于部分CASE语句的消息定义:MSG_OPEN_WINDOW:打开窗口MSG_GET_FOCUS:窗口获得焦点MSG_FULL_PAINT:窗口刷新MSG_LOSE_FOCUS:窗口失去焦点MSG_CLOSE_WINDOW:关闭窗口MSG_APP_CANCEL:右键消息(取消或返回)资源(静态资源和动态资源)包括:字符串、图片、菜单、字库、声音等。
计算机联锁系统MMI操作手册

2012年4月15日审核页拟制: 曹岱希 日期: 2012/4/10审核: 日期:批准: 日期:注:对外提交本文档时,请删除本页。
CN = caodaixi, C = CN-中国, O = CASCO, OU = IXL 2012.04.25 23:33:23 +08'00'修订页注:对外提交本文档时,请删除本页。
目录页1 MMI子系统概述 (11)1.1 操作命令 (12)1.2 系统设备状态栏 (12)2 开机操作 (12)2.1 解除“全站封锁”(带全站封锁提示窗口) (13)2.2 取得控制权(带全站封锁提示窗口) (13)2.3 解除所有咽喉的“引导总锁闭”(带全站封锁提示窗口) (13)3 控制权切换 (14)4 进路建立 (17)4.1 信号显示状态 (18)4.2 列车进路 (19)4.3 引导进路 (19)4.3.1 引导按钮开放引导信号 (19)4.3.2 引导总锁开放引导信号 (21)4.4 调车进路 (22)4.4.1 向股道调车作业 (22)4.4.2 由股道向咽喉调车作业 (22)4.4.3 列车折返作业 (23)4.4.4 调车折返作业 (24)4.5 信号重复开放 (24)4.6 信号按钮扣帽 (25)5 进路解锁 (26)5.1 进路总取消 (26)5.2 进路总人解 (26)5.3 引导进路解锁 (27)5.4 区段故障解锁 (27)6 道岔操纵 (28)6.1 道岔显示状态 (28)6.2 道岔单操 (29)6.2.1 道岔定操 (29)6.2.2 道岔反操 (29)6.3 道岔单锁 (29)6.4 道岔单解 (30)7 轨道区段 (30)8 封锁功能 (30)9 分路不良 (31)9.1 分路不良设置的确认 (31)9.2 分路不良设置的解除 (32)9.3 分路不良设置后的光带显示 (32)10 闭塞操作 (33)10.1 64D半自动站间闭塞操作 (33)11 表示灯,报警功能 (36)11.1 报警类表示灯 (36)11.2 各类设备状态表示灯 (38)11.3 各类按钮及表示 (39)11.4 【功能按钮】使用 (40)12 操作机MMI辅助功能 (41)12.1 站场显示 (41)12.2 信息提示窗 (42)12.3 区段灰光带 (43)12.4 车次窗 (43)12.5 鼠标跨屏操作 (44)13 联锁与其它设备接口相关说明 (44)13.1 与6502控制台接口: (44)14 带密码操作汇总 (45)14.1 “全站封锁” (45)14.2 “上电解锁” (45)14.3 “引导总锁” (46)14.4 “引导按钮” (46)14.5 “总人解” (46)14.6 “区故解” (46)14.7 “封锁按钮” (46)15 特殊防护操作说明 (47)16 安全型计算机联锁VPI系统车站值班员操作上岗测试题 (48)1MMI子系统概述人机界面子系统(以下简称MMI)通常由工控机、显示器、鼠标、键盘等设备组成,也可根据用户要求采用控制台、大表示屏等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个MMI应用程序应该包含以下步骤:1:一个初始化函数去注册不同的event handlers;2:Highlight handlers 进行函数注册主要是选中菜单后调用该注册函数,即该菜单对应的操作;3:完成入口函数Entry functions4:完成退出函数Exit functions5:完成business logic 去进行不同entry functions 之间的引用。
MMI 采用screen流的方式进行屏幕之间的转换,进入新的screen之前,执行被覆盖screen的exit函数,并将相关信息存入历史记录,然后进入新的screen, 从新的screen退出后从history数据库取出上一screen的信息,进入其entry函数。
以下代码片段的API都是系统提供的,可在头文件中找到其原形。
一:初始化函数代码片段://以下两个API参考eventGprot.hV oid MyInitialization(void){//设事件处理函数如下闹钟超时处理时间SetProtocolEventHandler(AlmExpiryHandler,MSG_ID_MMI_EQ_ALARM_IND);//设置Highlight Handler函数当点mms菜单后调用相应函数HighlightMMSHandlerSetHiliteHandler (MESSAGES_MENU_MMS_MENUID, HighlightMMSHandler);}二:入口函数代码片段:// 本例为进入短信主菜单的处理函数相关接口函数可在对应的头文件中查找void EntrySMSMainMenuList (void){U8* guiBuffer;U16 nStrItemList[MAX_SUB_MENUS];U16 numItems;U16 i temIcons[MAX_SUB_MENUS];U8* p opUpList[MAX_SUB_MENUS];U32 menuItemId=-1;U32 menuItemId1=-1;U32 maskingByte=-1;U8** pPopUpList=NULL;//进入入口函数必须首先调用EntryNewScreen, 该函数执行上一屏幕的退出函数,并记录当前屏幕的入口和退出函数EntryNewScreen(SCR_ID_MSG_SMS_MAIN_MENU, mmi_msg_exit_generic, EntrySMSMainMenuList, NULL);//设置当前screen IDSetMessagesCurrScrnID(SCR_ID_MSG_SMS_MAIN_MENU);//获取当前screen 的gui buffer,用于被当前screen被覆盖后存入历史记录guiBuffer = GetCurrGuiBuffer (SCR_ID_MSG_SMS_MAIN_MENU);//设置当前screen的父menu IDSetParentHandler (MESSAGES_MENU_SMS_MENUID);//注册Highlighthandler处理函数RegisterHighlightHandler (ExecuteCurrHiliteHandler);//获取当前菜单子菜单数目numItems = GetNumOfChild (MESSAGES_MENU_SMS_MENUID);//获取子菜单的stringGetSequenceStringIds(MESSAGES_MENU_SMS_MENUID, nStrItemList);//获取子菜单IconGetSequenceImageIds(MESSAGES_MENU_SMS_MENUID, itemIcons);mmi_msg_set_msg_num_hint (msgbox_info.totalinbox, msgbox_info.totaloutbox, msgbox_info.totaldraftbox);ConstructHintsList(MESSAGES_MENU_SMS_MENUID, popUpList);mmi_msg_set_msg_menu_highlight_handler();if (g_msg_cntx.msg_init){pPopUpList = popUpList;else{pPopUpList = NULL;}menuItemId=GetChildMenuIDIndexByParentMenuID(MESSAGES_MENU_SM S_MENUID, MESSAGES_MENU_INBOX_MENUID);if(menuItemId!=-1){if(IsResetCSPGroupService(CSP_TELESERVICES_SERVICE_GROUP,CSP_S M_MT)){ResetBit(maskingByte,menuItemId/*1*/);}}menuItemId=GetChildMenuIDIndexByParentMenuID(MESSAGES_MENU_SM S_MENUID, MESSAGES_MENU_WMESSAGE_MENU_ID);menuItemId1=GetChildMenuIDIndexByParentMenuID(MESSAGES_MENU_S MS_MENUID, MESSAGES_MENU_OUTBOX_MENUID);if(menuItemId!=-1 && menuItemId1!=-1){if(IsResetCSPGroupService(CSP_TELESERVICES_SERVICE_GROUP,CSP_S M_MO)){ResetBit(maskingByte, menuItemId/*0*/);ResetBit(maskingByte,menuItemId1/*2*/);}}menuItemId=GetChildMenuIDIndexByParentMenuID(MESSAGES_MENU_SM S_MENUID, MESSAGES_MENU_CB_MENUID);if(menuItemId!=-1){if(IsResetCSPGroupService(CSP_TELESERVICES_SERVICE_GROUP,CSP_S M_CB))ResetBit(maskingByte,menuItemId/*6*/);}menuItemId=GetChildMenuIDIndexByParentMenuID(MESSAGES_MENU_SM S_MENUID, MESSAGES_MENU_VMAIL_MENUID);if(menuItemId!=-1){if(IsResetCSPGroupService(CSP_V ALUE_ADDED_SERVICES_SERVICE_GR OUP,CSP_VPS))ResetBit(maskingByte,menuItemId/*5*/);MaskStringItems(popUpList,(U8)numItems,maskingByte);MaskItems(itemIcons,(U8)numItems,maskingByte);numItems=MaskItems(nStrItemList,(U8)numItems,maskingByte);MaskHiliteItems(MAIN_MENU_MESSAGES_MENUID, maskingByte);g_msg_cntx.currBoxIndex=0;// show category 函数,将上面准备好的参数传递进去,show当前screen ,show category系统已经提供了足够多风格的函数选择,可根据需要调用对应的showcategory函数(在ProjectName/Doc/Doc.rar/CATEGORY中查看各种show category相应的屏幕模板).ShowCategory52Screen(STR_SMS_MENUENTRY,IMG_SMS_ENTRY_SCRN_CAPTION,STR_GLOBAL_OK,IMG_SMS_COMMON_NOIMAGE,STR_GLOBAL_BACK,IMG_SMS_COMMON_NOIMAGE,numItems,nStrItemList, itemIcons,(U8 **) pPopUpList ,0, 0,guiBuffer );//注册右软件处理函数返回键SetRightSoftkeyFunction (GoBackHistory, KEY_EVENT_UP);//同上SetKeyHandler (GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);}三:退出代码函数片段:退出函数在进入函数的EntryNewScreen中第二个参数被注册,进入当前screen 时执行上一个screen的exit函数。
V oid ExitFunction(void){//定义history变量History Scr8500;//记录将要被存入history 的screen idScr8500.scrnID = SCR8500_CALL_LISTMEU;//记录当前screen的入口函数,将来被恢复是将被调用Scr8500.entryFuncPtr = EntryScrCallMenuList;//复制要存储的任何用户数据Strcpy(Scr8500.inputBuffer, “…..”);//store the screen attributes in the gui bufferGetCategoryHistory(Scr8500.guiBuffer);//加入到history数据库AddHistory(Scr8500);}四:进入MMS菜单细节以下为进入MMS菜单前准备流程://菜单ID与处理函数对应,当user选中MESSAGES_MENU_MMS_MENUID后执行HighlightMMSHandler函数。
SetHiliteHandler (MESSAGES_MENU_MMS_MENUID, HighlightMMSHandler); // HighlightMMSHandler函数原形void HighlightMMSHandler (void){//改变左软件string 和iconChangeLeftSoftkey (STR_GLOBAL_OK, IMG_SMS_COMMON_NOIMAGE);//改变右软件string 和iconChangeRightSoftkey (STR_GLOBAL_BACK, IMG_SMS_COMMON_NOIMAGE);//为左软件注册处理函数,当user选中左软件,则进入EntryScrMMSMenuList 函数, 即开始mms主菜单的显示SetLeftSoftkeyFunction (EntryScrMMSMenuList, KEY_EVENT_UP);//同上右方向按下进入EntryScrMMSMenuListSetKeyHandler (EntryScrMMSMenuList, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);}。