如何在特定的回合中显示omnet ++的结果?

问题描述:

我模拟omnet ++(mixim)中的无线传感器网络,我想分析结果在特定的一轮,如500,1000,1500,2000,2500,3000,3500和4000.我写代码如下,但它的剂量不工作,并在496,492和502的某些回合中显示结果。我如何更改代码以显示我提到的具体的7轮? 代码:如果如何在特定的回合中显示omnet ++的结果?

int rr; 
    rr=static_cast<SensorNode *>(this->getParentModule()->getParentModule()->getSubmodule("node",1)->getSubmodule("netwl"))->GetRound(); 

    if(abs(rr-500)<5 || abs(rr-1000)<5 || abs(rr-1500)<5 || abs(rr-2000)<5 || abs(rr-2500)<5 || abs(rr-3000)<5 || abs(rr-35000)<5 || abs(rr-4000)<5) 
    { 
      char ss1[30]; 
      sprintf(ss1,"Dead_CHs_Round_%d",rr); 
      recordScalar(ss1,nDeadCH); 

你的代码检查rr和你预期的两轮之间的差值小于5小例如

rr = 496 
if (abs(rr-500) < 5 || .....) { 
    // your code 
} 
//--> abs(496 - 500) < 5 
//--> abs(-4) < 5 
//--> 4 < 5 --> true 

所以,你的if语句成为rr = 496如此。 为了避免这种情况,删除abs()<5并改变它像以下:

if(rr == 500 || rr == 1000 || .....) { 
    // your code 
} 
+0

感谢回答我的问题,我已经改变了代码,但在结果是这么想的显示整个查房,我想,它只显示了轮次1000,2500和4000的结果,我写什么来显示另一轮? –

+0

我稍微编辑了我的答案。 你可以发布你的if语句吗?所以我可以看看它。 – Ventu

+0

int rr; () - > getSubmodule(“netwl”)) - > GetRound();返回页首返回页首返回页首返回页首返回页首返回页首 if(rr == 500 || rr == 1000 || rr == 1500 || rr == 2000 || rr == 2500 || rr == 3000 || rr == 3500 || rr == 4000 ) –