|

楼主 |
发表于 2018-8-23 08:52:35
|
显示全部楼层
本帖最后由 ssssssss 于 2018-8-23 08:55 编辑
题目:多功能按键设计。利用一个I/O口,接一个按键,实现3功能操作:单击 + 双击 + 长按。
============================================================================
用户基本操作定义:
1。短按操作:按键按下,按下时间<1s,属于一次短按操作
2。长按操作:按键按下,按下时间>1s,属于一次长按操作
在正常0.5s内无按键操作为启始按键扫描条件下,扫描按键将产生以下3种按键事件:
1。长按事件:任何1次出现的长按操作都属于长按事件
2。单击事件:1次短按操作后,间隔0.5内没有短按操作
3。双击事件:2次短按操作间隔时间<0.5s,则2次短按操作为1次双击事件,且2次短按都取消
特别操作情况定义:
1。短按操作和长按操作间隔<0.5s,以及,长按操作和短按操作间隔<0.5s,均不产生双击事件
2。连续n次(n为奇数)短按操作,且间隔均<0.5s,产生(n-1)/2次双击事件+1次单击事件
3。连续n次(n为偶数)短按操作,且间隔均<0.5s,产生n/2次双击事件
对按键操作者的建议:
由于按键的多功能性质,建议操作者每次在单击/长按/双击按键事件发生后,隔0.5s后再进行下一次的按键操作。因为在特别操作情况下,程序是保证按定义进行判断和处理的,主要是怕操作者自己记不清楚导致操作失误。
对软件设计者的要求:
1。应该全面进行分析,给出严格定义和判断条件,如上所示。如果自己都不清楚,你的设计出的系统就不稳定,不可靠。
2。在1的基础上,编写出符合要求的程序,并进行全面测试。
=================================================
通过以上这个看似简单的按键,看在应用中如何变化,以及如何在实际产品中全面、可靠的进行设计。
=======================================================================================================
后续:
这个是一个网友要求我做的东西,他买了我编写的教材,学习了里面的状态机按键设计,但还是不能灵活的使用。我提出让一些有兴趣的朋友做一下,大家讨论,(见http://www.ourdev.cn/bbs/bbs_con ... ge_no=1&bbs_id=1003,28楼),但是很少人给出满意的回答。甚至是这样的回答:“晕,参加电设的也有很多强人,虽然不一定是精英,但还是很有实力的,这种题目很多人都很早就会做了,没必要当作电设的训练题。(见该贴30楼的回答)”。
这个如同我去年挑战一个北大高才生一样,真本事没有,就是嘴硬。
既然别人不感“兴趣”,我编写代码,实现这个简单的多功能按键。这也是对这位购买我编写书的朋友的一种答谢吧。
写完后,还想扩展一点,发点“偏见”如下:
相比国际上的一些品牌产品,国内的很多东西都做不精。其中系统分析和软件设计占有重要的因素。其实不是不想做的好,而是根本没有能力做好!
如上这样一个简单的多功能按键,都分析不透,设计不出好的代码,就不要谈上天下海的吧。D车追尾就是发生了特殊情况,设计中根本没有考虑周全,加上工作人员的不负责,产生如此大的灾难。
最近频繁出现的塌桥、电梯事故、火车出事,都是上天对现在浮躁社会的报应。我们都抱怨别人不负责,浮躁,那么你自己呢?
别人,别的行业我没有资格讲不好,但是对于正在学习的本专业大学生,尤其是要参加全国大学生电子设计大赛的学生,你做这个题目能拿多少分?评估一下有多少能力和水平?
实际上,现在的全国大学生电子设计大赛也变成是一个浮躁的产物,学校和学生都指望它能贴金,对于真正培养和锻炼人的目的和作用,实际上只是挂在前面遮羞布了。
|
|