实现一下有多个源节点向多个目标节点发数据,(每个源节点判断离它最近的Sink节点,然后向它发数据)
总体思想:是通过数组给源节点和目标节点建立一个映射表,即对应的源节点指向对应的Sink节点。在数据包传输的过程中通过读取包中的源节点的ID,我这里是用源节点的ID得到目标节点的ID,当然也可以直接读取包中的目标节点的ID。进行包的传输。
在这里定义了2、3、761、252这四个节点为源节点。9、288、606、1、771为Sink节点。具体效果如下。当然你还可以增加节点。
具体的改动代码:wsn_global.h中
//目标节点数量
intGlobalSinkNum[1];
intGlobalSrcNum[1];
//目标节点地址和坐标
intGlobalSinkID[801];
intFinalGlobalSinkIDForSrcId[801];
intGlobalSinkIDForCalculateDistance[801];
int FinalNumID[801];
doubleGlobalSinkX[801];
doubleGlobalSinkY[801];
//源节点地址和坐标
intGlobalSrcID[801];
doubleGlobalSrcX[801];
doubleGlobalSrcY[801];
计算的核心代码:NotifyAppSendData中
这里是求出发包的源节点,距离它最近的目标节点的ID
TemSrcToSinkDistance=1410;
for(i