Мне нужно создать узел во время выполнения с параметрами, аналогичными другим узлам. Для этого я создаю динамический узел в 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.
Руководство пользователя 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);