Omnet++ OMNET++;将custome无线节点模块连接到wlan

Omnet++ OMNET++;将custome无线节点模块连接到wlan,omnet++,Omnet++,我对OMNET++和INET比较陌生,希望将我创建的用于测量无线指纹(称为指纹)的子模块连接到wlan网关,但在运行时我遇到以下错误: (omnetpp::cGate)NetworkA.hostA.wlan[1]。上层路由:connectTo():门已连接 这是我的.ned文件: import inet.node.inet.INetworkNode; import inet.environment.common.PhysicalEnvironment; import inet.networkla

我对OMNET++和INET比较陌生,希望将我创建的用于测量无线指纹(称为指纹)的子模块连接到wlan网关,但在运行时我遇到以下错误:

(omnetpp::cGate)NetworkA.hostA.wlan[1]。上层路由:connectTo():门已连接

这是我的.ned文件:

import inet.node.inet.INetworkNode;
import inet.environment.common.PhysicalEnvironment;
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.node.wireless.AccessPoint;
import inet.physicallayer.ieee80211.packetlevel.Ieee80211ScalarRadioMedium;
import inet.physicallayer.contract.packetlevel.IRadioMedium;
import inet.visualizer.contract.IIntegratedVisualizer;
import inet.node.inet.WirelessHost;
import inet.node.aodv.AODVRouter;
import inet.applications.udpapp.UDPBasicApp;
//import inet.physicallayer.common.bitlevel.SignalSampleModel;

simple FingerPrinter
{
    gates:
        input in;
        output out;
}

module WHost extends AODVRouter
{
    parameters:
        @networkNode;
        @labels(wireless-node);
    submodules:
        fingerPrinter: FingerPrinter {
            @display("p=429,125");
        }
    //        signal: SignalSampleModel;
    connections:
        //fingerPrinter.in <-- networkLayer.transportOut++;
        //fingerPrinter.out --> networkLayer.transportIn++;
        wlan[1].upperLayerOut --> fingerPrinter.in;
}


network NetworkA
{
    parameters:
        string hostType = default("AODVRouter");
        string mediumType = default("Ieee80211Radio");
        string pathLossType = default("TwoRayGroundReflection");
        @display("bgb=100,100;bgg=100,1,grey95");
    submodules:
        physicalEnvironment: PhysicalEnvironment {
            @display("p=110,0");
        }
        configurator: IPv4NetworkConfigurator {
            @display("p=110,33.33");
        }
        radioMedium: Ieee80211ScalarRadioMedium {
            @display("p=110,66.66");
        }
        visualizer: <default("IntegratedCanvasVisualizer")> like IIntegratedVisualizer if hasVisualizer() {
            @display("p=110,100");
        }
        AP1: AccessPoint {
            @display("p=0,0");
        }
        AP2: AccessPoint {
            @display("p=100,0");
        }
        AP3: AccessPoint {
            @display("p=0,100");
        }
        AP4: AccessPoint {
            @display("p=100,100");
        }
        hostA: WHost {
            @display("p=50,50");
        }

}
导入inet.node.inet.INetworkNode;
导入inet.environment.common.PhysicalEnvironment;
导入inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
导入inet.node.wireless.AccessPoint;
导入inet.physicalayer.ieee80211.packetlevel.Ieee80211ScalarRadioMedium;
导入inet.physicalayer.contract.packetlevel.iradiomedia;
导入inet.visualizer.contract.IIntegratedVisualizer;
导入inet.node.inet.WirelessHost;
导入inet.node.aodv.AODVRouter;
导入inet.applications.udpapp.UDPBasicApp;
//导入inet.physicallayer.common.bitlevel.SignalSampleModel;
简易指纹仪
{
盖茨:
输入;
输出;
}
模块WHost扩展AODV路由器
{
参数:
@网络节点;
@标签(无线节点);
子模块:
指纹师{
@显示(“p=429125”);
}
//信号:信号采样模型;
连接:
//networkLayer.transportIn++中的fingerPrinter.in;
wlan[1]。上层路由-->指纹识别器.in;
}
网络A
{
参数:
字符串hostType=default(“AODVRouter”);
字符串mediumType=默认值(“IEEE801radio”);
字符串pathLossType=默认值(“TwoRayGroundReflection”);
@显示(“bgb=100100;bgg=100,1,灰色95”);
子模块:
物理环境:物理环境{
@显示(“p=110,0”);
}
配置程序:IPv4NetworkConfigurator{
@显示(“p=110,33.33”);
}
无线媒体:IEEE801无线媒体{
@显示(“p=110,66.66”);
}
可视化工具:如IIntegratedVisualizer,如果hasVisualizer()的话{
@显示(“p=110100”);
}
AP1:接入点{
@显示(“p=0,0”);
}
AP2:接入点{
@显示(“p=100,0”);
}
AP3:接入点{
@显示(“p=0100”);
}
AP4:接入点{
@显示(“p=100100”);
}
霍斯塔:谁{
@显示(“p=50,50”);
}
}

有人能帮忙吗?

这是因为您的
谁继承自
AODVRoouter
,它继承自
WirelessHost
,它继承自
StandardHost
,它继承自
NodeBase
。在NodeBase.ned INET中,该门已连接到网络层:

for i=0..sizeof(radioIn)-1 {
    radioIn[i] --> { @display("m=s"); } --> wlan[i].radioIn;
    wlan[i].upperLayerOut --> networkLayer.ifIn++;
    wlan[i].upperLayerIn <-- networkLayer.ifOut++;
}
i=0..sizeof(放射性元素)-1的
{
放射性蛋白[i]-->{@display(“m=s”);}-->无线局域网[i]。放射性蛋白;
wlan[i].上层路由-->网络层.ifIn++;

wlan[i].Upperlayer非常感谢您的回答。但由于我是新手,正如我所说,我不知道如何将我的自定义无线模块配置为默认模块。您能帮忙吗?