| 
			 
					阅读:1559回复:11
				 
				问个技术问题
					我用状态转移法设计了个键盘处理程序,也就是类似手机的菜单程序。
 
							遇到一个问题:每按一个功能键可以转移到另一个状态。但是到最后一级 是需处理多次按键问题如何解决?也就是说象手机的菜单到了让你处理电话薄的那一级菜单,下一级任务要处理:添加,编辑。。。每个功能都面临多次可能按到同一个按键问题而且还有作出处理。如何解决?是跟据当前的状态在主程序中读取键值在该状态下作出处理,还是在该任务处理函数中完成键值读取? 谁做过给点指导! 回答的好坚决给分,不客气!  | 
	|
					
						
						
						
						
  | 
	
| 
			 沙发# 
								发布于:2005-03-14 22:55				
			
					谢绝灌水				 
							 | 
	|
					
						
  | 
	
| 
			 板凳# 
								发布于:2005-03-15 09:13				
			我用状态转移法设计了个键盘处理程序,也就是类似手机的菜单程序。 关于这个问题没有准确答案 都可以 这些东西都应改在程序设计最初就确定 然后在搭不同的框架 如果菜单过多(大于200)建议用后一种方式 如果菜单比较少 建议用第一中方式 第一种方式的有点在与 程序的实时处理能力比较强 程序的深度比较浅 容易实现“多任务” 还有一点就是程序的时间可控性比较强 缺点就是如果菜单过多 处理比较繁琐 状态量太多 编程的思维需要更缜密 第二种方式反之  | 
	|
| 
			 地板# 
								发布于:2005-03-15 09:18				
			
					#define key_a   11
 
							#define key_b 11 key_a和key_b键值一样,但用途不一 可能你是第一次写这方面的程序, 可以找一些键盘和菜单的例程来参考一下.  | 
	|
					
						
  | 
	
| 
			 地下室# 
								发布于:2005-03-15 10:48				
			
					[quote]#define key_a   11
 
							#define key_b 11 key_a和key_b键值一样,但用途不一 可能你是第一次写这方面的程序, 可以找一些键盘和菜单的例程来参考一下. 具体点,该如何处理?能推荐点资料吗? 我的具体应用是一个配料机控制,处理各料值比重。在输入配比时要多次 用到数字键。当状态转移到配比输入函数时我该如何处理,我要多次了用到键盘输入各个物料的重量。 还有,在状态转移法中好像不能向你说的那样定义。因为无法区分。 谢谢!  | 
	|
					
						
  | 
	
| 
			 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]  | 
	|
					
						
  | 
	
| 
			 6楼# 
								发布于:2005-03-15 13:29				
			
					附件:
 
							mainmenu.c是主菜单, 其他菜单是各下级子菜单, 子菜单中又有子菜单 .... ....  | 
	|
					
 
  | 
	
| 
			 7楼# 
								发布于:2005-03-16 00:06				
			
					谢谢,我要向你学习!				 
							 | 
	|
					
						
  | 
	
| 
			 8楼# 
								发布于:2005-03-16 09:46				
			我用状态转移法设计了个键盘处理程序,也就是类似手机的菜单程序。 你应该好好学习学习 有限状态自动机。  | 
	|
					
						
  | 
	
| 
			 9楼# 
								发布于:2005-03-16 21:24				
			
					我没学过有限状态自动机,我是学自动化的,有限状态机应该是自动控制的内容啊,可是我没没开过这课。数据结构就甭提了,更美学过。C语言是自学的。				 
							 | 
	|
					
						
  | 
	
| 
			 10楼# 
								发布于:2005-03-16 21:27				
			
					估计欧要是弄ARM 肯定问题更多,因为编程基础太差。				 
							 | 
	|
					
						
  | 
	
| 
			 11楼# 
								发布于:2005-03-17 09:25				
			我没学过有限状态自动机,我是学自动化的,有限状态机应该是自动控制的内容啊,可是我没没开过这课。数据结构就甭提了,更美学过。C语言是自学的。 :D 有空的时候还是补补好。  | 
	|
					
						
  |