DTFrame鸿蒙设备开发的“一键调用”框架

联合创作 · 2023-09-28 10:25

DTFrame 是一个为鸿蒙设备开发而打造的“一键调用”框架。


框架设计文章



  1. 实现按键“按下事件”和“释放事件”的通用框架(V0.0.1)

  2. 实现物理按键的“长按事件”(按键通用框架 V0.0.2

  3. 实现S1,S2,User三个物理按键的独立事件-上(解决思路分析)

  4. 实现S1,S2,User三个物理按键的独立事件-下(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 长按事件处理代码 */ }
if( event == Released ) { /* Released == 4 释放事件处理代码 */ }
}

static void* DTBtnDemo_Task(const char* arg)
{
int ret = 0;

printf("[dt4sw] DTBtnDemo_Task()\n");

ret += DTButton_Init(); // 初始化按键事件处理上下文

/* 设置GPIO_8按键的回调函数,同时需要响应按下,释放以及长按三个事件 */
/* 按键触发顺序: Pressed -> LongPressed(optional) -> Released */
ret += DTButton_Enable("GPIO_8", Button_Callback, Pressed | LongPressed | Released);

/* 分别设置S1, S2, USER按键的回调函数 */
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(); // 关闭按钮事件处理上下文
}
else
{
printf("[dt4sw] Falied to enable button!\n");
}

return (void*)arg;
}
浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报