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.

ZHA 按键如何实现识别长按短按

Other Parts Discussed in Thread: Z-STACK

如题如何实现长短按

  • 请在官网下载Z-Stack Light 协议栈,在里面Zlight的设备里面,实现了这个功能,你可以看下

    static void zllSampleLight_HandleKeys( byte shift, byte keys )
    {
    (void)shift; // Intentionally unreferenced parameter
    #ifdef HAL_BOARD_ZLIGHT
    // Zlight has only a single button
    static uint32 keyPressTime = 0;
    if ( keys )
    {
    keyPressTime = osal_getClock();
    }
    else //key released
    {
    if ( keyPressTime )
    {
    keyPressTime = ( osal_getClock() - keyPressTime );
    if ( keyPressTime <= KEY_HOLD_SHORT_INTERVAL )
    {
    zllTarget_PermitJoin( PERMIT_JOIN_DURATION );
    }
    else if ( keyPressTime > KEY_HOLD_LONG_INTERVAL )
    {
    zllTarget_ClassicalCommissioningStart();
    }
    else
    {
    zllTarget_ResetToFactoryNew();
    }
    keyPressTime = 0;
    }
    }

  • 你好,我想现在也遇到了同样的问题,把zll的例子研究了一天,想改成自己的按键引脚,怎么都实现不了,长按和短按的功能,请问你是怎么实现的,能不能分享下,太谢谢你了!

  • 这部分的代码都是公开的,你要先确定下你使用的I/O口,协议栈里面有没有其他的地方使用到。

  •  不好意思  大牛  ~~本人小白   有点问题请求 ~~望赐教

    为什么我按照你的代码写    zigbee开发板上的按钮并没有根据长按而发送指定的消息~~~