wsm消息发送者的外部ID
The external ID of wsm message sender
我正在使用 OMNET 5.0、SUMO-0.25.0 和 VEINS-4.4。当车辆收到消息时; onData()
被调用。我可以使用 mobility->getExternalId()
获取当前车辆的外部 ID;但是我怎么知道 wsm 消息发送者
的外部 ID
initialize()的代码:
void TraCIDemo11p::initialize(int stage) {
BaseWaveApplLayer::initialize(stage);
if (stage == 0) {
mobility = TraCIMobilityAccess().get(getParentModule());
traci = mobility->getCommandInterface();
traciVehicle = mobility->getVehicleCommandInterface();
annotations = AnnotationManagerAccess().getIfExists();
ASSERT(annotations);
getExternalID = mobility->getExternalId();
sentMessage = false;
lastDroveAt = simTime();
findHost()->subscribe(parkingStateChangedSignal, this);
isParking = false;
sendWhileParking = par("sendWhileParking").boolValue();
}
}
onData()的代码:
void TraCIDemo11p::onData(WaveShortMessage* wsm) {
std::cout << " I am "<< getExternalID <<"and I received a message from ???? "<<endl;
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());
}
一辆车可以由两个标识符表示,一个是从 SUMO 获得的(即调用 getExternalId()),另一个是veins之一(通常是myId),调用后在WaveShortMessage中使用的那个getSenderAddress() 是 myId 所以我建议你关注最后一个。
查看这两个文件以更好地了解所使用的标识符和现有方法:"BaseWaveApplLayer.h/.cc" & "WaveShortMessage_m.h/.cc"
希望对您有所帮助。
我正在使用 OMNET 5.0、SUMO-0.25.0 和 VEINS-4.4。当车辆收到消息时; onData()
被调用。我可以使用 mobility->getExternalId()
获取当前车辆的外部 ID;但是我怎么知道 wsm 消息发送者
initialize()的代码:
void TraCIDemo11p::initialize(int stage) {
BaseWaveApplLayer::initialize(stage);
if (stage == 0) {
mobility = TraCIMobilityAccess().get(getParentModule());
traci = mobility->getCommandInterface();
traciVehicle = mobility->getVehicleCommandInterface();
annotations = AnnotationManagerAccess().getIfExists();
ASSERT(annotations);
getExternalID = mobility->getExternalId();
sentMessage = false;
lastDroveAt = simTime();
findHost()->subscribe(parkingStateChangedSignal, this);
isParking = false;
sendWhileParking = par("sendWhileParking").boolValue();
}
}
onData()的代码:
void TraCIDemo11p::onData(WaveShortMessage* wsm) {
std::cout << " I am "<< getExternalID <<"and I received a message from ???? "<<endl;
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());
}
一辆车可以由两个标识符表示,一个是从 SUMO 获得的(即调用 getExternalId()),另一个是veins之一(通常是myId),调用后在WaveShortMessage中使用的那个getSenderAddress() 是 myId 所以我建议你关注最后一个。
查看这两个文件以更好地了解所使用的标识符和现有方法:"BaseWaveApplLayer.h/.cc" & "WaveShortMessage_m.h/.cc"
希望对您有所帮助。