DTFrame 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
DTFrame 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
DTFrame 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 C/C++ 查看源码 »
操作系统 嵌入式
软件类型 开源软件
所属分类 程序开发常用工具包
开源组织
地区 国产
投 递 者 御坂弟弟
适用人群 未知
收录时间 2021-01-13

软件简介

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;
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

BOM

器件型号 器件厂商 更多信息
{{o.mpn}} {{o.mfr}} 查看

评论

点击加入讨论🔥(1) 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
1 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部