静脉中传输有关车辆和 Rsu 的消息

问题描述 投票:0回答:1

首先我在网络中添加了一个类似 RSU 的单元作为中央控制单元 我在 TraciDemo11p 和 TraciDemoRSU11p 中设置计时器来发送消息

void TraCIDemo11p::handleMessage(cMessage* msg) {
    
    if (msg->isSelfMessage()) {
        TraCIDemo11pMessage* wsm = new TraCIDemo11pMessage();
        populateWSM(wsm);
        std::string arrayAsString;
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                arrayAsString += std::to_string(mij[i][j]) + " ";
            }
            arrayAsString.pop_back();
            arrayAsString += "\n";
        }
        std::string newWSM_str = arrayAsString;
        wsm->setAMessage(newWSM_str.data());
        wsm->setDemoData(mobility->getRoadId().c_str());
        wsm->setSenderAddress(myId);
        sendDown(wsm);
        scheduleAt(simTime() + 53, msg);
    }
    else {
        DemoBaseApplLayer::handleMessage(msg);
    }

}

tyvoid TraCIDemoRSU11p::handleMessage(cMessage* msg)
{

    if (msg->isSelfMessage()) {
        TraCIDemo11pMessage* wsm = new TraCIDemo11pMessage();
        populateWSM(wsm);
        wsm->setAMessage(RSUsavedAMessage.data());
        wsm->setSenderAddress(myId);
        sendDown(wsm);
        scheduleAt(simTime() + 250, msg);
    }
    else {
        DemoBaseApplLayer::handleMessage(msg);
    }
}

当车辆数量小于等于20时代码可以正常运行。当我将车辆数量调整为30时出现以下错误,我该如何纠正错误

<!> TraCI server reported status 255 executing command 0xc4 ("Edge '' is not known."). -- in module (veins::TraCIDemo11p) RSUExampleScenario.node[31].appl (id=207), at t=250.000244822538s, event #49654

希望您能告诉我错误发生在哪里以及如何修复,谢谢

c++ omnet++ veins sumo
1个回答
0
投票

如果您在 Veins 中使用 Erlangen 示例,则会出现错误,因为 CV 从 RSU 接收到意外消息。在 erlangen 静脉代码中,RSU 正在重新广播一条包含演示数据的消息,其中包括 CV 应重新路由到的边缘(请参阅 VEINs 文档 以了解此示例的工作原理)。但是,您的新消息不包含此边缘,导致 CV 尝试解析空消息或不正确的消息。要解决此问题,请确保您的消息包含 CV 可以处理的正确边缘信息,或者更改 CV 的 onWSM 函数中的逻辑,以便它不会尝试解析并重新路由到边缘。

© www.soinside.com 2019 - 2024. All rights reserved.