Veins教程03 - OMNet++ 介绍
Intro to OMNet++
OMNet++在本教程中(Veins+OMNetpp+SUMO)是一个重要角色,需要深入学习。OMNet++基于C++(和NED),本教程默认读者有一定C++基础。
Learn From A Example
按照之前的教程安装之后可以通过omnetpp
打开OMNet++。打开后如果工程目录不存在或为空会提示安装INET和Examples;INET与Veins是类似工具,本例中不涉及使用,因此两个均可以不勾选。
Hello World
先跑一个非常简单的例子,可以深刻理解OMNet++中的消息传递。
Learn From Manual
官方手册非常长,笔者觉得最开始只需要看完前三章,第四章简略看看,主要是能读懂.ned
和omnetpp.ini
OMNet++ Project Structure
每个项目由一个Network和其中的多个module/sub-module组成,如图
从文件角度来说包括
- 描述拓扑结构的
.ned
文件 - 定义消息(message)的
.msg
文件 - 定义各个模组(module)具体的功能实现的多个
.cc
文件
同级module之间可以通过gate连接并传输message,连接称为connection/link
NED
在项目中通过基于NED语法的.ned
文件来描述网络结构;而每个模块的具体功能有对应的C++文件来定义。分开定义的原因是.ned
文件可以无损与.xml
互相转换,因此容易修改。
官方手册 第三章
Hinds
记录一些细节
*
匹配任意不含.
的字符串;**
匹配任意字符串;..
匹配自然数;*.**
匹配至少含有一个.
的字符串- 作用于gate的
++
操作符会自动添加gate向量。因此gate向量可以不预先指定大小(size);但是submodules中的向量必须指定大小
Conclusions
对于OMNet++的了解到此暂时已经足够。总结起来就是
- 创建
.ned
文件(语法是NED)定义和描述仿真网络拓扑的文件 - 通过C++文件来定义同名模块的逻辑功能
- 使用
omnetpp.ini
文件对参数进行配置 - 运行仿真。可以勾选release模式,之后如果需要debug会询问是否切换成debug模式