该消息首先由车辆1发送并由车辆2转发。
net.ned如下。
simple vehicle1
{
@display("i=device/wifilaptop;p=230,40");
gates:
input radioIn @directIn;
}
//
// TODO documentation
//
simple vehicle2
{
@display("i=device/wifilaptop;p=230,40");
gates:
input radioIn @directIn;
}
//
// TODO documentation
//
network Network
{
@display("bgb=225,175");
types:
submodules:
vehicle1: vehicle1 {
@display("p=44,87");
}
vehicle2: vehicle2 {
@display("p=188,87");
}
}
[vehicle1.cc如下。
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class vehicle1 : public cSimpleModule
{
cMessage *msg;
// The following redefined virtual function holds the algorithm.
virtual void initialize();
virtual void handleMessage(cMessage *msg);
};
// The module class needs to be registered with OMNeT++
Define_Module(vehicle1);
void vehicle1::initialize()
{
EV << "client initialize" << "\n";
msg = new cMessage("Emergency");
send(msg, "out");
}
void vehicle1::handleMessage(cMessage *msg)
{
// msg = new cMessage("Emergency")
// send(msg, "out"); // send out the message
}
并且vehicle2.cc如下。
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
class vehicle2 : public cSimpleModule
{
cMessage *msg;
// The following redefined virtual function holds the algorithm.
virtual void initialize();
virtual void handleMessage(cMessage *msg);
};
// The module class needs to be registered with OMNeT++
Define_Module(vehicle2);
void vehicle2::initialize()
{
}
void vehicle2::handleMessage(cMessage *msg)
{
msg = new cMessage("Emergency");
send(msg, "out"); // send out the message
}
但是打印了以下错误。
send()/ sendDelayed():没有这样的门或门向量:'out'-在模块(vehicle1)Network.vehicle1(id = 2)中,在网络初始化期间]]
我如何构造它?
消息首先由车辆1发送,然后由车辆2转发。 net.ned如下。 simple vehicle1 {@display(“ i = device / wifilaptop; p = 230,40”);闸门:输入radioIn @ ...
您模拟了一个无线电网络,因此您应该使用sendDirect()
而不是send()
,因为车辆之间没有连接。要使用sendDirect()
发送消息,必须获得一个指向目标模块的指针和门的名称。这是一个示例如何做: