中科蓝讯 多击(6-8击)实现

中科蓝讯 多击(6-8击)实现

  1. bsp_key.h:定义按键值

    可以看到下面key_type_mask占用了0x1f00,所以可以顶多设置为八击

    define KEY_FIVE                0x1B00      //5击
    #define KEY_SIX                0x1C00      //6击
    #define KEY_SEVEN                0x1D00      //7击
    #define KEY_EIGHT                0x1E00      //8击
    #define KEY_TYPE_MASK           0x1f00
    
    #define KSI_PLAY_USER_DEF   (KEY_PLAY_USER_DEF | KEY_SIX)
    #define KSE_PLAY_USER_DEF   (KEY_PLAY_USER_DEF | KEY_SEVEN)
    #define KEI_PLAY_USER_DEF   (KEY_PLAY_USER_DEF | KEY_EIGHT)
    
    #define KSI_PLAY_PWR_USER_DEF   (KEY_PLAY_PWR_USER_DEF | KEY_SIX)
    #define KSE_PLAY_PWR_USER_DEF   (KEY_PLAY_PWR_USER_DEF | KEY_SEVEN)
    #define KEI_PLAY_PWR_USER_DEF   (KEY_PLAY_PWR_USER_DEF | KEY_EIGHT)
    
  2. 改多击检测:

    bsp_key.c修改key_init():

        key_cb.times = 8;  //按键最多检测几击?
    

    改多击检测数组:

    const u16 key_multi_tbl[7] = {
        KEY_DOUBLE, KEY_THREE, KEY_FOUR, KEY_FIVE,KEY_SIX,KEY_SEVEN,KEY_EIGHT
    };
    
  3. 按键检测处理:

    func_bt_message_do函数:

        //六击
        case KSI_PLAY_USER_DEF:
        case KSI_PLAY_PWR_USER_DEF:
             printf("=======SIX TIMES PRESS==============\n");
             break;
            //七击
        case KSE_PLAY_USER_DEF:
        case KSE_PLAY_PWR_USER_DEF:
            printf("========SEVEN TIMES============\n");
            break;
            //八击
        case KEI_PLAY_USER_DEF:
        case KEI_PLAY_PWR_USER_DEF:
            printf("========EIGHT TIMES============\n");
            break;
    
  4. 测试结果:

    image

超过8击的可以看这个博主处理:六击及以上按键消息处理的实现_蓝牙按钮六击-CSDN博客

posted @   阿四与你  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示
主题色彩