获取两个不同模块的位置

时间:2015-07-08 20:13:25

标签: omnet++

我的网络中有两种类型的子模块。

  1. AdhocHost这是INET框架中的标准定义。
  2. 类型IMobility的模块及其移动类型 类型RandomWPMobility,都是标准的INET模块。
  3. 我可以通过以下代码获取AdhocHost类型的模块的位置:

    module = simulation.getModuleByPath("Mynet.host[1]");
    c = MobilityAccess().get(module)->getCurrentPosition();
    

    host[*]属于AdhocHost类型。

    但是当我用阻塞[1]替换host[1]时(阻塞类型为IMobility),在运行模拟之前会出现此错误:

      

    模块(MyMobileController)中的错误Mynet.mymobilecontroller期间   网络初始化:模型错误:模块(IMobility)移动性不是   找到。

    模块mymobilecontroller是包含这部分代码的模块。该模块不需要移动。它的职责是记录移动模块在网络中的位置。

    有什么问题?

1 个答案:

答案 0 :(得分:2)

' MobilityAccess'代码期望您将 NetworkNode 传递给包含名为mobility且类型为IMobility的子模块的 NetworkNode 。在第一种情况下,它是真的(使用StandardHost)但是在第二种情况下,您直接传递具有IMobility类型的模块。

长话短说,具有IMobility类型的模块意味着存在于网络节点的 INSIDE 而不是网络级别。

解决方案:我不确定阻塞模块应该做什么,但它不应该是一种IMobility,而应该是包含子模块的模块输入IMobility。