为什么找不到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);

参考:OMNeT++ Simulation Manual