我正在尝试在运行时在 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);
所以还有其他方法可以分配参数还是我做一些小错误。感谢您的帮助。