实验目标:在第三章原有的模型上,加入多个SINK节点,选择最近的SINK节点进行数据包的传输。
具体实施过程:
1.在理解模型的整体结构的情况下,我增加了几个变量。
//目标节点数量
int GlobalSinkNum[1];
//最终目标节点ID
int FinalGlobalSinkID[1];
//最终目标节点数组下标
int FinalNumID[1];
//目标节点地址和坐标(将这几个变量改为了数组)
int GlobalSinkID[801];
double GlobalSinkX[801];
double GlobalSinkY[801];
同时在SinkInit,NodeInit,functionblock,GPSR,以及NotifyAppSendData和statevariables修改了相应的代码。
下面这段代码的功能是求出离SRC节点最近的Sink节点
TemSrcToSinkDistance=1410;
for(i=1 ;i<= GlobalSinkNum[0];i++)
{
q = sqrt((GlobalSrcX -GlobalSinkX[i])*(GlobalSrcX - GlobalSinkX[i]) + (GlobalSrcY -GlobalSinkY[i])*(GlobalSrcY - GlobalSinkY[i]));
if(q<TemSrcToSinkDistance)
{
TemSrcToSinkDistance=q;
FinalGlobalSinkID