您好!
我´ve 修改了 rfUARTBridge 示例、使其具有传感器节点和收集器(PAN 协调器)。
因此、收集器始终等待传感器节点发送的数据包。
除了传输/接收顺序外、两侧的结构几乎相同。
传感器节点发送数据包、收集器接收数据包并分析一些字节、1秒(需要很长的测试时间)后将数据包发送回传感器。
收集器不会停止、但传感器 在从收集器接收数据包时不会设置 RF_EventRxEntryDone 位。
´m´m 都是一样的,我不会找到我犯了错的地方。
I´m 在传感器处执行操作的顺序为:
rfHandle = rf_open (&rfObject、&rf_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);
RF_postCmd (rfHandle、(RF_Op*)和 RF_cmdfs、RF_PriorityNormal、NULL、0);
rfPostHandle = RF_postCmd (rfHandle、(RF_Op*)&RF_cmdPropRx、RF_PriorityNormal、&ReceivedOnRFcallback、RF_EventRxEntryDone);
while (1){
检索= 3;
while (检索){
RecRF = 0;
/*取消正在进行的命令= RX 命令连接程序在您转接时执行*/
rfStatus = rf_cancelCmd (rfHandle、rfPostHandle、1);
/*发送数据包*/
RF_runCmd (rfHandle、(RF_Op*)和 RF_cmdPropTx、RF_PriorityHigh、NULL、0);
/*恢复 RF RX */
rfPostHandle = rf_postCmd (rfHandle、(RF_Op*)&RF_cmdPropRx、
RF_PriorityNormal、
ReceivedOnRFcallback (&ReceivedOnRFcallback)
RF_EventRxEntryDone);
等待一个信标
如果信标超时,检索--
否则{
检索= 0;
去睡觉…
}
void ReceivedOnRFcallback (RF_Handle h、RF_CmdHandle ch、RF_EventMask e)
{
IF (E 和 RF_EventRxEntryDone)
{
/*获取当前未处理的数据条目*/
currentDataEntry = RFQueue_getDataEntry ();//从条目加载数据
/*处理数据包数据,位于¤tDataEntry -> data:
*-长度是当前配置的第一个字节
*-数据从第二个字节开始*/
packetLength =*(uint8_t*)(¤tDataEntry -> data);//获取数据包长度(与数据包一起发送)
packetDataPointer =(uint8_t*)(¤tDataEntry -> data + 1);//数据从第二个字节开始
recrf = 1;
if (*(uint8_t*)(¤tDataEntry -> data + 1)==(uint8_t)((node_address & 0xFF00)>> 8))
{
if (*(uint8_t*)(¤tDataEntry -> data + 2)==(uint8_t)(node_address 和0x00FF))
{
/*将有效负载+状态字节复制到数据包变量*/
memcpy (packet、packetDataPointer、(packetLength + 1));
//设置信号量
SemaphoreP_POST (semPcktIn);
}
}
/*将读取条目指针移动到下一个条目*/
RFQueue_nextEntry();
}
}
"e"值始终为2、从不是 RF_EventRxEntryDone
可以有人帮助我吗?
谢谢你
安德烈
