如何使用 setDoubleValue() 在 Omnet++ 中更改参数运行时

How to change parameters Runtime in Omnet++ with setDoubleValue()

我正在模拟一个有 2 个无线主机和 1 个接入点的网络。在运行期间,节点通过访问模块并使用 setDoubleValue(0) 将接入点的发射功率设置为零(以将其关闭)。但新值永远不会生效。 AP 的消息继续到达节点。我在这里做错了什么?我想在模拟 运行 时关闭接入点。请帮忙。

cSimulation *currentSimulation = getSimulation();
cModule *tx = nullptr;
tx=currentSimulation->getModuleByPath("agranet.ap.wlan[0].radio.transmitter");
tx->par("power").setDoubleValue(0);

//cPar& po = tx->par("power");
//po.setDoubleValue(0);

我想在模拟 运行 时关闭接入点。

你不能在初始化后更改 power 参数,因为它是一个 non-volatile 参数,所以它的值在初始化时读取并在之后缓存。您只能操作易失性 NED 参数,其中 C++ 代码已经为此准备好了。

另一方面,您想要实现的是在特定时间禁用节点,这就是 ScenaioManager 的用途:

https://inet.omnetpp.org/docs/users-guide/ch-scenario-scripting.html