This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHLL-CC26X2R1:如何在简单的中心项目中使用按钮LED代码?

Guru**** 2387830 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1089103/launchxl-cc26x2r1-how-to-use-button-led-code-in-simple-central-project

部件号:LAUNCHTXL-CC26X2R1

我使用了示例项目(simple_Central 和 buttonled),BLEE概念的简单Certral和单个按钮上多个按钮功能的按钮(长按,短按,双击和GetKeyPressDuration),但我不明白如何调用 handle =  button_open(config_BUTTON0, buttonCallbackFxn, params (params);(此 链接引用 ),我们可以在 SimpleCertral中调用它们。 我们试图在 SimpleCentral_init()中调用按钮打开API ,但它给出了NULL值,因为按钮处理程序使用了一个计时器,我们不知道,而且我们 在我们的简单中心项目中已经使用了一个计时器。 我请您向我推荐 任何代码。   

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨,Prasad,

    simple_central示例已经使用了两个按钮菜单中的按钮。 因此,您的呼叫可能无法正常工作,因为外围设备PIN已设置。 请参阅项目自述文件了解有关信息。 此外,您还可以导航到该代码并在  SimpleCentral_init()内找到Board_initKeys()初始化。

    可以使用SimpleCentral_HandleKeys()添加特定的基于pin的功能,SimpleCentral_HandleKeys()是 应用程序中默认设置的callbackFxn (SimpleCentral_keyChangeHandler)张贴事件后调用的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Ammar:

    我们正在同一个项目上工作,我们要在 simple_Central上实现短按和长按功能 ,我们已经 在  Board_initKeys()中实现了另外一个键,这样时间树键在 我们的项目中运行,但第三个键需要长按和短按功能。

     board_key.c中

    static void Board_keyCallback(PIN_Handle hPin, PIN_Id pinId)
    {
    keysPressed = 0;
    #if defined(CC26X2R1_LAUNCHXL) || defined(CC2652RB_LAUNCHXL) || defined(CC13X2R1_LAUNCHXL) || \
    defined (CC13X2P1_LAUNCHXL) || defined (CC13X2P_2_LAUNCHXL) || defined (CC13X2P_4_LAUNCHXL) || \
    defined (CC2652PSIP_LP) || defined (CC2652RSIP_LP) || defined (CC2652R7_LP) || defined (CC1352P7_1_LP) || \
    defined (CC1352P7_4_LP) || defined (CC2651P3_LP) || defined (CC2651R3_LP)
    
    if ( PIN_getInputValue(CONFIG_PIN_BTN1) == 0 )
    {
    keysPressed |= KEY_LEFT;
    }
    
    if ( PIN_getInputValue(CONFIG_PIN_BTN2) == 0 )
    {
    keysPressed |= KEY_RIGHT;
    }
    
    if ( PIN_getInputValue(CONFIG_PIN_BTN3) == 0 )
    {
    keysPressed |= KEY_DOWN;
    }
    #elif defined(CC2650_LAUNCHXL) || defined(CC2640R2_LAUNCHXL) || defined(CC1350_LAUNCHXL)
    if ( PIN_getInputValue(Board_BTN1) == 0 )
    {
    keysPressed |= KEY_LEFT;
    }
    
    if ( PIN_getInputValue(Board_BTN2) == 0 )
    {
    keysPressed |= KEY_RIGHT;
    }
    #elif defined(CC2650DK_7ID) || defined(CC1350DK_7XD)
    if ( PIN_getInputValue(Board_KEY_SELECT) == 0 )
    {
    keysPressed |= KEY_SELECT;
    }
    
    if ( PIN_getInputValue(Board_KEY_UP) == 0 )
    {
    keysPressed |= KEY_UP;
    }
    
    if ( PIN_getInputValue(Board_KEY_DOWN) == 0 )
    {
    keysPressed |= KEY_DOWN;
    }
    
    if ( PIN_getInputValue(Board_KEY_LEFT) == 0 )
    {
    keysPressed |= KEY_LEFT;
    }
    
    if ( PIN_getInputValue(Board_KEY_RIGHT) == 0 )
    {
    keysPressed |= KEY_RIGHT;
    }
    #endif
    
    Util_startClock(&keyChangeClock);
    }


    在Side  SimpleCentral_HandleKeys()中,我们如何 实现 这一点   

    if(Button_EV_LONGPRESSED == (events & Button_EV_LONGPRESSED))
    {
    Function1();
    }
    
    if(Button_EV_LONGPRESSED == (events & Button_EV_SHORTPRESSED))
    {
    Function2();
    }
    
    if(Button_EV_DOUBLECLICKED == (events & Button_EV_DOUBLECLICKED))
    {
    Function3();
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Asutosh,

    请参阅以下相关主题: https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/62.1382万/ccs-cc2640r2f-cc2640</s>2640 2640

    简而言之,您必须创建一个计时器来跟踪您定义的应用程序层的"长按"或"短按"和"双击"功能。 我们在project_zero中有一个基本的示例(参见 Projectzero_bootManagerCheck)。 我建议 创建一个计时器,而不是采用示例中的方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ProjectZer_bootCheck
    </s>403.3932万

    您好Ammar:

    感谢您提供解决方案。它正在工作...!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的跟进。 我现在将此线程标记为闭合。

    如果我已经解决了您的问题,请点击“This Resolved My Issue”(此问题已解决),将该主题标记为“Resolved”(已解决)。 这有助于其他人轻松找到已解析的螺纹。