1
帶脈我想補充一點,定期發送的方法(每1秒)一個WSM 這裏是我的修改:的例子<code>TraCIDemo11p</code>發送週期性消息TraCIDemo11p
我創建了一個名爲"sendTrace"
方法類似到所述一箇中的例子,但與WSM數據而改變:
const std::string traceID ="trace";
void TraCIDemo11p::sendTrace() {
t_channel channel = dataOnSch ? type_SCH : type_CCH;
WaveShortMessage* wsm = prepareWSM("data", dataLengthBits, channel, dataPriority, -1,2);
wsm->setWsmData(traceID.c_str());
sendWSM(wsm);
EV << "Received message2 `" << wsm->getSenderModuleId() << "', sending it out again\n";
}
在onData
我添加一個條件接收的消息:
void TraCIDemo11p::onData(WaveShortMessage* wsm) {
if (wsm->getWsmData()== traceID.c_str()){
infoWsm.push_back(wsm);
EV << "Received message3 `" << wsm->getSenderModuleId() << "', sending it out again\n";
}
else{
findHost()->getDisplayString().updateWith("r=16,green");
annotations->scheduleErase(1, annotations->drawLine(wsm->getSenderPos(), mobility->getPositionAt(simTime()), "blue"));
if (mobility->getRoadId()[0] != ':') traciVehicle->changeRoute(wsm->getWsmData(), 9999);
if (!sentMessage) sendMessage(wsm->getWsmData());
EV << "Received message4`" << wsm->getSenderModuleId() << "', sending it out again\n";
}
}
在初始化我送第一跡:
void TraCIDemo11p::initialize(int stage) {
BaseWaveApplLayer::initialize(stage);
if (stage == 0) {
...
lastTraceAt = simTime();
sendTrace();
}
}
而在handleParkingUpdate
我控制其他痕跡發送:
void TraCIDemo11p::handleParkingUpdate(cObject* obj) {
isParking = mobility->getParkingState();
if (sendWhileParking == false) {
if (isParking == true) {
(FindModule<BaseConnectionManager*>::findGlobalModule())->unregisterNic(this->getParentModule()->getSubmodule("nic"));
}
else {
Coord pos = mobility->getCurrentPosition();
(FindModule<BaseConnectionManager*>::findGlobalModule())->registerNic(this->getParentModule()->getSubmodule("nic"), (ChannelAccess*) this->getParentModule()->getSubmodule("nic")->getSubmodule("phy80211p"), &pos);
}
}
}
然後在運行時出現此錯誤!
<!> Error in module (TraCIDemo11p) RSUExampleScenario.node[0].appl (id=14) at event #54, t=3.100413031916: TraCI server reported error executing command 0xc4 ("Referenced edge 'trace' is not known.")..
而且我無法確定這個問題的根源能否幫助我!
PS:我知道錯誤說邊緣'跟蹤'不被識別,這意味着在ondata方法中設置的條件不起作用! 那麼請告訴我如何修復它,或者如果還有其他問題?