我正在NED中使用inout门。我的网络由以对等方式互连在一起的n个简单模块组成。我的问题是这样的: 假设其中一个简单模块接收到一条消息。我如何编写“ handleMessage()”以便将消息发送回它的源(相关的门)?如果需要使用“ getArrivalGateId()”,请告诉我该如何使用它?这种方法行不通:
'send(msg, "gate$o",getArrivalGateId());'
Ned代码如下:
simple TX1
{
gates:
inout gate[];
}
network Network
{
submodules:
drain: TX1 {
@display("p=143,104");
}
tic: TX1 {
@display("p=143,23");
}
pong: TX1 {
@display("p=235,104");
}
toc: TX1 {
@display("p=143,185");
}
ping: TX1 {
@display("p=47,104");
}
connections:
tic.gate++ <--> drain.gate++;
pong.gate++ <--> drain.gate++;
drain.gate++ <--> toc.gate++;
drain.gate++ <--> ping.gate++;
}
tic模块将消息发送到漏极,drain应该仅将此消息发送回tic(而不是其他模块)。源文件如下:
#include <stdio.h>
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class TX1 : public cSimpleModule
{
protected:
virtual void initialize();
virtual void handleMessage(cMessage *msg);
};
Define_Module(TX1);
void TX1::initialize()
{
if (strcmp("tic", getName()) == 0)
{
cMessage *msg = new cMessage("Message");
// int n = gateSize("gate");
send(msg, "gate$o", 0);
}
}
void TX1::handleMessage(cMessage *msg)
{
send(msg, "gate$o",msg->getArrivalGateId());
}
任何人都可以更正此简单代码,以便将消息发送回源代码吗? 非常感谢您。
答案 0 :(得分:1)
insert INTO aa (data) values (Convert(Numeric, date(),102));
对于此调用,您必须指定门索引(而不是门ID)作为第三个参数(send()),因此正确的调用应为:
send(msg, "gate$o",msg->getArrivalGateId());