lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1311回复:11

问个技术问题

楼主#
更多 发布于:2005-03-14 22:19
我用状态转移法设计了个键盘处理程序,也就是类似手机的菜单程序。
遇到一个问题:每按一个功能键可以转移到另一个状态。但是到最后一级
是需处理多次按键问题如何解决?也就是说象手机的菜单到了让你处理电话薄的那一级菜单,下一级任务要处理:添加,编辑。。。每个功能都面临多次可能按到同一个按键问题而且还有作出处理。如何解决?是跟据当前的状态在主程序中读取键值在该状态下作出处理,还是在该任务处理函数中完成键值读取?
谁做过给点指导!
回答的好坚决给分,不客气!
l=z=l 我听说,灌水是使分数快速增长的有效方法
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-14 22:55
谢绝灌水
l=z=l 我听说,灌水是使分数快速增长的有效方法
huozee
驱动巨牛
驱动巨牛
  • 注册日期2004-11-09
  • 最后登录2011-08-11
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望166点
  • 贡献值0点
  • 好评度58点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-15 09:13
我用状态转移法设计了个键盘处理程序,也就是类似手机的菜单程序。
遇到一个问题:每按一个功能键可以转移到另一个状态。但是到最后一级
是需处理多次按键问题如何解决?也就是说象手机的菜单到了让你处理电话薄的那一级菜单,下一级任务要处理:添加,编辑。。。每个功能都面临多次可能按到同一个按键问题而且还有作出处理。如何解决?是跟据当前的状态在主程序中读取键值在该状态下作出处理,还是在该任务处理函数中完成键值读取?
谁做过给点指导!
回答的好坚决给分,不客气!


关于这个问题没有准确答案 都可以

这些东西都应改在程序设计最初就确定

然后在搭不同的框架

如果菜单过多(大于200)建议用后一种方式

如果菜单比较少 建议用第一中方式

第一种方式的有点在与 程序的实时处理能力比较强 程序的深度比较浅 容易实现“多任务” 还有一点就是程序的时间可控性比较强 缺点就是如果菜单过多 处理比较繁琐 状态量太多 编程的思维需要更缜密

第二种方式反之
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-15 09:18
#define key_a   11
#define key_b   11
key_a和key_b键值一样,但用途不一

可能你是第一次写这方面的程序,
可以找一些键盘和菜单的例程来参考一下.

这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-15 10:48
[quote]#define key_a   11
#define key_b   11
key_a和key_b键值一样,但用途不一

可能你是第一次写这方面的程序,
可以找一些键盘和菜单的例程来参考一下.

 具体点,该如何处理?能推荐点资料吗?
我的具体应用是一个配料机控制,处理各料值比重。在输入配比时要多次
用到数字键。当状态转移到配比输入函数时我该如何处理,我要多次了用到键盘输入各个物料的重量。
还有,在状态转移法中好像不能向你说的那样定义。因为无法区分。
谢谢!
l=z=l 我听说,灌水是使分数快速增长的有效方法
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-15 13:19
1,状态转移法转移只能用在读取键盘值GetKeyValue( )函数中运用

2,每一个菜单,有自己单独的键盘处理程序,所以即使不同菜单中用同一键值不会有任何影响.

3,菜单是分层的,刚开始是主菜单,要进入子菜单,其实就是调用不同的子功能模块,每一个这样的功能模块都有自己单独的键盘处理函数.
通常如
switch( GetKeyValue() )
{
case KEY_A:
****;
break;

case KEY_B:
****;
break;

case KEY_C:
****;
break;

....
....
default:
****;

}

若此模块中的KEY_A和另一个模块的KEY_C是同一个键,
不会影响的.

因为菜单是分层的,
所以键盘处理也是分层的
......

我手头上只有获得键盘消息和传送LCD显示消息的代码,
和你要求的有一些小差别,
但程序结构基本一致的:

*层次菜单
*分级处理的键盘处理和显示


[编辑 -  3/15/05 by  hzhq1]
这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
hzhq1
驱动老牛
驱动老牛
  • 注册日期2002-12-13
  • 最后登录2012-03-29
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望1054点
  • 贡献值0点
  • 好评度606点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-15 13:29
附件:
mainmenu.c是主菜单,
其他菜单是各下级子菜单,
子菜单中又有子菜单
....
....
附件名称/大小 下载次数 最后更新
2005-03-15_menus.rar (155KB)  0
这是一个,一个风雨交加的,漆黑的夜晚......恩,情节越来越复杂了。
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-16 00:06
谢谢,我要向你学习!
l=z=l 我听说,灌水是使分数快速增长的有效方法
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2005-03-16 09:46
我用状态转移法设计了个键盘处理程序,也就是类似手机的菜单程序。
遇到一个问题:每按一个功能键可以转移到另一个状态。但是到最后一级
是需处理多次按键问题如何解决?也就是说象手机的菜单到了让你处理电话薄的那一级菜单,下一级任务要处理:添加,编辑。。。每个功能都面临多次可能按到同一个按键问题而且还有作出处理。如何解决?是跟据当前的状态在主程序中读取键值在该状态下作出处理,还是在该任务处理函数中完成键值读取?
谁做过给点指导!
回答的好坚决给分,不客气!


你应该好好学习学习 有限状态自动机。
琢磨悟真知
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-16 21:24
我没学过有限状态自动机,我是学自动化的,有限状态机应该是自动控制的内容啊,可是我没没开过这课。数据结构就甭提了,更美学过。C语言是自学的。
l=z=l 我听说,灌水是使分数快速增长的有效方法
lzl
lzl
驱动大牛
驱动大牛
  • 注册日期2001-09-11
  • 最后登录2010-06-22
  • 粉丝1
  • 关注0
  • 积分127分
  • 威望48点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-16 21:27
估计欧要是弄ARM 肯定问题更多,因为编程基础太差。
l=z=l 我听说,灌水是使分数快速增长的有效方法
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2005-03-17 09:25
我没学过有限状态自动机,我是学自动化的,有限状态机应该是自动控制的内容啊,可是我没没开过这课。数据结构就甭提了,更美学过。C语言是自学的。


 :D 有空的时候还是补补好。
琢磨悟真知
游客

返回顶部