1

我想UDPBASICBurst在 Veins 中实现该应用程序,但我遇到了问题。我做了如下,但我不知道我是否正确。任何人都可以阐明这个问题吗?

import inet.applications.udpapp.UDPBasicBurst;
import org.car2x.veins.base.modules.*;
import org.car2x.veins.modules.nic.Nic80211p;

……

    udpBasicBurst: UDPBasicBurst {
        @display("p=130,56");
    }`enter code here`
connections allowunconnected:
    nic.upperLayerOut --> appl.lowerLayerIn;
    nic.upperLayerIn <-- appl.lowerLayerOut;
    nic.upperControlOut --> appl.lowerControlIn;
    nic.upperControlIn <-- appl.lowerControlOut;

    veinsradioIn --> nic.radioIn;


    udpBasicBurst.udpOut --> nic.upperControlIn;
    udpBasicBurst.udpIn <-- nic.upperControlOut;
}

import inet.applications.udpapp.UDPBasicBurst;
import org.car2x.veins.base.modules.*;
import org.car2x.veins.modules.nic.Nic80211p;

module Car
{
    parameters:
        string applType; //type of the application layer
        string nicType = default("Nic80211p"); // type of network interface card
        string veinsmobilityType; //type of the mobility module
    gates:
    input veinsradioIn; // gate for sendDirect
submodules:
    appl: <applType> like org.car2x.veins.base.modules.IBaseApplLayer {
        parameters:
            @display("p=60,50");
    }

    nic: <nicType> like org.car2x.veins.modules.nic.INic80211p {
        parameters:
            @display("p=60,166");
    }

    veinsmobility: <veinsmobilityType> like org.car2x.veins.base.modules.IMobility {
        parameters:
            @display("p=130,172;i=block/cogwheel");
    }

    udpBasicBurst: UDPBasicBurst {
        @display("p=130,56");
    }
connections allowunconnected:
    nic.upperLayerOut --> appl.lowerLayerIn;
    nic.upperLayerIn <-- appl.lowerLayerOut;
    nic.upperControlOut --> appl.lowerControlIn;
    nic.upperControlIn <-- appl.lowerControlOut;

    veinsradioIn --> nic.radioIn;


    udpBasicBurst.udpOut --> nic.upperControlIn;
    udpBasicBurst.udpIn <-- nic.upperControlOut;
}
4

1 回答 1

0

您在同一个模块中同时inet.applications.udpapp.UDPBasicBurst导入两者。org.car2x.veins.modules.nic.Nic80211p这可能不会按您希望的方式工作:

简单来说,inet.*命名空间中的模块只期望与来自该命名空间的其他模块交换消息。直到并包括 Veins 4a2,org.car2x.veins.*命名空间中的模块也是如此 - 除了一个值得注意的例外:Veins 4a2TraCIScenarioManager将检查实例化模块是否使用 inet 2.3.0TraCIMobility模块作为其移动子模块。如果是这样,它将相应地移动模块。

这允许您在 INET 2.3.0 主机中使用 Veins 4a2 移动性。

于 2015-10-01T14:24:37.200 回答