发送
void TMEDRSU::handleSelfMsg(cMessage* msg)
{
// this method is for self messages (mostly timers)
// it is important to call the DemoBaseApplLayer function for BSM and WSM transmission
if(msg == sendMsgToFindPath){
hello* sp = new hello("hello");
sp->setPosition(RSUposition);
sp->setSendTime(time);
sp->setSenderId(myApplAddr());
sp->setBeginId(RSUID);
sp->setEndid(descarID);
populateWSM(sp);
sendDown(sp);
return ;
}
DemoBaseApplLayer::handleSelfMsg(msg); //note
}
接受
void TMEDRSU::handleLowerMsg(cMessage* msg){
if( dynamic_cast<hello*>(msg)){
hello* bc = dynamic_cast<hello*>(msg);
EV<<"sendID= "<<bc->getSenderId()<<endl;
EV<<"position= "<<bc->getPosition()<<endl;
}
DemoBaseApplLayer::handleLowerMsg(msg);
}
一个简单的收发过程就结束啦
当然你需要初始化创立一个hello类型的message,然后定义hello里面的信息类型,并在主文件里面引用
namespace veins;
class BaseFrame1609_4;
class noncobject Coord;
class LAddress::L2Type extends void;
packet hello extends BaseFrame1609_4 {
string demoData;
LAddress::L2Type senderAddress = -1;
int serial = 0;
Coord position ;
double speed = 0;
double speedchanged=0;
double dertSpeedScale = 0;
int beginId ;
int endid ;
simtime_t sendTime;
int direc = -1;// 0 1 2 3 上下右左
int senderId;
int senderType;
int nextRelayCarId = -1;
int nextRSUId = -1;
int path[100];
}