你好
我想在接收器节点中看到发送数据的发送器节点的短地址和扩展地址。 我该怎么做????
提前感谢您的任何回复
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.
你好
我想在接收器节点中看到发送数据的发送器节点的短地址和扩展地址。 我该怎么做????
提前感谢您的任何回复
谢谢主席先生,
实际上、我尝试按如下方式进行实验:
首先、在温度传感器样片应用中、所有终端设备都被分配了唯一的名称、协调器充当恒温器。
任何终端设备(加入网络后)发送的第一个数据包包含分配给该设备的名称。
我希望在加入过程之后立即将加入网络的任何设备的扩展地址、短地址和名称保存在列表中、并通过串行通信在我的 PC 上查看结果。
为此、我在我的示例恒温器应用中的"zclSampleThermostat_ProcessInReportCmd"函数中编写了此代码。
----------------------------------------
//全局变量
int i=0;
int z=0;
char * Income 数据=NULL;
//
静态空 zclSampleThermost_ProcessInReportCmd (zclIncomingMsg_t *pInMsg)
{zclReportCmd_t * pInTempSensorReport;
zclReportCmd_t *pOutDemandReport;
uint8 outDemandBuffer[sizeof (zclReportCmd_t)+(2 * sizeof (zclReport_t))]];
pInTempSensorReport =(zclReportCmd_t *) pInMsg->attrCmd;
uint8 ext_Addrs_list[100][Z_EXTADDR_LEN];
int8 short_Addrs_list[100];
char *name_list[100];
In쫕 죫_data=&pInTempSensorReport->attrList[0].attrData[0];
if (zclIncomingMsg_t.zclHdr.transSeqNum=0)
{
if (ii = 0)
{
short_Addrs_list[0]=pInMsg->srcAddr.addr.shortAddr;
OSAL_memcpy (ext_Addrs_list[0]、pInMsg->srcAddr.addr.extAddr、Z_EXTADDR_LEN);
NAME_LIST[0]=收入数据;
}
其他
{
for (ii = 1;ii < 100;ii +)
if (ext_Addrs_list[i]=pInMsg->srcAddr.addr.extAddr)
{
short_Addrs_list[i]=pInMsg->srcAddr.addr.shortAddr;
}
否则 if (ext_Addrs_list[i]!=pInMsg->srcAddr.addr.extAddr)
{z=z+1;
short_Addrs_list[z]=pInMsg->srcAddr.addr.shortAddr;
OSAL_memcpy (ext_Addrs_list[z]、pInMsg->srcAddr.addr.extAddr、Z_EXTADDR_LEN);
name_list[z]=Income _data;
HalUARTWrite (HAL_UART_PORT_0、name_list[z]、5);
HalUARTWrite (HAL_UART_PORT_0、&SHORT_Addrs_list[z]、2);
HalUARTWrite (HAL_UART_PORT_0、ext_Addrs_list[z]、8);
}
}
}
----------------------------------------------------
我在 C 编译器中编写了一个类似的代码、它可以正常工作、但它在堆栈中崩溃。 我尝试根据堆栈标准编写代码、但仍然无法正常工作。 可以帮助我解决问题吗?