按鈕事件處理介面
更多...
#include <GpioButton.h>
|
virtual void | onPressed (void) override |
| 按鈕按下事件回調
|
|
virtual void | onReleased (void) override |
| 按鈕釋放事件回調
|
|
按鈕事件處理介面
GPIO 按鈕事件處理介面
定義按鈕狀態變化時的事件回調方法介面。使用者需要繼承此結構體 並實現所有純虛函數來處理按鈕按下和釋放事件。
此介面採用觀察者模式(Observer Pattern),當按鈕狀態發生轉換且 通過防彈跳驗證後,會自動呼叫對應的事件處理方法。
- 事件觸發時機:
-
- 事件特性:
- **單次觸發**:每次狀態轉換只會觸發一次,不會重複觸發
- **防彈跳保護**:只有通過防彈跳驗證的穩定狀態變化才會觸發事件
- **非阻塞**:事件處理方法應該快速執行,避免阻塞系統運行
- 實現範例:
public:
void onPressed(void) override {
Serial.println("Button Pressed!");
}
void onReleased(void) override {
Serial.println("Button Released!");
}
};
MyButtonHandler handler;
button.setEvent(&handler);
- 註
- 所有方法都是純虛函數,必須在派生類中完整實現
-
事件處理方法會在 update() 方法中被呼叫,應避免耗時操作
- 警告
- 事件處理方法中不應呼叫可能導致遞迴的 GpioButton 方法
-
確保派生類物件的生命週期長於 GpioButton 物件
- 參閱
- GpioButton::setEvent()
-
GpioButton::update()
◆ onPressed()
virtual void ufm::hw::GpioButton::Event::onPressed |
( |
void | | ) |
|
|
pure virtual |
按鈕按下事件回調
當按鈕從釋放狀態轉換為按下狀態時被呼叫。此方法在防彈跳時間 結束且狀態確認穩定後才會被觸發,確保是真實的按鈕操作。
- 觸發條件:
- 按鈕狀態從 false(釋放)變為 true(按下)
- 新狀態已通過防彈跳時間驗證
- 這是一次新的狀態轉換(不是重複觸發)
- 實現建議:
- 方法應該快速執行,避免阻塞系統
- 可以設定旗標、傳送訊息或觸發其他非阻塞操作
- 避免在此方法中執行複雜的計算或 I/O 操作
- 註
- 此方法必須在派生類中實現(純虛函數)
-
方法執行時按鈕狀態已確定為按下狀態
- 警告
- 不要在此方法中呼叫 GpioButton 的 update() 方法,避免遞迴
- 參閱
- onReleased()
-
GpioButton::update()
◆ onReleased()
virtual void ufm::hw::GpioButton::Event::onReleased |
( |
void | | ) |
|
|
pure virtual |
按鈕釋放事件回調
當按鈕從按下狀態轉換為釋放狀態時被呼叫。此方法在防彈跳時間 結束且狀態確認穩定後才會被觸發,確保是真實的按鈕操作。
- 觸發條件:
- 按鈕狀態從 true(按下)變為 false(釋放)
- 新狀態已通過防彈跳時間驗證
- 這是一次新的狀態轉換(不是重複觸發)
- 實現建議:
- 方法應該快速執行,避免阻塞系統
- 可以設定旗標、傳送訊息或觸發其他非阻塞操作
- 避免在此方法中執行複雜的計算或 I/O 操作
- 註
- 此方法必須在派生類中實現(純虛函數)
-
方法執行時按鈕狀態已確定為釋放狀態
- 警告
- 不要在此方法中呼叫 GpioButton 的 update() 方法,避免遞迴
- 參閱
- onPressed()
-
GpioButton::update()
此結構(structure) 文件是由下列檔案中產生: