Привет, ребята, я читал руководство по OMNET и наткнулся на это https://doc.omnetpp.org/omnetpp/manual/#sec:messages:encapsulating-several-packets
, чтобы объединить несколько пакетов / сообщений.поэтому я сделал так, как предложил, чтобы поместить данные в вектор, а затем в массив.Однако, когда я пытаюсь вывести массив в ворота, это выдает мне ошибку.PS.когда я просто беру на себя ответственность за входящие сообщения и передаю их, они попадают в модуль, подключенный к Aggregator.cc, один за другим.Я также попытался изменить тип сообщения на пакет, но тот же результат.
Как я могу получить все данные через шлюз?Пожалуйста, помогите Heartrate.cc
//Heartrate.cc
#include "Heartrate.h"
#include "string"
#include <stdio.h>
#include <string.h>
#include "myMessage_m.h"
Define_Module(Heartrate);
void Heartrate::initialize()
{
// TODO - Generated method body
myMessage *Newmsg = createMessage(20);
send(Newmsg,"heartrateexit");
}
void Heartrate::handleMessage(cMessage *msg)
{
// TODO - Generated method body
}
myMessage *Heartrate::createMessage(int a){
// int heartrate = 20;
int msgtype = 2;
char msgName[20];
sprintf(msgName,"send message heartrate %d",a);
myMessage *msg = new myMessage(msgName,msgtype);
msg->setHeartrate(heartrate);
msg->setMymessagetype(msgtype);
return msg;
}
Temperature.cc
//Temperature.cc
#include "Temperature.h"
#include <stdio.h>
#include <string.h>
#include "myMessage_m.h"
Define_Module(Temperature);
void Temperature::initialize()
{
// TODO - Generated method body
myMessage *Newmsg = createMessage(36.6,37.2);
send(Newmsg,"tempexit");
}
void Temperature::handleMessage(cMessage *msg)
{
// TODO - Generated method body
}
myMessage *Temperature::createMessage(double a,double b){
// SIM_API double uniform ( double a,double b )
//SIM_API double intuniform (double a,double b )
double temperature = uniform (a,b);
int msgtype = 1;
char msgName[20];
sprintf(msgName,"send message Temperature %.2f",temperature);
myMessage *msg = new myMessage(msgName,msgtype);
msg->setTemperature(temperature);
msg->setMymessagetype(msgtype);
return msg;
}
Aggregator.cc
//Aggregator.cc
#include "Aggregator.h"
#include "Temperature.h"
#include "Heartrate.h"
#include <string>
#include <sstream>
#include "myMessage_m.h"
#include <stdio.h>
#include <string.h>
#include <vector>
Define_Module(Aggregator);
void Aggregator::initialize()
{
// TODO - Generated method body
}
void Aggregator:: insertMessage(cMessage *msg){
std::vector<cMessage *> messages;
take(msg); // take ownership
EV <<"h" << msg;
messages.push_back(msg); // store pointer
int size = messages.size();
cMessage * mdatabytes[size];
for(int q=0;q<size;q++){
mdatabytes[q] = messages[q];
// EV << "ag databytes data: " << mdatabytes[q] <<"\n";
}
send(mdatabytes,"out"); // error here can't get array through
}
void Aggregator::handleMessage(cMessage *msg)
{
// TODO - Generated method body
insertMessage(msg); // works on its own
}
void Aggregator::removeMessage(cMessage *msg){
}