显示状态栈存放的数据是显示状态编号。具体数据是从初始状态到达当前状态所经过的所有状态,栈数据处理由int StateStackPop()、intStateStackGet()、void StateStackPush(int a)三个函数实现。具体处理情况如图6所示。
1.2 编程实现
有了以上一套数据结构之后,具体编写程序代码时,根据不同功能所要完成的任务和使用的数据结构,可归类待编写模块,从而提供代码复用率。如电话簿和记事本就可以共用同一套程序代码。因此,关于PDA的所有系统模块划分如图7所示。
系统各个模块间的连接用状态栈以及一些公共变量实现,根据状态栈的信息确定工作到了哪个状态,根据公共变量获得完成操作所需要的信息。程序每进入一个新模块调用的通用处理函数,先屏蔽主界面上固定键盘内的所有按钮,再显示本界面的按钮,最后将固定按钮连接到进入模块的处理函数中,实现固定键盘操作含义的转变。
3 小结
利用状态图分析和以上定义的数据结构,可以进行任何界面的显示。这种编程方法有两大优点。
①快速方便地完成界面的任意修改。当需要改变界面时,只要改变控制数组中的值和控件静态数组中的值即可,无需修改任何代码。
②扩展嵌入式系统功能。只要进一步进行状态图分析,把新功能的状态顺序关系填写到状态链数组中,就可以完成新功能的进入和返回。