主题中讨论的其他器件:SysConfig
工具与软件:
似乎我们遇到的情况是、单个传感器能够连接到两个不同的收集器。 我不认为这是可能的、因为 sensor.c 文件中只允许一个地址与收集器进行通信。 这是否可能在 MAC 级别实现?如果可能、如何阻止这种情况的发生?
Kevin
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.
工具与软件:
似乎我们遇到的情况是、单个传感器能够连接到两个不同的收集器。 我不认为这是可能的、因为 sensor.c 文件中只允许一个地址与收集器进行通信。 这是否可能在 MAC 级别实现?如果可能、如何阻止这种情况的发生?
Kevin
尊敬的 Kevin:
默认行为是传感器一次仅连接到一个收集器。
如果您希望将多个收集器与一个传感器配合使用、我会引导您查看该应用手册、其中介绍了一种方法:
https://www.ti.com/lit/swra734
但是、如果我正确理解您的意思、您希望传感器与一个收集器配对和连接。 如果传感器断开连接、它仍然应该仅尝试连接到配对的收集器。 传感器寻找不同收集器的唯一情况是由用户启动。 是这样吗?
谢谢、
Marie H.
Marie H
是的、我们只想将集电极与传感器配对、而不允许其他集电极配对。 当通过同时打开多个收集器上的网络来启动配对时、我们可以看到这一点。 这就是当我们注意到这个问题时、收集器最多可以将四个(或更多)传感器配对到一个传感器。 每个收集器都将看到相同的传感器、并将传感器信息的更新提供给它们。
我们消除这种行为非常重要。 你知道什么原因可能导致这种情况吗? 我们可以看看什么才能理解为什么会发生这种情况并制止这种情况?
Kevin
Marie H
为什么此代码不能在 cllc.c 中用于自动选择不同的 PAN ID?
静态 void configureStartParam (uint8_t 通道)
{
/*解析传入信标以搜索其他信标
*使用此 PAN ID 存在协调器*/
while (coordInfoBlock.panID ==(findChannel (coordInfoBlock.panID、channel)))
{
/*存在另一个具有此 PAN ID 的协调器、
*所以我们改变了我们的 PAN ID*/
coordInfoBlock.panID = coordInfoBlock.panID + 1;
}
}
Kevin
您好!
以下是收集器扫描其他收集器的 PAN ID 并选择一个新收集器的建议。
请注意、这仅适用于非信标模式。
#define MAX_NUM_PEDESD_COLLECTOR 50
3.更改函数 sendScanReq ()以期望 MAX_NUM_Expectors 定义的最大结果数。
scanREQ.maxResults = MAX_NUM_Expected_collectors;
4.修改 scanCnfCb()函数以循环遍历活动扫描结果、并将找到的 PAN ID 添加到 PAN ID 列表。
//将所有找到的 PAN ID 添加到列表中
对于(uint8_t i = 0;i < pData->resultListSize;i++)
{
addToPANList (&(pData->Result.pPanDescriptor[i]));
}
5. 收集器通常只关心所选信道上的 PAN ID。 为了确保 PAN ID 在各个通道之间是唯一的、添加以下函数。
/*!
*@简短 查找 PAN 描述符列表中的 PAN 描述符
*
*@param panID -要搜索的 PAN ID
*
*@ 如果已获取则返回 PAN ID、否则为0
*/
静态 uint16_t findPanID (uint16_t panID)
{
/*在 PAN 描述符列表中搜索该 panID */
panDescList_t* pItem = pPANDesclist;
while (pItem!= NULL)
{
if (pItem->panDescList.coordPanId == panID)
{
返回(pItem->panDescList.coordPanId);
}
pItem = pItem->pNext;
}
return (CLLC_PAN_NOT_FOUND);
}
6. 在 configureStartParam()期间调用函数。 它会跳过通道检查、因此无论哪个通道、它都不会使用与任何扫描通道相同的 PAN ID。
while (coordInfoBlock.panID =(findPanID (coordInfoBlock.panID)))
谢谢、
Marie H.