请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号: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; }