Omnet++ 使用VELINES和omnet的自定义模块++;
我已经安装了Velse4.7,并完成了教程。一切正常。 现在我构建了一个更像DemoBaseApplayer的新模块。此模块继承自BaseAppLayer。 在initialize方法中,我调用dispatchMsg函数。如下所示: 基于几个答案,我在析构函数和finish方法中引入了cancelAndDelete(msg)。我还添加了delete(msg)方法,但没有效果Omnet++ 使用VELINES和omnet的自定义模块++;,omnet++,veins,Omnet++,Veins,我已经安装了Velse4.7,并完成了教程。一切正常。 现在我构建了一个更像DemoBaseApplayer的新模块。此模块继承自BaseAppLayer。 在initialize方法中,我调用dispatchMsg函数。如下所示: 基于几个答案,我在析构函数和finish方法中引入了cancelAndDelete(msg)。我还添加了delete(msg)方法,但没有效果 dispatchMsg() { //SignedBSMMessage sgndBSMMsg(location); cha
dispatchMsg() {
//SignedBSMMessage sgndBSMMsg(location);
char* inputData = signedBSMMessage.CreateBSMMessage(to_CharPtr(this->curPosition.x),
to_CharPtr(this->curPosition.y),
to_CharPtr(this->curSpeed.z ),
to_CharPtr(this->curDirection.z));
cout << "Start dispatchMsg" << endl;
ObuSigndBSM obuSigndBSM("BasicSafetyMessage", 01);
obuSigndBSM.setSignedBsm(inputData);
obuSigndBSM.setMsgLength(signedBSMMessage.getLength());
Coord pos;
traci->getRoadMapPos(pos);
string laneId = std::to_string(pos.z);
obuSigndBSM.setLandId(laneId.c_str());
bsmMessage=&obuSigndBSM;
this->sendDown(bsmMessage);
//delete bsmMessage;
cout << "End dispatchMsg" << endl;
EV_DEBUG << "BSMApp::dispatchMsg end " ;
delete(bsmMessage);
}
dispatchMsg(){
//签名BSMMessage sgndBSMMsg(位置);
char*inputData=signedBSMMessage.CreateBSMMessage(to_CharPtr(this->curPosition.x)),
到_CharPtr(此->curPosition.y),
到_CharPtr(这个->curSpeed.z),
to_CharPtr(this->curDirection.z));
cout发送(BSM消息);
//删除BSM消息;
CUT< P>调用此-> SDENDOWN(BSMEN消息)后,考虑OMNET++模拟内核所拥有的指针。调用该方法后,不要调用Delphi(BSMEST)——否则,当OMNET++正在传递时,您将删除事件(思考:关于要发送的帧的所有信息)。
仅删除指向OMNeT++提供给您的数据的指针(例如,作为已接收数据的事件),即在处理已接收帧的方法中