Векторы OMNeT ++ регистрируют 2-кортежа (TV: время + значение) или 3-кортежа (ETV: событие + время + значение) в omnet ++ / Veins? - PullRequest
0 голосов
/ 17 февраля 2020

Я работал с нуля, сгенерированные узлы, сценарий и все самостоятельно, без использования встроенных сценариев вен TRACIDEMORSU или TRACIDEMO.

Мои RSU (3 в количестве) передают пакеты на узлы. Я могу получить значения с помощью векторных кортежей. Здесь я придерживаюсь следующих вопросов и читаю ссылку ниже. Любое руководство будет высоко ценится:

Отдельные данные, полученные от различных отправителей в Veins / OMNET ++

  1. Вещание выполняется от RSU к узлам, использующим для l oop и SendDirect (). Теперь, когда RSU1 отправляет сообщения на узлы, которые они получают, и когда я пытаюсь получить значения. Это также работает правильно. Но когда RSU2 одновременно отправляет сообщение узлам, они снова получают значения RSU2, но не показывают ранее полученное значение RSU1 тем же узлом. Я хочу хранить оба значения в таблице.

Теперь мой вопрос: - 1. Они работают как разные события? Если да, то как бы объединить эти полученные пакеты от разных RSU в одну таблицу. Потому что, наконец, мне нужно сравнить отдельные поля, чтобы подтвердить запрос? Если нет, то снова, как я могу создать таблицу, чтобы я мог сравнить значения отдельных узлов.

Я правильно делаю? У вещания бывает вот так. Я прочитал все эти вещи из руководства OMNET ++. Я надеюсь, что я работаю правильно.

Вот код для справки: в RSU. cc

for (int i = 0; i < noOfWirelessNode; i++) {
            int targetNodeDistance = RSUNode::calculateDistanceFromRSU(i, incomingSenderId);
            EV<<"\ntargetNodeDist = "<<targetNodeDistance;
            bubble("RSU Send Beacon to Vehicle.");
            if(targetNodeDistance <= 1000){
            destModule = cModule::getParentModule()->getSubmodule("vehiclenode",
                    i);
            EV << "\n\ndest Module = " << destModule;
            VehicleModule = omnetpp::check_and_cast<Vehicle*>(destModule);
            inMsg->setPacketGenerateTime(omnetpp::simTime().dbl() + T_window);
            omnetpp::simtime_t sendtime = inMsg->getPacketGenerateTime();
            EV << "\nRSU Broadcast Time = " << sendtime.dbl();

            sendDirect(msg->dup(), VehicleModule, "radioIn");
            }

в транспортном средстве. cc

// here when broadcasting is done by RSU.cc then retrieving the values and storing as a tuple to finally //create a table. But not able to get the combined table.

   typedef std::tuple<int, double> Table;    
        std::vector<Table>NT;
                    NT.push_back(Table(incomingSenderId, beaconRecivingTime.dbl()));
                    EV<<"\n\n********** NT*******\n";
                    for(Table t1:NT){

                             EV<<std::get<0>(t1)<<' ';
                             EV<<std::get<1>(t1)<<' ';

                             EV<<"\n";

                             }

Любая помощь приветствуется.

...