Создание или появление узла во время выполнения в Omnet (INET)

Мне нужно создать узел во время выполнения с параметрами, аналогичными другим узлам. Для этого я создаю динамический узел в NED-файле как: —

host_send4: meshnode {
parameters:
@dynamic;
@display("p=1000,535;r=200,green;i=device/smallrouter");
}

Чтобы реализовать этот узел в файле C ++, я добавлю этот код: —

    cModuleType *meshnode1 = cModuleType::get("inet.networklayer.manetrouting.PASER.meshnode");
cModule *mod = meshnode1->createScheduleInit("host_send4", this);
cDisplayString& dispstr =  mod->getDisplayString();
dispstr.parse("p=1000,535;r=200,green;i=device/smallrouter");

mod->buildInside();
mod->scheduleStart(simTime()+5*beaconInterval);

Но я не могу его правильно построить. Я думаю, что мне нужен любой пример по этому вопросу. Может ли кто-нибудь помочь мне указать пример в INETMANET mixim или любой другой oment Framework, где эта функциональность уже реализована.
Спасибо за вашу помощь.

Я также хотел создать узел статически, который появится в симуляции в более поздний момент времени. Возможно ли это, и есть ли какой-либо пример с появлением и исчезновением узла во время выполнения в INET или другой среде OMNET.

1

Решение

Руководство пользователя OMNeT ++ имеет раздел посвященный этому. В соответствии с этим вам не нужно buildInside() а также scheduleStart() когда используешь createScheduleInit(),

Пример того, как это выполняется, можно увидеть в рамках Veins — более точно в TraCIScenarioManager. Важные строки для вас:

cModule* parentmod = getParentModule();
if (!parentmod) error("Parent Module not found");

cModuleType* nodeType = cModuleType::get(type.c_str());
if (!nodeType) error("Module Type \"%s\" not found", type.c_str());

cModule* mod = nodeType->create(name.c_str(), parentmod, nodeVectorIndex, nodeVectorIndex);
mod->finalizeParameters();
mod->getDisplayString().parse(displayString.c_str());
mod->buildInside();
mod->scheduleStart(simTime() + updateInterval);
2

Другие решения


По вопросам рекламы [email protected]