メッセージを受信したノードにAckを送信しようとしています。私はフレームIDを取得することができません、それを把握することができませんどのように私はこのフレームIDを私のメッセージに含めるとそれを放送するのですか?任意のポインタ?それは役に立つでしょう。ありがとう。RSUからノードのノードへのACKの送信
更新:これは私がやろうとしていることです。メッセージがRSUのBaseWaveApplLayer :: handleLowerMsg関数で受信されると、フレームIDを抽出してAckを送信しています。私が直面する問題は、sendDownを使用している間に、イベントが送信される予定であるというエラーが発生しています。メッセージを正しくスケジュールする方法は?私はsendDown(msg)を使用しています。
私は正しいフレームIDを取得していません、私はencapsulatedFrame idを使用しましたが、それは異なる値を与えます、どのようにBasicSafetyMessageまたはcMessageからフレームIDを取得しますか?
コード:
void BaseWaveApplLayer::handleLowerMsg(cMessage* msg) {
WaveShortMessage* wsm = dynamic_cast<WaveShortMessage*>(msg);
ASSERT(wsm);
if (BasicSafetyMessage* bsm = dynamic_cast<BasicSafetyMessage*>(wsm)) {
receivedBSMs++;
onBSM(bsm);
if(isBaseStation())
{
BasicSafetyMessage* Ack= new BasicSafetyMessage();
populateWSM(Ack);
Ack->setWsmData(getFrameId(bsm));
EV<<" Sending Ack Frame ID"<<getFrameId(bsm);
sendDown(Ack);
}
else
{
EV<<"Received FrameId"<<bsm->getWsmData();
std::string str(bsm->getWsmData());
int FrameId= std::atoi(str.c_str());
checkIds(FrameId);
}
}}
こんにちは@ julian-heinovski、私はVeinsを使用しているので、populateWSM(wsm)関数を呼び出しています。受信したframeIdにwsmデータを変更しています。私が直面する問題は、このメッセージを送信することです。このメッセージを作成した後、sendDownを呼び出すが、[実行]をクリックするとアプリケーションがクラッシュする。 – Sam1324
この情報と対応するコードとエラーメッセージのスニペットであなたの投稿を更新してください。 –
こんにちは、ここで私がやろうとしているのは、メッセージがRSUのBaseWaveApplLayer :: handleLowerMsg関数で受信されたときに、フレームIDを抽出してメッセージを送り返すときです。私が直面する問題は、sendDownを使用している間です。私はすでにメッセージが送信される予定であるというエラーが発生しています。メッセージを正しくスケジュールする方法は?私はsendDown(msg)を利用しています。 – Sam1324