Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Omnet++ Omnetpp.ned文件参数的默认值_Omnet++ - Fatal编程技术网

Omnet++ Omnetpp.ned文件参数的默认值

Omnet++ Omnetpp.ned文件参数的默认值,omnet++,Omnet++,我试图熟悉Omnetpp,所以我正在做TicToc示例。但在那里我发现了一点我不明白:为什么limit的默认值不起作用?限制总是设置为5,只有当我像在Toc5中那样将其设置为其他值时 这里是来自Txc5::initialize的日志 Initializing module Tictoc5, stage 0 Tictoc5.tic: Initializing module Tictoc5.tic, stage 0 Tictoc5.tic: limit is 10 Tictoc5.tic: tic

我试图熟悉Omnetpp,所以我正在做TicToc示例。但在那里我发现了一点我不明白:为什么limit的默认值不起作用?限制总是设置为5,只有当我像在Toc5中那样将其设置为其他值时

这里是来自Txc5::initialize的日志

Initializing module Tictoc5, stage 0
Tictoc5.tic: Initializing module Tictoc5.tic, stage 0
Tictoc5.tic: limit is 10 
Tictoc5.tic: tic's counter is set to 10
Tictoc5.tic: Sending initial message
Tictoc5.toc: Initializing module Tictoc5.toc, stage 0
Tictoc5.toc: limit is 5 
Tictoc5.toc: toc's counter is set to 5
在这里你可以看到,议会的计数器设置为10,这是可以的,但toc的计数器是5。 我不明白为什么它没有设置为20,就像我在int limit=default20中所说的那样

我有5.ned:

simple Txc5
{
parameters:
    bool sendMsgOnInit = default(false);
    int limit = default(20);
    @display("i=block/routing");
gates:
    input in;
    output out;
}

simple Tic5 extends Txc5
{
parameters:
    @display("i=,cyan");
    sendMsgOnInit = true;
    limit = 10;
}

simple Toc5 extends Txc5 
{
parameters:
    @display("i=,gold");
}

network Tictoc5 
{
submodules:
    tic: Tic5;
    toc: Toc5;

connections:
    tic.out --> {  delay = 100ms; } --> toc.in;
    tic.in <-- {  delay = 100ms; } <-- toc.out;
}
我有txc5.cc

#include <string.h>
#include <omnetpp.h>


class Txc5 : public cSimpleModule
{
private:
    int counter;

  protected:
    virtual void initialize();
    virtual void handleMessage(cMessage *msg);
};

Define_Module(Txc5);

void Txc5::initialize()
{
    counter = par("limit");
    EV << "limit is " << (int)par("limit") << " \n";
    EV << getName() << "'s counter is set to " << counter << "\n";
    if (par("sendMsgOnInit").boolValue() == true)
    {
        // The `ev' object works like `cout' in C++.
        EV << "Sending initial message\n";
        cMessage *msg = new cMessage("tictocMsg");
        send(msg, "out");
    }
}

void Txc5::handleMessage(cMessage *msg)
{
    counter--;
    if(counter == 0) {
        EV << getName() << "'s counter reached zero, deleting message \n";

    } else {
        EV << getName() << "'s counter is " << counter << "\n";
        EV << "Received message `" << msg->getName() << "', sending it out again\n";
        send(msg, "out");
    }
}

参数的默认值取自NED,前提是omnetpp.ini文件中没有与此参数匹配的条目,并且该参数不是硬编码的-稍后解释。在适用于TICTO5示例的omnetpp.ini中,有以下条目:*.limit=5 因此,对于Toc5,限值等于5。 然而,在NED行中Tic5的定义中:limit=10表示limit参数的值硬编码为10。根据硬编码参数:

无法被omnetpp.ini中的值覆盖 文件 不再接受默认值
参数的默认值取自NED,前提是omnetpp.ini文件中没有与此参数匹配的条目,并且该参数不是硬编码的-稍后解释。在适用于TICTO5示例的omnetpp.ini中,有以下条目:*.limit=5 因此,对于Toc5,限值等于5。 然而,在NED行中Tic5的定义中:limit=10表示limit参数的值硬编码为10。根据硬编码参数:

无法被omnetpp.ini中的值覆盖 文件 不再接受默认值