工具与软件:
您好!
我在使用基于 rfUARTbridge 示例的程序时遇到问题。
我已经展示了示例的"取消接收、发送数据包、发出接收"部分并将其放置在一个单独的函数 SendPacket 中。
这似乎不会改变示例的行为。
随后、我添加了可 在发生事件时发出 SendPacket 的函数。
正如预期的那样、它也能很好地工作。
但是、我现在添加了几个函数、用来添加要发送的数据、但其中一个函数的行为有误、即2:d 射频函数永远不会完成传输。
我觉得可以很容易地测试传输的状态、但是没有状态
程序不会停止或崩溃、而是在某个库内执行
我打印了前面的 rf_cancelcmd 的结果、它总是在时报告131、0x83
取消操作可以正常工作、但是当我通过调用 sendpacket 将来自代码另一部分的数据包注入时、取消操作将返回3。
所以,对我来说,似乎取消由于某种原因而失败,因此随后的发送
挂起。
我已经检查了所有消息变量和计数、我可以看到
RF_PropTX 在所有情况下都正常。
区别在于、在我发出(在)发送命令时 TX 的状态字通常为0、在发送之前的值为0x3400、我认为它是用于无线电处理器的
需要更新的驱动程序代码(W)以及需要用户程序读取的驱动程序代码(R)、那么它为什么具有一个值(最后状态?)、这一点很重要?
有人知道该看什么吗?
void SendPacket (char * message、int count){
if (count >= 254)
计数= 254;
rf_cmdPropTx.pktLen =计数;
INT I、STATUS;
对于(I=0;I<count;I++)
{
packet[i]= message[i];
}
// 延时(4);
// xprint_schar(GetRssi());
// xprint ("\n");
// while (RF_getRssi(rfHandle)>=-100 ){} //可怜的人 CCA、挂这里直到 RSSI 低于-100、
/*取消正在执行的命令*/
rf_cancelCmd (rfHandle、rfPostHandle、1);//首次停止接收
/*Send packet*/
状态= RF_runCmd (rfHandle、(RF_Op*)& RF_cmdPropTx、RF_PriorityNormal、NULL、0); //然后发送数据包
if (status!= 2){
xprint ("什么?");
}
已发送++;
/*切换绿色 LED 以指示 TX */
GPIO_TOGGLE (CONFIG_GPIO_GLED);
/*恢复 RF RX */
rfPostHandle = rf_postCmd (rfHandle、(RF_Op*)&rf_cmdPropRx、 //three、重新启动接收
RF_PriorityNormal、&ReceivedOnRF 回调
RF_EventRxEntryDone);
}
此致、
Gullik