如果传感器节点的能量水平小于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.
答案 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
表示门的输出部分。