我有一个包含36 lcn的网络拓扑。其中一个大约在network topology中有42个传感器节点。感知数据后我想将数据发送到gcn。为此,数据必须跳到lcn到lcn我使用gate做了这个。我只是转发数据包。但是我想直接将数据包发送到指定的中继节点。当我输入时;
send(packet,"lcnIO$", 7);
它通常给出门大小错误,因为最大门大小是8.我怎么能实现这一点。我的意思是我想从lcn 0直接发送数据包到lcn 7.它们之间有对角线连接。
答案 0 :(得分:0)
send
命令可用于仅通过给定索引的自己的门发送消息。
没有简单的方法从索引选择的节点向量向一个节点发送消息。
我建议你检查每个连接结束时的模块索引。此外,您必须考虑到节点可能没有与索引选择的节点的连接。
假设:
lcn
节点中的输出门称为out
out
是向量packet
发送到lcn
选择的destIndex
节点你可以使用这段OMNeT++
代码:
const char * gateName = "out";
int destIndex = 7; // index of destination lcn
cGate *destGate = NULL;
bool found = false;
int i = 0;
int gateSize = gate(gateName, 0)->size();
do {
destGate = gate(gateName, i++);
cGate *nextGate = destGate->getNextGate();
if (nextGate && nextGate->getOwnerModule()->getIndex() == destIndex) {
found = true;
send(packet, destGate);
}
} while (!found && i < gateSize);
// here: found equals to false means that a packet was not sent