Я пытаюсь создать узел во время выполнения в моем модуле в Omnet. Я могу создать его с помощью этого кода, и он отлично работает.
cModule* parentmod = getParentModule();
cModule* grantParentMod = parentmod->getParentModule();
cModule* grantParentMod1 = grantParentMod->getParentModule();
// To check if the module is already created
for (cSubModIterator iter(*grantParentMod1); !iter.end(); iter++)
{
EV << iter()->getFullName()<<endl;
if (iter()->getFullName() == "host_send4")
return;
}
cModuleType *meshnode1 = cModuleType::get("inet.networklayer.manetrouting.PASER.meshnode");
cModule *mod = meshnode1->create("host_send4", grantParentMod1);
cDisplayString& dispstr = getDisplayString();
dispstr.parse("p=1000,535;r=200,green");
mod->finalizeParameters();
mod->buildInside();
mod->scheduleStart(simTime()+2*beaconInterval);
Однако этот модуль не генерируется в желаемом месте вывода моделирования (координаты и дисплей). Я считаю, что созданная здесь строка отображения не привязана к модулю, и поэтому я попытался сделать это следующим образом: -
cDisplayString& dispstr = getDisplayString();
dispstr.parse("p=1000,535;r=200,green");
mod->getDisplayString().set(dispstr);
Но при этом я сталкиваюсь со следующей ошибкой во время выполнения: - Пока не удается получить доступ к строке отображения: параметры еще не установлены. Я знаю, что проблема в mod->getDisplayString().set(dispstr);
Так есть ли другой способ назначить параметр или я делаю небольшую ошибку. Спасибо за эту помощь.