我正在尝试模拟这样一种场景:在固定数量的车辆到达目的地节点之后,之后的车辆应该到达不同的目的地。为此我想在目的地有一个RSU,在它之后发送消息已收到固定数量的车辆??
答案 0 :(得分:0)
类似于你所问的东西是在静脉演示场景中完成的:
RSU方
void TraCIDemoRSU11p::sendMessage(std::string blockedRoadId) {
sentMessage = true;
t_channel channel = dataOnSch ? type_SCH : type_CCH;
WaveShortMessage* wsm = prepareWSM("data", dataLengthBits, channel, dataPriority, -1,2);
wsm->setWsmData(blockedRoadId.c_str());
sendWSM(wsm);
}
wsm->setWsmData(blockedRoadId.c_str())
对邮件被阻挡道路的ID进行编码,因此车辆可以读取该信息。
车辆方
void TraCIDemo11p::onData(WaveShortMessage* wsm) {
findHost()->getDisplayString().updateWith("r=16,green");
annotations->scheduleErase(1, annotations->drawLine(wsm->getSenderPos(), mobility->getPositionAt(simTime()), "blue"));
if (mobility->getRoadId()[0] != ':') traciVehicle->changeRoute(wsm->getWsmData(), 9999);
if (!sentMessage) sendMessage(wsm->getWsmData());
}
traciVehicle->changeRoute()
用于更改路线。