1
我想熟悉Omnetpp,所以我正在做TicToc示例。但在那裏我發現了一個我不明白的問題:爲什麼limit的默認值不起作用?限制始終設置爲5,只有當我將其設置爲其他值時纔像我在Toc5中那樣。Omnetpp .ned參數文件默認值
這裏我的日誌從Txc5 ::初始化
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 = default(20);
說我已經tictoc5.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");
}
}