Veins与SUMO联仿报错:车载NIC中找不到ConnectionManager模块
问题分析与解决
错误原因
报错「无法找到connectionmanager模块」,是因为PhyLayer80211p模块依赖ConnectionManager,但当前Car节点的配置没正确初始化这个模块,或者模块路径出了问题。
修复步骤
1. 删掉NED里的静态Car模块
你的VeinsScenario.net.ned里写了car[0]: Car;,但TraCIScenarioManager本来就会动态创建Car模块,这个静态空数组模块会搞砸初始化。直接把这一行删掉:
import org.car2x.veins.modules.mobility.traci.TraCIScenarioManager; import org.car2x.veins.nodes.Car; network VeinsScenario { parameters: @display("bgb=800,600"); submodules: manager: TraCIScenarioManager { parameters: moduleType = "org.car2x.veins.nodes.Car"; moduleName = "car"; @display("p=100,100"); } // 删掉这行:car[0]: Car; }
2. 检查Car模块结构(针对Veins版本差异)
如果用的是新版Veins,Car节点默认应该包含ConnectionManager配置。要是你的Car模块缺了这个,得确保Car.ned里有正确的子模块:
// 参考Veins官方模板的Car模块结构 module Car extends MobilityNode { parameters: ... submodules: nic: Nic80211p { parameters: ... } connectionManager: ConnectionManager { parameters: @display("p=100,200"); } ... }
3. 核对launchd.xml的SUMO启动配置
确保myScenario.launchd.xml正确启动SUMO,用对配置文件,示例如下:
<launch> <command value="$SUMO_HOME/bin/sumo-gui -c myConfig.sumocfg --remote-port 9999"/> </launch>
注意SUMO的端口要和.ini文件里的*.manager.port = 9999完全一致。
4. 重新构建运行仿真
- 先清理OMNeT++项目的构建文件(Project > Clean)
- 重新构建项目(Project > Build Project)
- 再启动仿真,动态创建的Car节点就会正确初始化所有依赖模块,包括ConnectionManager了。
内容的提问来源于stack exchange,提问作者Amira Chriki
相关产品推荐
相关产品推荐

