如果他的问题已经以某种方式提出,我很抱歉。如何避免定时器堆叠
我目前正在重写在Linux内核中的振动驱动器。我改变它的原因是由于获得振动电机的特定速度而导致过度强烈的振动。为了解决这个问题,我实现了一个类似于PWM的控制器,它可以在达到最大加速度之前的某个特定时间停止电机,最后它会一直重复这个动作。
有一个很大的问题使用键盘时,主要是明显的。如果振动器在非常短的时间内过于频繁地切换,则计时器往往会叠加时间,导致滞后和振动延迟。一次键入多个键时可轻松实现此缺陷。
为了向您演示此事件,我创建了一个小图。
红色区域指示定时器重叠。振动1和2之间的重叠导致第二次振动的延迟,将其移出原位。
我来防止这一问题的主要思想是,如果前面的震动尚未结束振动合并成一个。例如振动2将简单地加入振动1.
另一种方法是简单地使用堆叠震动单一的振动,例如,振动2可以简单地使用振动1.仅存的一点为什么将这项工作?那么,因为我实施的振动控制器仅适用于100ms以下的时间,这意味着如果一次发送垃圾邮件至击键,振动时间差别不会显而易见,相反,这两个击键应形成并共享单个振动。
最后我的问题,我怎么可能让一个函数检查它本身它被再次调用。或者至少增加一个时间让功能检查是否在短时间内多次发送垃圾信息?
专注于从一个问题衍生的一个问题。不要给我们提供不必要的信息,不要试图回答你的问题,不要道歉这没有意义,明确你要问什么,修正错字,“几乎完美”没有意义,它是完美的或破碎的。很明显,它并不完美。 – Malina