动态更改车辆的目标节点

时间:2017-03-17 09:07:27

标签: veins

我正在尝试模拟这样一种场景:在固定数量的车辆到达目的地节点之后,之后的车辆应该到达不同的目的地。为此我想在目的地有一个RSU,在它之后发送消息已收到固定数量的车辆??

1 个答案:

答案 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()用于更改路线。