Ошибка при доступе к модулю мобильности на уровне MAC вен - PullRequest
1 голос
/ 12 апреля 2019

В VEINS 4.4 можно получить доступ к текущему местоположению транспортных средств на прикладном уровне (например, TraCIDemo11p ) через модуль «Мобильность», который определяется через TraCIMobility .

Я использовал тот же подход для доступа к модулю Mobility на нижнем уровне ( MAC1609_4.cc ), где я добавил следующее утверждение на этапе 0 функции инициализации:

TraCIMobility* mobility = TraCIMobilityAccess().get(getParentModule());

Однако я не получаю никакой ошибки компиляции, но когда OMNET выдает ошибки, когда начинается симуляция, и выдает следующую ошибку.

Ошибка в модуле (MAC1609_4) RSUExampleScenario.node [0] .nic.mac1609_4 (id = 12) при событии № 2, t = 0,1: Утверждение: условие traci false в функции get, \ veins/modules/mobility/traci/TraCIMobility.h line 193

Я искал различные возможные решения, но до сих пор не могу решить эту проблему.

Связанные посты:

Как получить доступ к командному интерфейсу TraCI из TraCIDemoRSU11p в симуляторе Veins Car2X?

Передача статуса автомобиля в Венах

RoadId () из BaseWaveApplLayer.cc (VEINS, OMNET ++)

Как получить координаты каждого транспортного средства в VEINS?

1 Ответ

1 голос
/ 15 апреля 2019

Вы пытаетесь получить доступ к субмодулю TraCIMobility в родительском модуле Mac1609_4 . Это, однако, не Car , а Nic80211p , у которого нет такого субмодуля, следовательно, ошибочное утверждение.

Он должен работать, когда вы поднимаетесь на один дополнительный слой в иерархии, поскольку вы затем используете модуль Car в качестве пользователя root для поиска соответствующего подмодуля:

TraCIMobility* mobility = TraCIMobilityAccess().get(getParentModule()->getParentModule());

См. Car модуль и Nic80211p модуль для справки:

...