如果他的問題已經以某種方式提出,我很抱歉。如何避免定時器堆疊
我目前正在重寫在Linux內核中的振動驅動器。我改變它的原因是由於獲得振動電機的特定速度而導致過度強烈的振動。爲了解決這個問題,我實現了一個類似於PWM的控制器,它可以在達到最大加速度之前的某個特定時間停止電機,最後它會一直重複這個動作。
有一個很大的問題使用鍵盤時,主要是明顯的。如果振動器在非常短的時間內過於頻繁地切換,則計時器往往會疊加時間,導致滯後和振動延遲。一次鍵入多個鍵時可輕鬆實現此缺陷。
爲了向您演示此事件,我創建了一個小圖。
紅色區域指示定時器重疊。振動1和2之間的重疊導致第二次振動的延遲,將其移出原位。
我來防止這一問題的主要思想是,如果前面的震動尚未結束振動合併成一個。例如振動2將簡單地加入振動1.
另一種方法是簡單地使用堆疊震動單一的振動,例如,振動2可以簡單地使用振動1.僅存的一點爲什麼將這項工作?那麼,因爲我實施的振動控制器僅適用於100ms以下的時間,這意味着如果一次發送垃圾郵件至擊鍵,振動時間差別不會顯而易見,相反,這兩個擊鍵應形成並共享單個振動。
最後我的問題,我怎麼可能讓一個函數檢查它本身它被再次調用。或者至少增加一個時間讓功能檢查是否在短時間內多次發送垃圾信息?
專注於從一個問題衍生的一個問題。不要給我們提供不必要的信息,不要試圖回答你的問題,不要道歉這沒有意義,明確你要問什麼,修正錯字,「幾乎完美」沒有意義,它是完美的或破碎的。很明顯,它並不完美。 – Malina