为什么找不到gate
Why can't gate not be found
每当我尝试 运行 我的模拟时,我都会收到消息
sendDelayed(): No such gate or gate vector: 'rdrsucess1' -- in module (rdr) radr.rdrchk1 (id=2), during network initialization
这是我的 NED 代码:
simple rdr
{
gates:
input in[];
output out[];
}
//
network radr
{
@display("bgb=356,232");
submodules:
rdrchk1: rdr {
@display("p=49,41");
}
rdrfail1: rdr {
@display("p=207,146");
}
rdrsucess1: rdr {
@display("p=207,48");
}
connections:
rdrchk1.out++ --> { } --> rdrfail1.in++;
rdrchk1.out++ --> { } --> rdrsucess1.in++;
}
这是我的 C++ 代码:
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class rdr : public cSimpleModule
{
protected:
// The following redefined virtual function holds the algorithm.
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
// The module class needs to be registered with OMNeT++
Define_Module(rdr);
void rdr::initialize()
{
int v1 = rand() % 100;
int v2 = rand() % 100;
int v3 = rand() % 100;
if (strcmp("rdrchk1", getName()) == 0) {
cMessage *msg = new cMessage("objectcheck");
if (v1<78|| v2 < 82 || v3 <69){
send(msg, "rdrsucess1");
}
else{
send(msg, "rdrfail1");
}
}
}
void rdr::handleMessage(cMessage *msg)
{
send(msg, "out");
}
这是我的 INI 代码:
[General]
network = radr
record-eventlog = true
我只需要知道如何更改“send(msg, “rdrsucess1”);”这样我就可以从 rdrcheck1 向 rdrsucess1 发送一条消息。此信息应该允许我也修复 rdrfail1。谢谢你的时间。
简单模块rdr
中没有门rdrsucess1
。该模块有一个名为 out
的输出门。此外,请注意 gate out
是一个矢量门。因此,您应该使用类似的方式发送消息:
int n = .... // index of particular output gate
send(msg, "out", n);
每当我尝试 运行 我的模拟时,我都会收到消息
sendDelayed(): No such gate or gate vector: 'rdrsucess1' -- in module (rdr) radr.rdrchk1 (id=2), during network initialization
这是我的 NED 代码:
simple rdr
{
gates:
input in[];
output out[];
}
//
network radr
{
@display("bgb=356,232");
submodules:
rdrchk1: rdr {
@display("p=49,41");
}
rdrfail1: rdr {
@display("p=207,146");
}
rdrsucess1: rdr {
@display("p=207,48");
}
connections:
rdrchk1.out++ --> { } --> rdrfail1.in++;
rdrchk1.out++ --> { } --> rdrsucess1.in++;
}
这是我的 C++ 代码:
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class rdr : public cSimpleModule
{
protected:
// The following redefined virtual function holds the algorithm.
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
// The module class needs to be registered with OMNeT++
Define_Module(rdr);
void rdr::initialize()
{
int v1 = rand() % 100;
int v2 = rand() % 100;
int v3 = rand() % 100;
if (strcmp("rdrchk1", getName()) == 0) {
cMessage *msg = new cMessage("objectcheck");
if (v1<78|| v2 < 82 || v3 <69){
send(msg, "rdrsucess1");
}
else{
send(msg, "rdrfail1");
}
}
}
void rdr::handleMessage(cMessage *msg)
{
send(msg, "out");
}
这是我的 INI 代码:
[General]
network = radr
record-eventlog = true
我只需要知道如何更改“send(msg, “rdrsucess1”);”这样我就可以从 rdrcheck1 向 rdrsucess1 发送一条消息。此信息应该允许我也修复 rdrfail1。谢谢你的时间。
简单模块rdr
中没有门rdrsucess1
。该模块有一个名为 out
的输出门。此外,请注意 gate out
是一个矢量门。因此,您应该使用类似的方式发送消息:
int n = .... // index of particular output gate
send(msg, "out", n);