mFrame
載入中...
搜尋中...
無符合項目
ufm::hw::GpioButton::Event 結構 參考文件abstract

按鈕事件處理介面 更多...

#include <GpioButton.h>

公開方法(Public Methods)

virtual void onPressed (void) override
 按鈕按下事件回調
 
virtual void onReleased (void) override
 按鈕釋放事件回調
 

詳細描述

按鈕事件處理介面

GPIO 按鈕事件處理介面

定義按鈕狀態變化時的事件回調方法介面。使用者需要繼承此結構體 並實現所有純虛函數來處理按鈕按下和釋放事件。

此介面採用觀察者模式(Observer Pattern),當按鈕狀態發生轉換且 通過防彈跳驗證後,會自動呼叫對應的事件處理方法。

事件觸發時機:
  • onPressed(): 當按鈕從釋放狀態轉換為按下狀態時觸發
  • onReleased(): 當按鈕從按下狀態轉換為釋放狀態時觸發
事件特性:
  • **單次觸發**:每次狀態轉換只會觸發一次,不會重複觸發
  • **防彈跳保護**:只有通過防彈跳驗證的穩定狀態變化才會觸發事件
  • **非阻塞**:事件處理方法應該快速執行,避免阻塞系統運行
實現範例:
class MyButtonHandler : public ufm::hw::GpioButton::Event {
public:
void onPressed(void) override {
// 處理按鈕按下事件
Serial.println("Button Pressed!");
// 執行按下時的動作...
}
void onReleased(void) override {
// 處理按鈕釋放事件
Serial.println("Button Released!");
// 執行釋放時的動作...
}
};
// 使用方式
MyButtonHandler handler;
button.setEvent(&handler);
按鈕事件處理介面
Definition GpioButton.h:327
所有方法都是純虛函數,必須在派生類中完整實現
事件處理方法會在 update() 方法中被呼叫,應避免耗時操作
警告
事件處理方法中不應呼叫可能導致遞迴的 GpioButton 方法
確保派生類物件的生命週期長於 GpioButton 物件
參閱
GpioButton::setEvent()
GpioButton::update()

函式成員說明文件

◆ onPressed()

virtual void ufm::hw::GpioButton::Event::onPressed ( void )
pure virtual

按鈕按下事件回調

當按鈕從釋放狀態轉換為按下狀態時被呼叫。此方法在防彈跳時間 結束且狀態確認穩定後才會被觸發,確保是真實的按鈕操作。

觸發條件:
  • 按鈕狀態從 false(釋放)變為 true(按下)
  • 新狀態已通過防彈跳時間驗證
  • 這是一次新的狀態轉換(不是重複觸發)
實現建議:
  • 方法應該快速執行,避免阻塞系統
  • 可以設定旗標、傳送訊息或觸發其他非阻塞操作
  • 避免在此方法中執行複雜的計算或 I/O 操作
此方法必須在派生類中實現(純虛函數)
方法執行時按鈕狀態已確定為按下狀態
警告
不要在此方法中呼叫 GpioButtonupdate() 方法,避免遞迴
參閱
onReleased()
GpioButton::update()

◆ onReleased()

virtual void ufm::hw::GpioButton::Event::onReleased ( void )
pure virtual

按鈕釋放事件回調

當按鈕從按下狀態轉換為釋放狀態時被呼叫。此方法在防彈跳時間 結束且狀態確認穩定後才會被觸發,確保是真實的按鈕操作。

觸發條件:
  • 按鈕狀態從 true(按下)變為 false(釋放)
  • 新狀態已通過防彈跳時間驗證
  • 這是一次新的狀態轉換(不是重複觸發)
實現建議:
  • 方法應該快速執行,避免阻塞系統
  • 可以設定旗標、傳送訊息或觸發其他非阻塞操作
  • 避免在此方法中執行複雜的計算或 I/O 操作
此方法必須在派生類中實現(純虛函數)
方法執行時按鈕狀態已確定為釋放狀態
警告
不要在此方法中呼叫 GpioButtonupdate() 方法,避免遞迴
參閱
onPressed()
GpioButton::update()

此結構(structure) 文件是由下列檔案中產生: