Omnet++ Omnet++;简单无线节点

Omnet++ Omnet++;简单无线节点,omnet++,Omnet++,Iam正在尝试为MANET网络创建简单的无线节点,它可以向范围内的其他节点发送消息。在INET中实现的解决方案还包含我不需要的其他层,如IP、传输和应用程序 我是omnet++新手,所以我有点挣扎。我想用放射性输入创建一个完全属于自己的节点,但我不知道如何只实现远程通信,而且我还需要节点移动性 其他的解决方案是只使用INET框架中的RadioMedia,但我不知道怎么做 有人能给我一些如何实现我的目标的建议吗?正如我所说的,我只需要创建一个移动主机,它可以向范围内的所有其他主机发送定义的消息 编

Iam正在尝试为MANET网络创建简单的无线节点,它可以向范围内的其他节点发送消息。在INET中实现的解决方案还包含我不需要的其他层,如IP、传输和应用程序

我是omnet++新手,所以我有点挣扎。我想用放射性输入创建一个完全属于自己的节点,但我不知道如何只实现远程通信,而且我还需要节点移动性

其他的解决方案是只使用INET框架中的RadioMedia,但我不知道怎么做

有人能给我一些如何实现我的目标的建议吗?正如我所说的,我只需要创建一个移动主机,它可以向范围内的所有其他主机发送定义的消息

编辑:我尝试使用iDealRadioMedia创建我的简单模块并连接到它。这是内德的档案

import inet.physicallayer.common.packetlevel.Radio;
import inet.common.figures.DelegateSignalConfigurator;
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
import inet.node.inet.INetworkNode;
import inet.node.inet.WirelessHost;
import inet.physicallayer.contract.packetlevel.IRadioMedium;
import inet.visualizer.integrated.IntegratedCanvasVisualizer;
import inet.linklayer.contract.IWirelessNic;
import inet.networklayer.common.InterfaceTable;

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

module Pokusny
{
    parameters:
       @display("i=device/wifilaptop");
       int numRadios = default(1);
       @networkNode;

    gates:
         input radioIn[numRadios] @directIn;

    submodules:
        mynode: Txc1;
        wlan[numRadios]: <default("Ieee80211Nic")> like IWirelessNic {
            parameters:
                @display("p=216,406,row,60;q=queue");
        }
        interfaceTable: InterfaceTable {
            parameters:
                @display("p=53,300;is=s");
        }
    connections allowunconnected:     
        for i=0..sizeof(radioIn)-1 {
            radioIn[i] --> { @display("m=s"); } --> wlan[i].radioIn;
            wlan[i].upperLayerOut -->  mynode.in;
            wlan[i].upperLayerIn <--  mynode.out;
        }
}

network WirelessC
{
    parameters:
        string hostType = default("WirelessHost");
        string mediumType = default("IdealRadioMedium");

        @display("bgb=650,500;bgg=100,1,grey95");
        @figure[title](type=label; pos=0,-1; anchor=sw; color=darkblue);

        @figure[rcvdPkText](type=indicatorText; pos=420,20; anchor=w; font=,20; textFormat="packets received: %g"; initialValue=0);
        @statistic[rcvdPk](source=hostB_rcvdPk; record=figure(count); targetFigure=rcvdPkText);
        @signal[hostB_rcvdPk];
        @delegatesignal[rcvdPk](source=hostB.udpApp[0].rcvdPk; target=hostB_rcvdPk);

    submodules:
        visualizer: IntegratedCanvasVisualizer {
            @display("p=580,125");
        }

        configurator: IPv4NetworkConfigurator {
            @display("p=580,200");
        }
        radioMedium: <mediumType> like IRadioMedium {
            @display("p=580,275");
        }
        //figureHelper: DelegateSignalConfigurator {
        //    @display("p=580,350");
        //}
        hostA: Pokusny {
            @display("p=50,325");
        }
        hostB: Pokusny {
            @display("p=450,325");
        }
}
和.ini文件

network = WirelessC
sim-time-limit = 25s


*.host*.wlan[0].typename = "IdealWirelessNic"
*.host*.wlan[0].mac.useAck = false
*.host*.wlan[0].mac.fullDuplex = false
*.host*.wlan[0].radio.transmitter.communicationRange = 500m
*.host*.wlan[0].radio.receiver.ignoreInterference = true

*.host*.**.bitrate = 1Mbps
当我运行模拟时,它要求输入Interfacetable参数,我不知道在那里输入什么,因为我在遍历功能代码时没有找到它(我不得不添加它,因为如果它不是子模块,它会抛出丢失的错误)。现在我越来越

找不到getCointainingNode()节点模块它应该具有模块中WirelessC.interfaceTable的属性名networkNode。。。。网络初始化期间


< >编辑:我添加了NETWorkNog作为参数,现在我得到了Par Wielcas.Hoo.WLAN(0)定义的PATH‘迁移率’中没有找到的模块。INET仍然是使用的最佳框架


退房。它基本上涵盖了使用无线通信的移动节点构建小场景所需的所有步骤。

我想向您介绍INET的无线教程:

这正是从你的问题开始的。剩下的唯一一件事,就是用一台完全不使用协议的主机替换标准UDP主机,甚至可能实现您自己的主机。整个无线部分将在教程中解释

如果您想检查所使用的模块的源文件,则需要向下走依赖链,因为每个复合ND模块都将(在一点)包含用C++实现的简单模块。 例如,负责分配信号的模块是

idealradiomedia
using。现在,您需要找到直接与该模块通信的节点实现。 从本教程中使用的
WirelessHost
开始,底层模块包括
StandardHost
->
ApplicationLayerNodeBase
->,后者是第一个使用实际实现的子模块的应用程序。 使用的网络适配器在
omnet.ini
中配置为
*.host*.wlan[0]。typename=“IdealWirelessNic”
。本模块依赖于

在所有这些发现之后,您只需查找从Radio.cc到radiomedia.cc的API调用,就可以找到负责发送数据的实际代码。
了解这一继承链,您甚至可以在您觉得合适的级别上使用自定义模块。例如,仅实现您自己的LinklayerNodeBase模块。

我已经介绍了前面提到的教程,但所有示例都只使用.ned和.ini文件,因此没有显示具有行为的实际.cc文件。我只想使用IdealRadio(如果它能够向范围内的所有节点发送自定义消息),但我不知道如何在自定义创建的项目中执行它,如何覆盖它,以及使用哪个函数发送消息等等。谢谢,这更接近我的需要,但我仍然有点不知所措:(因为对于像我这样的新手来说这很复杂。请参见原始答案的编辑。)。
network = WirelessC
sim-time-limit = 25s


*.host*.wlan[0].typename = "IdealWirelessNic"
*.host*.wlan[0].mac.useAck = false
*.host*.wlan[0].mac.fullDuplex = false
*.host*.wlan[0].radio.transmitter.communicationRange = 500m
*.host*.wlan[0].radio.receiver.ignoreInterference = true

*.host*.**.bitrate = 1Mbps