отправить функцию как сообщение в омнете

Я использую Veins 4a2 в Omnet ++ 4.6. Я хотел бы отправить информацию, содержащуюся в функции, в виде сообщения на соседние узлы. Как этого добиться? функция в .cc выглядит так:

void TraCITestApp::append2List(short carId, short firstEmptyArrayIndex,     simtime_t messageTime, double theta, std::string vType) {
listedVehicles[firstEmptyArrayIndex].id = carId; // ~~here the Id is changed name to car ID.
listedVehicles[firstEmptyArrayIndex].lastSeenAt = messageTime;
listedVehicles[firstEmptyArrayIndex].vType = vType;
listedVehicles[firstEmptyArrayIndex].theta = theta;
EV << "Appending car with id " << carId <<" type "<< vType << " to the list of known vehicle." << endl;/* @brief Increase related counting variable
* The total number always increased for each vehicle
*/
currentNumberofTotalDetectedVehicles++;
}

.

void TraCITestApp::showInfo_D(short counter){
EV << "Listed Table for Truthtelling:" << endl;
for (int i = 0; i < counter; i++)
{ EV << "Serial [" << i << "] " <<"ID="<< listedVehicles[i].id <<  "\tTruthtelling prob.\t" << listedVehicles[i].theta <<endl;

std::ofstream tracefile;
tracefile.open("traceFiledata.txt", std::ios_base::app);
tracefile << "============================================";
tracefile << "MyID=" << getMyID() << ";" <<"Serial [" << i << "] " <<"ID="<< listedVehicles[i].id <<  ";" << "Time=" << simTime() << ";" << "TTP=" << listedVehicles[i].theta << getMetaData() << std::endl;
tracefile.close();

}

EV << "Total number of detected vehicle\t: " << currentNumberofTotalDetectedVehicles << endl;

}

Я могу вызвать метод в void TraCITestApp::onData(WaveShortMessage* wsm) как showInfo_D(currentNumberofVehicles);

Но как я могу отправить эту информацию другим соседним транспортным средствам. Я хочу отправлять и накапливать информацию в каждом транспортном средстве, но только исходную информацию, т.е. я не отправляю всю накопленную информацию.

0

Решение

Вы можете продлить WSM содержать информацию, которую вы хотите обменять. Вот пример расширения WSM и создание сообщения для ваших собственных целей.

Просто объявите переменные внутри определения сообщения, которое будет содержать ваши данные

cplusplus {{
#include "veins/modules/messages/WaveShortMessage_m.h"}}

class WaveShortMessage;

message MyAppsPacket extends WaveShortMessage {
string sourceAddress;
string destinationAddress;
simtime_t sendingTime;
string vehicleID;
whateverType theta;
}

Тогда при генерации MyAppsPacket ты можешь сделать:

MyAppsPacket->setTheta(theta);
MyAppsPacket->setSendingTime(simeTime());
MyAppsPacket->setVehicleID(listedVehicles[i].id;

К сожалению, я не могу дать вам решение для чтения, поскольку я не знаю всех деталей вашего кода, но это должно дать вам приблизительное представление о том, что вы должны делать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]