![]() |
|
Spaces home 痕 TraceStudioPhotosProfileFriendsMore ![]() | ![]() |
|
痕 TraceStudio◇上帝给了我生命, 却没有给我生命的轨迹。
空间关闭本空间关闭,以后不再更新。谢谢朋友们!
难得一记自去Coolsand以后就少有写博客,也不是没有时间,只是少了写的心情而已。整日忙于调程序,发布版本,心绪少有整理,陷于终日的生活奔波之中。冲动与激情逐渐远离,剩下的只有现实的机械,周而复始有条不紊的运作,就像一部钟表。 决定换工作,换个环境发展另一片天地,希望经历更丰富的东西! GSM手机的MMI窗口管理原理摘要:
采用面向对象的程序设计技术,用C语言开发窗口结构的GSM手机MMI(人机接口)软件,程序结构清晰,代码效率高,模块可再用性好。本文粗浅地谈了GW手机MMI软件开发的功能模块组织、窗口管理等技术,并以快捷功能为例,说明具体功能的实现方法。 关键词:人机接口(MMI) 功能模块组织 窗口管理。GSM手机是直接为移动用户服务的移动通信终端。其组成一般包括4个部分:射频单元、基带单元、人机接口(Man Machine Interface,缩写MMI)和软件。
1 MMI的功能及对软件的要求
MMI是进行移动通信的人与提供移动通信服务的手机之间交往的界面。它包括硬件和软件:硬件有键盘、显示器、话筒、耳机和SIM卡等;软件有基本人机界面功能、用户SIM卡功能、公众移动网功能、菜单与电话本功能等。 MMI主要有以下功能: (1)输入用户操作信息。 (2)以声、光、振动等手段显示手机及网络的状态、输出操作结果。 (3)实现GSM相关协议,如DRAFT pr ETS 300 906珍动台特性,ETS300 907移动台MMI等标准对MMI的各项要求。 (4)提供合理、方便的操作方法。 (5)对众多的功能进行分类、组织,以方便用户使用。(6)增加计算器等附加功能,提高手机的实用性。 (7)加入动画、图标、问候语等修饰功能,使产品界面美观、友好。 为了满足上述功能,对MMI软件的开发工作提出了以下相关要求:(1)充分消化GSM协议,完整地实现协议要求的各项基本功能。 (2)软件工作稳定可靠,与底层软件接口方便,以保证整机的性能。 (3)选用代码效率高,表达能力强,可移植性好的编程语言,以便提高产品的性能价格比,降低开发成本。(4)根据GSM手机界面的具体情况,充分利用LCD显示器的表达能力,借鉴、采用最新的软件开发技术,运用图形、动画及汉化界面、汉字功能,美化产品、方便使用。 (5)精心组织程序结构,使软件结构清晰,各模块独立性强,可扩充性、可封装性好,便于开发小组分工合作以及各阶段开发成果的充分利用,达到缩短产品开发周期、丰富产品功能的目的。(6)发挥创造性,开发特色功能、实用功能,提高产品吸引力。
2 MMI软件功能模拟的组织结构
GSM手机的MMI软件有一个主程序,主要作用是建立消息循环,负责分发消息。当收到来自底层的开机消息时,MMI层软件进行初始化,并创建基本窗口。窗口(window)是一个术语,它可以接收消息,可能在显示屏上有一个对应的显示区域,也可以没有。字符显示区,编辑域,或者既有字符显示区又有编辑域的对话窗口都是窗口的例子。基本窗口是MMI层所有窗口的“根”,其它窗口都是这个窗口的子窗口。到达MMI 层的GSM消息,其它窗口不处理时,都送到基本窗口中作缺省处理。在基本窗口中,根据不同情况,进行状态转换,分别创建等待关机、充电、等待插入SIM卡、等待输入PIN、等待SIM卡解锁等子窗口,处理开机及关机过程中的各项工作。顺利完成各项开机工作后,转人待机状态,创建待机窗口。如果因接听来电或拨打电话进入通话状态,则取消待机窗口,创建通话窗口。待机窗口可以完成拨号、启动快捷功能等工作,也可以进一步创建电话本、功能菜单等子窗口。 菜单窗口可以派生一系列子菜单窗口,形成一棵菜单树。这棵菜单村把手机的众多功能有机地组织在一起。各个菜单窗口都是菜单窗口类的实例,菜单的选择、显示等功能都在菜单类中完成。
3 MMI软件的核心结构——窗口管理
根据GSM手机MMI软件开发的具体情况,采用面向对象的程序设计技术,用C语言以窗口方式和消息驱动机制来组织软件结构,可以满足对MMI软件开发工作的各项要求。在这个技术方案中,窗口管理是整个MMI软件的核心结构。窗口管理为对话窗口、菜单、编辑及其它用户输入输出操作提供了一个基本框架,为消息处理提供了基本手段。由于使用了面向对象的程序设计方法,MMI软件采用消息驱动机制。窗口管理收集所有的输人信息,然后把这些输入信息以消息的形式送往合适的窗口。这些消息的执行结果又可能产生新的消息,新消息的传送仍由窗口管理负责。窗口管理通过调用窗口函数,向窗口函数传递消息参数,把消息送到目的窗口。窗口函数是其所属窗口在窗口管理中注册的系统函数,是窗口最重要的属性。窗口管理调用窗口函数对窗口进行操作,处理窗口接收到的所有消息。窗口函数对消息的处理方法确定了窗口的表现和行为特征。窗口管理调用标准的窗口函数,自动处理窗口的许多特性,应用程序只要负责创建窗口、处理窗口产生的高级事件及窗口的异常情况。在这个环境中,用户可以对GSM 消息作处理,也可以让系统对GSM消息作缺省处理。窗口管理把来自键盘和软件中其它实体的消息送到具有当前焦点的窗口。在软件的整个运行过程中,总存在一个具有焦点的窗口,它负责处理输人消息,或者把消息沿着从子窗口到父窗口方向递送的传递链送到一个可以处理该消息的窗口。 MMI层主要有两类输入消息:它们是来自系统其它部分的键盘事件消息和GSM协议栈消息。窗口消息按一定的规则选择传递路径。键盘消息是由按键的按下和释放产生的,被送往具有焦点的窗口。键盘消息最多只能传到父窗口,不能再往上传送。GSM协议栈消息可以从子窗口到父窗口按窗口层次结构一直传递,直到有一个窗口接受这条消息为止。窗口管理也提供了一种使消息直达某一窗口的机制,使消息可以直接送往请求这个消息的窗口。这个方法在某条消息只有一个特定的窗口感兴趣的情况下非常有用。 MMI层内部产生的消息,一般不按窗口层次结构由于窗口向父窗口传送。如果要把该类消息从子窗口向父窗口传送,子窗口要负责这项工作。未处理的消息如何传送,由缺省的消息处理函数负责。系统提供了一些窗口类。如文本类,用于显示固定字符;菜单类,用于菜单的显示和处理;编辑类,用于字符的编辑等。应用程序可以向窗口管理注册新的窗口类。 窗口类实现了许多窗口的共同特性。向窗口管理注册后的窗口类,可以生成窗口实例,很方便地为许多窗口再用。例如,菜单窗口的工作方式相同,只有当菜单窗口的一个菜单项被选定时,才需要一段特定的程序来处理这特定的选择。菜单类窗口的每个实例在选定特定的菜单项前的窗口管理都可以用窗口类中的同一段程序管理。这里强调一下,只有向窗口管理注册了的窗口类,才能生成窗口实例。窗口实例继承了窗口类的特性,也可以增加自己的特性,还可以通过重载消息处理函数改变从窗口类继承来的特性。生成窗口实例时,要把窗口类名、窗口名、窗口识别号、窗口函数名、窗口位置数据、父窗口、窗口风格、窗口状态、窗口键盘和窗口私有数据等参数送往窗口管理。为了方便,预先定义了一些通用的对话窗口生成函数。如通知消息对话窗口,可以显示通知信息;开/关选择对话窗口,可以用于类似“开”或“关”等开关量的选择;PIN输入对话窗口,可以用于输入PIN码等等。窗口消息在窗口函数中处理。窗口消息送往一个窗口时,实际上是送往这个窗口的窗口函数。每个窗口类都必须有一个窗口函数。在窗口实例中不处理的消息一般用缺省消息处理函数自动送往该窗口的窗口类的窗口函数中处理。某些在窗口类中不处理的消息,如GSM事件消息,则沿着从子窗口到父窗口方向递送的传递链自动送往父窗口处理。对话窗口的子窗口可能会有一个子类窗口过程,这时窗口消息首先送往具有焦点的子窗口,如在待机窗口中,数字键消息首先送往电话号码编辑子窗口的窗口函数中处理。下面以快捷功能为例,说明如何实现具体功能。
4快捷功能及其实现
菜单一般按功能分类编排,有时常用的功能安排在较深的菜单下面,使用时常感不便。为了方便用户访问常用功能,许多手机都有快捷功能。几种不同方法都可以实现快速访问菜单项的目的。
4.1功能编号法
给每个菜单项一个功能编号,在主菜单下键入这个编号,就可以进入这项菜单。例如主菜单第五项一子菜单第四项一下一级子菜单第一项的功能编号为5-4-1。只要在主菜单下键人5、4、1,就可以进入这项功能。 每项菜单在其所属窗口中都有一个编号。这种方法其实是每次按下数字键时,选中当前窗口中该数字键所代表的菜单项,逐级进入,直至调出所需的功能。这项功能可以在菜单类中实现,这样,任何菜单窗口就都有用数字键选择菜单项的功能。只要在菜单类的窗口函数中,加人数字键键盘消息的处理代码就可以实现这项功能。
4.2快捷菜单法
在主菜单下增加一个子菜单,把原来分布在各级子菜单下的常用功能收集到这个子菜单中,就组成一个快捷菜单。这些功能除了可以在各级子菜单中找到,也可以从快捷菜单直接进入。快捷菜单的处理方法与普通菜单一样。快捷菜单本身也可以设计成用快捷键进入,其实现方法参看下面的快捷键法。
4.3快捷键法
快捷键法一般是设法利用键盘上的某些键进入快捷功能。由于键的用途很多,必须满足一定的条件才能进入快捷功能。比如在待机状态下,连续按住某个键约2秒进入快捷功能。快捷键功能一般在待机窗口中实现,基本方法如下:
1) 在待机窗口的电话号码编辑子窗口中,当收到有键压下的消息时,启动按键计时器;当收到按键释放的消息时,按键计时器停止工作。
2) 按键计时器利用每秒一次到达待机窗口的定时器消息进行计时。
3) 按键时间超过2秒时,调用按键所代表的功能的实现函数,启动快捷功能。
5结束语
GSM手机MMI软件的开发是一项复杂的软件工程。采用面向对象的程序设计技术用 C语言开发窗口结构的MMI软件,程序结构清晰,代码效率高,模块可再用性好,便于增加产品功能,便于开发小组编程时分工合作。 《大悲咒》原文及念誦注音《大悲咒》原文及念誦注音
*************************************
大悲咒 大悲咒,是觀世音萻薩的大慈悲心,無上菩提心,以及濟世渡人,修道成佛的重要口訣。其中一字一句都包含著正等正覺的真實工夫,沒有一絲一毫的虛偽。本咒是觀世音菩薩「大悲心陀羅尼經」中的主要部份,共有八十四句。其詳名為:「千手千眼觀世音菩薩廣大圓滿無碍大悲心陀羅尼經大悲神咒。」其得名的由來是:有一次佛陀告訴阿難尊者說:「如是神咒,有種種名:一名廣大圓滿、一名無碍大悲、一名救苦陀羅尼、一名延壽陀羅尼、一名滅惡趣陀羅尼、一名破惡業障陀羅尼、一名滿願陀羅尼、一名隨心自在陀羅尼、一名速超十地陀羅尼。」它的被稱為千手千眼觀世音菩薩的因由是:有一次他曾經在千光王靜住如來住所時,靜住如來特為了他說了「廣大圓滿無碍大悲陀羅尼」,並且對他說:「善男子彈汝當持此心咒,普為未來惡世一切眾生作大利樂。」據經的記載:當時觀世音菩薩聽了此咒後,即由初地證至第八地--不動地。於是發出誓願說:「設我當來之世能利樂一切眾生者,令我即時身生千手千眼具足。」如此發願後,果真頓時身生千手千眼,並且十方大地為之震動,十方諸佛亦都放出無量光明,遍照十方的無邊世界。至於本咒所以有種種異名,釋尊曾經告訴阿難說:這是起因於觀音菩薩的宏願。菩薩曾在世尊處發誓說:「設若諸人天誠心念我名者,亦應念本師阿彌陀如來名,然後誦此陀羅尼神咒。如一夜能持誦五遍,則能除滅百千萬億劫生死重罪。設若諸人天誦持大悲章句者,即於臨命終時,十方諸佛皆來授手接引,並且隨其所願往生諸佛國土。設若諸人天誦持大悲心咒者,十五種善生,不受十五種惡死。」因此大悲咒,不但能除一切災難以及諸惡病苦,且能成就一切善法遠離一切怖畏,所以我們應以十分虔敬的信心與清掙心去受持它,方能契合菩薩的大悲心,獲得無上的利益。沉淪在三界五趣眾生,果能經常持誦大悲咒,不但能治一切心病與身病,且能由此超脫生死輪迴,願眾生齊誦本咒,同證佛果。 -------------------------------------------------------------------------------- 参考:《大悲咒》原文及念诵注音http://www.hhfg.org/fjyx/f21.html 或者:http://www.jxfcs.com/dbz.html ************************************* 大悲咒句文譯意 南無(皈依)喝囉怛那哆囉夜耶(三寶).南無(皈依)阿唎耶(聖),婆盧羯帝(觀)爍缽囉耶(自在).菩提薩埵婆耶(覺有情).摩訶薩埵婆耶(大覺有情).摩訶迦盧尼迦耶(有大悲者).唵(皈命),薩皤囉罰曳(一切尊).數怛那怛寫(為救濟於一切恐怖者).南無(皈命)悉吉慄埵(於彼)伊蒙阿唎耶(我聖).婆盧吉帝室佛囉愣馱婆(觀自在香山).南無(皈命)那囉謹墀(言聖觀自在賢愛.慈悲之心).醯利摩訶皤哆沙咩(我今宣說).薩婆阿他豆輸朋(一切希望圓滿而有光輝者).阿逝孕(無比).薩婆薩哆(一切鬼神不能打勝者)那摩婆薩哆,那摩婆伽(童真).摩罰特豆(有道即令迷界清掙者).怛姪他(謂).唵(皈命).阿婆盧醯(有光明智慧者).盧迦帝(觀自在).迦羅帝(超越世間者).夷醯唎(吁獅子王).摩訶菩提薩埵(大菩薩).薩婆薩婆(一切一切).摩囉摩囉(憶念憶念),摩醯摩醯唎馱孕(心真言).俱盧俱盧羯蒙(作作事業).度盧度盧(保持保持)罰闍耶帝(遊空者).摩訶罰闍耶帝(大遊空者).陀囉陀囉(保持).地唎尼(持者).室佛囉耶(帝王自在).遮囉遮囉(行動).摩麼罰摩囉(無垢者).穆帝隸(無垢體).伊醯伊醯(教語).室那室那(弘誓).阿囉參(王) | ||