DTFrame鴻蒙設(shè)備開發(fā)的“一鍵調(diào)用”框架
DTFrame 是一個(gè)為鴻蒙設(shè)備開發(fā)而打造的“一鍵調(diào)用”框架。
框架設(shè)計(jì)文章
- 實(shí)現(xiàn)按鍵“按下事件”和“釋放事件”的通用框架(V0.0.1)
- 實(shí)現(xiàn)物理按鍵的“長(zhǎng)按事件”(按鍵通用框架 V0.0.2
- 實(shí)現(xiàn)S1,S2,User三個(gè)物理按鍵的獨(dú)立事件-上(解決思路分析)
- 實(shí)現(xiàn)S1,S2,User三個(gè)物理按鍵的獨(dú)立事件-下(DTButton-V0.0.3)
代碼示例
DTButton
static void Button_Callback(const char* sender, BtnEvent event)
{
printf("[dt4sw] Button_Callback() : %s -> %d\n", sender, event);
if( event == Pressed ) { /* Pressed == 1 按下事件處理代碼 */ }
if( event == LongPressed ) { /* LongPressed == 2 長(zhǎng)按事件處理代碼 */ }
if( event == Released ) { /* Released == 4 釋放事件處理代碼 */ }
}
static void* DTBtnDemo_Task(const char* arg)
{
int ret = 0;
printf("[dt4sw] DTBtnDemo_Task()\n");
ret += DTButton_Init(); // 初始化按鍵事件處理上下文
/* 設(shè)置GPIO_8按鍵的回調(diào)函數(shù),同時(shí)需要響應(yīng)按下,釋放以及長(zhǎng)按三個(gè)事件 */
/* 按鍵觸發(fā)順序: Pressed -> LongPressed(optional) -> Released */
ret += DTButton_Enable("GPIO_8", Button_Callback, Pressed | LongPressed | Released);
/* 分別設(shè)置S1, S2, USER按鍵的回調(diào)函數(shù) */
ret += DTButton_Enable("S1", Button_Callback, Released);
ret += DTButton_Enable("S2", Button_Callback, Pressed | LongPressed | Released);
ret += DTButton_Enable("USR", Button_Callback, LongPressed);
if( ret == 0 )
{
while(1)
{
usleep(100000);
}
DTButton_Disable("GPIO_8"); // 取消 GPIO_8 按鍵的所有按鍵事件
DTButton_Disable("S1"); // 取消 S1 按鍵的所有按鍵事件
DTButton_Disable("S2"); // 取消 S2 按鍵的所有按鍵事件
DTButton_Disable("USR"); // 取消 USER 按鍵的所有按鍵事件
DTButton_Deinit(); // 關(guān)閉按鈕事件處理上下文
}
else
{
printf("[dt4sw] Falied to enable button!\n");
}
return (void*)arg;
}評(píng)論
圖片
表情
