//输出到串口
if(pkt->srcAddr.addr.shortAddr==(*(ShortAddress_Table+Device_1)))
{
osal_memcpy( DeviceDataTemp_1+1, pkt->cmd.Data, pkt->cmd.DataLength);//第0位空出来存储信息是何种功能设备的
if(*(ShortAddress_Table+Device_1+Factionflag)==TempAndHumidity)
{
HalUARTWrite(0, "Device_1 T&H:", 13); //提示接收到数据
HalUARTWrite(0, pkt->cmd.Data, pkt->cmd.DataLength); //输出接收到的数据
HalUARTWrite(0, "\n", 1); // 回车换行
DeviceDataTemp_1[0]=TempAndHumidity;//数据缓存的第0位是TempAndHumidity break;
}
else if(*(ShortAddress_Table+Device_1+Factionflag)==TempTest)
{
HalUARTWrite(0, "Device_1 TEMP:", 14); //提示接收到数据
HalUARTWrite(0, pkt->cmd.Data, pkt->cmd.DataLength); //输出接收到的数据
HalUARTWrite(0, "\n", 1); // 回车换行
DeviceDataTemp_1[0]=(uint8)TempTest; break;
}
}
if(pkt->srcAddr.addr.shortAddr==(*(ShortAddress_Table+Device_2)))
{
osal_memcpy(DeviceDataTemp_2+1, pkt->cmd.Data, pkt->cmd.DataLength);
if(*(ShortAddress_Table+Device_2+Factionflag)==TempAndHumidity)
{
HalUARTWrite(0, "Device_2 T&H:", 13); //提示接收到数据
HalUARTWrite(0, pkt->cmd.Data, pkt->cmd.DataLength); //输出接收到的数据
HalUARTWrite(0, "\n", 1); // 回车换行
DeviceDataTemp_2[0]=TempAndHumidity;
break;
}
else if(*(ShortAddress_Table+Device_2+Factionflag)==TempTest)
{
HalUARTWrite(0, "Device_2 TEMP:", 14); //提示接收到数据
HalUARTWrite(0, pkt->cmd.Data, pkt->cmd.DataLength); //输出接收到的数据
HalUARTWrite(0, "\n", 1); // 回车换行
DeviceDataTemp_2[0]=(uint8)TempTest;
break;
}
这是我在SampleApp_MessageMSGCB函数里case SAMPLEAPP_P2P_CLUSTERID:下写的代码想把2个终端的传送的数据通过协调器传到串口显示出来
ShortAddress_Table是我定义的全局uint16指针用来存储网路中终端的网络地址 第0位指向终端1的网络地址第1位指终端1的功能 第2位指终端2的网络地址一次类推
Device_1和Device_2分别定义为0x00和0x02 用来只是ShortAddress_Table中哪位指的那个设备的 网络地址 Factionflag定义为1
TempAndHumidity和TempTest分别定义为0x0000和0x0001来区别设备 的功能
DeviceDataTemp_1和DeviceDataTemp_2为我在SampleApp_MessageMSGCB里定义的uint8指针来存储 终端传来数据的缓存
想问问为何我加上DeviceDataTemp_1【0】和DeviceDataTemp_2【0】这两个赋值语句时 串口助手就收不到2个终端发来的数据了 去掉就可以用了;
而且我把DeviceDataTemp_1【0】和DeviceDataTemp_2【0】用指针数组代替的时候也是这个问题 或者把他们定义成全局变量时也是出现这个问题。。。
VV:
加上你这个语句以后,用断点调试的方式,协调器有没有收到无线数据?
如果有收到的话,是不是串口打印有问题,看你的代码,确实没有这个信息输出到串口的函数调用啊!