网站首页 | 论文指导 | 经济论文 | 理工论文 | 管理论文 | 法律论文 | 行政论文 | 英语论文
艺术论文 | 农学论文 | 医学论文 | 文史论文 | 教育教学论文 | 论文定制 | 论文发表
论文库分类>>> 点这里访问轻松论文网主站>>>
您当前的位置:轻松论文网 -> 论文中心 -> 理工论文 -> 电子通信网络论文 -> 文章内容 退出登录 用户管理
 子栏目导航
· 计算机与信息技术论文
· 电子通信网络论文
· 自动化论文
· 土建水利论文
· 交通运输论文
· 化学与化工论文
· 石油与能源动力论文
· 机械制造论文
· 矿业与冶金论文
· 工程论文
· 生命环境论文
· 材料科学与工程
· 综合论文
 最新推荐
· 世界地缘政治体系与印度...
· 维新与革命:政治选择的...
· 世界地缘政治体系与印度...
· 中国国家安全哲学-政治哲...
· 政治学视野中的公共政策...
· 方法引导下的政治理论[上...
· 格拉修斯原则:基督教二...
· 方法引导下的政治理论[下...
· 国体、国情与现代国家-政...
· 试论我国今后政治发展的...
· 东亚的政治权威与现代化...
· 跨国收养法的概念与渊源...
 热门文章
· 开题报告的格式(通用...
· 怎样写开题报告
· [图文] 开题报告范文1(银行...
· 开题报告范文2(网上...
· 毕业论文开题报告-A...
· 开题报告的撰写方法...
· 开题报告范文3(网络...
· 文献综述的写法
· 毕业论文例文评析
· 开题报告撰写的方法...
 相关文章
· 浅论最高法“民事证...
· 法律程序设计的若干...
· [图文] μC/OS-II实时内核下...
· 嵌入式Linux系统CGI...
· [图文] Vxworks嵌入式操作系...
· [图文] VxWorks下PC/104-CA...
· [图文] 基于VxWorks的多DSP...
· windows nt环境下fd...
· 微机UNIX直接视频图...
· Solaris下PRO*C和OC...
 
[论文定制][论文发表][价格总览][支付方式][购买流程]点击这里给我发消息 点击这里给我发消息
软键盘产品界面显示的通用程序设计
作者:佚名  来源:不详  发布时间:2007-3-2 14:44:57  发布人:admin

减小字体 增大字体

摘要:介绍如何利用状态图的分析结果把握待开发系统的软界面结构,完成软键盘控制类产品界面显示的通用程序设计。

    关键词:状态图 控制类产品 界面 数据结构

可视频程序的一个重要特点是:有大量的窗口、对话框等界面与用户进行交互,并根据用户在界面上的操作进行相应的事务处理。设计良好的用户界面不仅可以提高用户与软件的交互效率,而且可以减少用户操作与控制状态转换出错的概率。好的设计界面不但要注意屏幕布局,更在充分理解待完成工作的基础上,快速地构架系统的有效结构,使编程人员有更多的精力去实现系统的处理功能。下面介绍一种在Nucleus仿真器MNT中快速实现产品界面设计的经验。

图1 PDA产品的主界面和部分功能操作界面

1 系统分析

(1)问题的由来

嵌入式系统是一种软、硬件结合的产物。一个控制类嵌入式产品的软件开发离不开它所依赖的硬件环境。如今有了仿真软件的支持,使得嵌入式系统软件与硬件的开发可以同时进行,也因为嵌入式开发工具的强大,越来越多的软键盘产品在不断问世。无论是仿真开发硬键盘产品,还是开发软键盘产品,待开发软件除显示界面之外,主要处理的是设备与外界环境的复杂交互。由于复合控制行为的数量和种类都不可预测,导致了这类软件设计非常复杂,此时使用常规设计方法,难于充分保证实现每种控制行为的组合,更难于保证控制界面的逐级返回。例如,当开发图1所示的PDA软键盘产品时,其中每项功能的控制界面上都有众多按钮用于接受控制行为,根据用户点击行为的不同,进入下一级不同的界面,或处理不同的事务。尽管有产品可能将固定键盘做成一组固定的硬件按钮,但无论怎样,这类软件都需要为不同的界面设计许多不同的控件,并处理控制行为对应的事务。因此,开发中快速地实现界面显示,可保证有更多的精力处理所有控制行为对应的事务。

图2 系统记束本部分状态转换图

    (2)状态图

美国ATI公司的Nucleus嵌入式操作系统是一个嵌入式系统开发包。该软件包借助Visual C++的调试器和编译器进行程序的调试与编译,基本控制语句标准C语句。使用其中的Nucleus MNT仿真器提供的专用库函数,可以实现产品开发。

为了编写PDA的控制软件,首先分析整个产品的功能,并以状态转换图进行描述。图2是系统记事本部分状态转换图。

2 系统的实现

2.1 数据结构的建立

通过对状态图的分析得知,整个系统有38种功能不同的控件,共70个。在不同的界面上发生的不同控制行为决定了系统的不同转移状态,并启动响应事务处理。假设全部的数据结构预先定义在pda_init.h文件中,为了完成系统设计,主要需要设计如下数据结构:控件数组、状态控件链、显示状态链、显示状态栈。

(1)控件数组

在Nucleus MNT中,用Window CreateWindow(int wClass,char*ttl,int x,int y,int w,int h,int(*wndProc)(),unsigned long attrib)和CTRL *Control(Window wnd,int type,char name[],int x,int y,int w,int h,int id)函数,可分别创建窗口窗的各种控件,所以设计了一个二维int型控件数组。其中存储的是70个控件的相关参数,函数调用时,直接引用控件数组的不同分量就可以显示出不同的控制界面。控件数组的定义格式为:static int Controls[70][7];

 控件属性偏移值LeftTopWidthHeightID
Controls[X][Y]Y=0Y=1Y=2Y=3Y=4Y=5Y=6

Controls[X][0]:控件属性,表示控件的类型。例如,0表示按钮,13表示文本输入框,23表示图片,29表示静态文本框,51表示中英字符的三块键盘,52表示数字小键盘,53表示号码查询键盘,54表示计算器键盘。

Controls[X][1]:控件偏移植。作用是区分或设定同一类型不同控件的编号。编号从0开始。例如,对于系统中的17个按钮可分别设置为

{0,0,50,110,60,20,5501},

{0,1,150,110,60,20,5502},

……

{0,16,230,160,35,40,5517}

系统的21个静态文本框分别设置为

{29,17,10,15,50,30,5601},

{29,35,10,40,50,30,5619},

……

{29,38,10,15,50,30,5622},

偏移值指定的内容是需要显示的字符串,如图3所示。

Controls[X][2]:控件距所处窗处左边界的距离。

Controls[X][3]:控件距所处窗体右边界的距离。

Controls[X][4]:控件的宽度。

Controls[X][5]:控件的高度。

Controls[X][6]:控件的标识号码,为了系统调用方便而取的编号。

图4 界面控件链

    (2)状态控件链

控件链(static int StateControlList[53][6])是一个动态的单向链表结构。在应用程序初始化阶段,根据对pda_init.h文件中定义的界面控件静态数组的遍历动态生成。当程序进入某个界面时,只要循环显示该链表中的控件即可。

Static int StateControlList[53][6]数组的具体定义格式如下:

 Y=0Y=1Y=2Y=3Y=4Y=5
StateControlList[X][Y]控件1控件2控件3控件4控件5控件6
StateControlList[1][6]464748490NU

其中“控件1”、“控件2”……表示当前状态的第一、第二等控件。数据“46”表示控件数组的第47个控件,与Controls[46][Y]数组中的内容相对应。“0”是控件结束标志,“NULL”表示没有数据。

为了处理方面,在程序初始化的过程中,假设这个静态数组生成了一个单向链表数组,PDAStateControlsList[53]。具体格式如图4所示。

该链表的每个节点是一个pdacontrolslist型常量,具体结构如下:

struct pdacontrolslist //以下的“X”为控件数组的编号

{

int propertyvalue; //控件属性值,大小等于Controls[X][0]

int default_flag; //缺省偏移值,大小等于Controls[X][1]

int x; //控件距窗体左边界位置,大小等于Controls[X][2]

int y; //控件距离窗体上边界位置,大小等于Controls[X][3]

in w; //控件宽度,大小等于Controls[X][4]

int h; //控件高度,大小等于Controls[X][5]

int idvalue; //控件的id值,大小等于Controls[X][6]

struct pdacontrolslist *next; //指向下一条记录

};

(3)显示状态链

    系统各种状态之间的转换用显示状态链(static int ShowStateList[22][11])进行控制。它是一个动态结构的双向链表,在应用程序初始化阶段,遍历pda_init.h文件中定义的状态转换顺序静态数组,动态生成该状态链。这种数据结构为电话簿和记事本的添加和修改操作提供了方便。由于电话簿和记事本的操作状态转换是单向的,所以采用双向链表结构实现线性状态的前后续状态转换。

Static int ShowStateList[22][11]数组的具体定义格式如下:

 Y=0Y=1Y=2Y=3Y=4 Y=11
ShowStateList[X][Y]状态1状态2状态3状态4状态5状态11
ShowStateList[10][11]3839400NULLNULL

其中“状态1,2,3……”依次表示当前状态链的不同状态。“0”是结束标志,“NULL”表示没有数据。

在程序初始化的过程中,由这个静态数组生成一个双向链表数组OperationStates[22]。双向链表的每个节点数据域是一个整型常量。它的值等于与其相对应的状态控件链数组(PDAStateControlsList[53])的下标值。例如,如果节点的数据域为12,则对应PDAStateControlsList[12]状态控件链。具体的生成格式如图5所示。

    (4)显示状态栈

显示状态栈存放的数据是显示状态编号。具体数据是从初始状态到达当前状态所经过的所有状态,栈数据处理由int StateStackPop()、intStateStackGet()、void StateStackPush(int a)三个函数实现。具体处理情况如图6所示。

1.2 编程实现

有了以上一套数据结构之后,具体编写程序代码时,根据不同功能所要完成的任务和使用的数据结构,可归类待编写模块,从而提供代码复用率。如电话簿和记事本就可以共用同一套程序代码。因此,关于PDA的所有系统模块划分如图7所示。

系统各个模块间的连接用状态栈以及一些公共变量实现,根据状态栈的信息确定工作到了哪个状态,根据公共变量获得完成操作所需要的信息。程序每进入一个新模块调用的通用处理函数,先屏蔽主界面上固定键盘内的所有按钮,再显示本界面的按钮,最后将固定按钮连接到进入模块的处理函数中,实现固定键盘操作含义的转变。

3 小结

利用状态图分析和以上定义的数据结构,可以进行任何界面的显示。这种编程方法有两大优点。

①快速方便地完成界面的任意修改。当需要改变界面时,只要改变控制数组中的值和控件静态数组中的值即可,无需修改任何代码。

②扩展嵌入式系统功能。只要进一步进行状态图分析,把新功能的状态顺序关系填写到状态链数组中,就可以完成新功能的进入和返回。

论文指导 开题报告   论文格式   论文撰写   论文答辩   论文答谢   
经济论文 税收论文   证券投资论文   房地产论文   金融论文   投资论文   财政论文   西经论文   国际贸易论文   计量经济论文   国民经济论文   保险信托论文   地方经济   国际经济   新经济学   经济学理论   经济学其他   
理工论文 计算机与信息技术论文   电子通信网络论文   自动化论文   土建水利论文   交通运输论文   化学与化工论文   石油与能源动力论文   机械制造论文   矿业与冶金论文   工程论文   生命环境论文   材料科学与工程   综合论文   
管理论文 电子商务论文   会计论文   财务论文   人力资源论文   市场营销论文   企业管理论文   信息管理论文   旅游管理论文   工商管理论文   公共管理论文   物流管理论文   
法律论文 民法论文   刑法论文   诉讼法论文   行政法论文   国家法   宪法论文   土地资源环境法论文   国际法论文   劳动保障论文   商法论文   经济法论文   法史学论文   法理学论文   司法制度论文   
行政论文 中国政治论文   国际政治论文   管理科学论文   思想政治教育论文   国家行政管理论文   政治理论论文   哲学理论论文   三个代表论文   社工论文   
英语论文 学术英语论文   商务英语论文   科技英语论文   英语教学论文   
艺术论文 艺术理论论文   电视艺术论文   电影艺术论文   音乐论文   舞蹈论文   戏剧论文   美术论文   
农学论文 农艺学(园林,林学)论文   渔业论文   水产论文   植物保护论文   农业基础科学论文   综合论文   
医学论文 医学论文写作方法   基础医学论文   医药卫生论文   临床医学论文   药学论文   特种医学论文   护理学论文   
文史论文 中国史论文   世界史论文   考古论文   文字学论文   语法论文   中国文学论文   世界文学论文   文学理论论文   文艺美学论文   文学评论论文   经典名著赏析论文   新闻传媒学论文   社会学论文   
教育教学论文 语文论文   数学论文   英语论文   物理论文   美术论文   音乐论文   地理论文   化学论文   历史论文   体育论文   思想政治论文   生物自然论文   信息技术论文   德育管理论文   素质教育论文   教学管理论文   综合论文   
[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:个开放源码的嵌入式仿真环境——SkyEye
下一篇文章:基于嵌入式Linux的BACnet控制器软件设计
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
服务电话:020-61131011;020-61131022 转82 投诉电话:020-61131011;020-61131022 转88 传真:020-61131022
电子邮件:paperease@vip.163.com paper@126.com 服务QQ:130008818 130009919
© 2002-2004 轻松论文网 赣ICP备05004673号 网络实名:轻松论文