omn​​et ++删除模块元素

时间:2016-05-17 10:14:02

标签: omnet++

如果传感器节点的能量水平小于0,我需要删除传感器节点。每个传感器节点都有一个门。每个传感器节点也连接到LCN.LCN有inout门。  我写了这段代码来删除模块。

if(totPower<0){
       deleteModule();
       callFinish();
    }

它可以工作但是如果另一个请求来到这个lcn来感应数据,Lcn假设这个已删除的传感器模块仍然连接到它并引发连接错误。我怎么能解决这个问题?顺便说一下我只使用Omnet ++,不是,铸币等。

<!> Error in module (LCN) Network.lcn[7] (id=254) at event #188, t=1200: send()/sendDelayed(): gate `lcnSN$o[11]' not connected.

1 个答案:

答案 0 :(得分:1)

首先,您应该将网络NED中的连接声明更改为:

connections allowunconnected:

它允许门保持未连接状态。
其次,callFinish()应该涉及之前 deleteModule()
此外,您必须在发送之前检查门是否已连接。示例代码:

    // i - is an index of gate lcnSN you want to send
    cGate *outGate = gate("lcnSN$o", i);
    if (outGate->isConnected()) {
        send(msg, "lcnSN$o", i);
    } 

后缀$o表示门的输出部分。