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