omnet++ - RSU 与车辆之间的重复通信
问题描述
我在使用 VEINS 时遇到了一些麻烦。我想模拟 RSU 和 Vehicle 之间的通信。在模拟开始时,RSUMsgInit
向所有车辆广播一条消息,之后车辆也Metrics
向 RSU 广播一条消息。但是RSU无法收到Metrics
消息,我不知道原因,有人可以帮助我吗?这是我的代码(我使用的是 omnet 5.6.2、相扑 1.8.0 和静脉 5.1)
// MyVeinsAppRSU.cc
void MyVeinsAppRSU::initialize(int stage)
{
...
// send message "sendMsgInit" at 70 second of simulation
scheduleAt(simTime()+70,sendMsgInit);
}
void MyVeinsAppRSU::handleSelfMsg(cMessage* msg)
{
MsgInit* msg_init = new MsgInit();
BaseFrame1609_4* WSM = new BaseFrame1609_4();
WSM->encapsulate(msg_init);
populateWSM(WSM);
// send out WSM from lowerLayer of Application of RSU
send(WSM,lowerLayerOut);
}
void MyVeinsAppRSU::handleLowerMsg(cMessage* msg)
{
BaseFrame1609_4* WSM = check_and_cast<BaseFrame1609_4*>(msg);
//Decapsulation packet from WSM
cPacket* pkt = WSM->getEncapsulatedPacket();
// translate packet to Metrics
Metrics* MT = dynamic_cast<Metrics*>(pkt);
EV << "send message Vehicle id: " << MT->getVehicleId() << "Receive successfully !!!!!!!!!!!" << endl;
}
// MyVeinsAppCar.cc
void MyVeinsAppCar::handleLowerMsg(cMessage* msg)
{
BaseFrame1609_4* WSM = check_and_cast<BaseFrame1609_4*>(msg);
cPacket* enc = WSM->getEncapsulatedPacket();
MsgInit* MI = dynamic_cast<MsgInit*>(enc);
// initialize as follower
findHost()->getDisplayString().setTagArg("i", 1, "black");
//after receive MsgInit, send Metrics out(next step: handleSelfMsg)
if (sendMetrics->isScheduled()) {
cancelEvent(sendMetrics);
}
scheduleAt(simTime() + 1,sendMetrics);
}
void MyVeinsAppCar::handleSelfMsg(cMessage* msg)
{
cModule* vehicle = getParentModule();
TraCIMobility* traci = dynamic_cast<TraCIMobility*>(vehicle->getSubmodule("veinsmobility", 0));
TraCICommandInterface::Vehicle* traciVehicle = traci->getVehicleCommandInterface();
if(msg == sendMetrics){
Metrics* msg_metrics = new Metrics();
msg_metrics->setVehicleId(this->getParentModule()->getIndex());
msg_metrics->setSpeed(traci->getSpeed());
BaseFrame1609_4* WSM = new BaseFrame1609_4();
WSM->encapsulate(msg_metrics);
populateWSM(WSM, -1);
send(WSM,lowerLayerOut);
EV << "send Metrics!!"<< endl;
}
}
先感谢您。
解决方案
推荐阅读
- angular - Typescript http.get 错误:没有重载匹配此调用
- dart - 想要将会话空闲超时添加到较旧的 AngularDart (v1.24.0 SDK) Web 应用程序
- c# - 当请求正文中的属性之一具有“@”符号时,如何提交 POST 请求?
- bash - docker-machine ssh 试图在本地机器上运行部分命令
- typescript - 从接口扩展以添加新属性会导致“Type X is not generic”
- python - 两个总和解决方案不起作用不知道出了什么问题,我该如何解决我的解决方案?
- inno-setup - 如果我创建了自己的组件选择页面而不是使用嵌入式页面,如何在 [Files] 部分安装文件?
- r - 如何不从 R 的数据集中读取注释行?
- javascript - 获取后 console.log 不显示消息
- unity3d - 如何使用 unity 和 vuforia 在物理对象上播放视频?