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.

[参考译文] CC2531EMK:清除缓冲区的时间。

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1074692/cc2531emk-how-much-time-for-buffer-to-clear-up

部件号:CC2531EMK

您好,

我意识到,在一次发送多个命令后,AF_DATA_Request_SRSP 会以0x11状态响应;看 zstack.h 文件,这意味着缓冲区已满。

在我的源代码(代码片段下面)中,我要做的是:  

  • 我发送了第一个命令。
  • 获取状态。
  • 如果等于0x11,则表示缓冲区已满,因此我只需等待2秒钟,然后重新发送命令。
  • 并从头开始重新启动

但似乎2秒不足以让缓冲区清空。

我不能等待来自 Zed 的数据确认或任何类型的 ACK。

public synchronized boolean setSetPoint(int nwkAddr, float temperature)
    {
        int valoreFormatoZStack = (int)(temperature * 100);
        
        int[] pacchetto = DoPacket.AF_DATA_REQUEST_WRITE_ATTRIBUTE( nwkAddr,
                                                                    DoPacket.HVAC,
                                                                    DoPacket.OCCUPIED_HEATING_SETPOINT,
                                                                    valoreFormatoZStack);
        if(!this.writeArray(pacchetto)){
             return false;
        }
           

        boolean status = waitForCommandResponse();

        if(this.lastResponseMessage == 0x11)
        {

            try
            {
                Thread.sleep(2000);
            }
            catch(InterruptedException thError)
            {

                return false;
            }
            
            //Recursive call.
            this.setSetPoint(nwkAddr, temperature);
        }
        
        return status;
    }

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

    我们在 e2e.ti.com/.../cc2531emk-how-many-commands-can-a-cc2531emk-dongle-manage-at-once 上推荐了您

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

    你好,Luca,

    您的泽德的投票周期是多长?  ZC 在轮询数据之前无法将数据发送到睡眠端设备。   消息超时需要 Nwk_INDIRECT _MSG_TIMEOUT 秒,并在 ZC 上丢弃(默认为7秒)。  因此,如果泽德的轮询周期较慢,则消息将在 ZC 上排队,而不会被传输到目的地。  嗅探器日志可能会显示,在 Zed 最终根据代码的逻辑过程请求数据后,连续传输几个相同的命令。

    此致,
    瑞安