概述
OMNET++是veins车载通信仿真框架学习过程中,必须要掌握的,之前自己也没有对其进行系统的学习,在这里只是简单对其进行介绍,并通过网上学习的例子进行讲解,使大家大体对其有一个了解。
OMNET++介绍
OMNET++是一款面向对象的离散时间网络模拟器,它主要由如下几个部分组成:
网络拓扑描述文件:定义网络拓扑结构 .ned文件
消息定义文件:定义消息成员变量等
简单模块源:简单模块的行为定义文件.cc和.h文件
仿真内核:OMNET提供的仿真类库
用户接口:用于仿真运行时调试,演示
简单的文字描述,估计大家根本无法明白到底是什么意思,下面用一个例子来进行一个简单网络的仿真。
简单例子
1.新建项目:
点击左上角 File-->New-->OMNET++ Project填写项目名字(Project name):MyFirstProject,点击next选择Empty project-->finish,这样在左侧Project Explorer 就会出现MyFirstProject项目;
通常情况下一个项目需要拥有如下三类文件:
网络描述文件.ned文件
网络定义文件C++文件
网络初始化文件.ini文件
下面就建立上面的三类文件
2.建立.ned网络描述文件
项目点击右键new-->Simple Module 在File name 中填写文件名:simpleNetwork.ned,点击finish,选在项目中就会出现simpleModule.ned文件和对应的.cc和.h文件;2.1建立简单模块
双击SimpleNetwork.ned模块,在Types中选择第一个(Simple Module--Create a simple module type)在左边生成一个简单模块,并右键修改名字SimpleModule和相应属性,点击在文本框右下角的Source,在文件中写入如下内容:
simple SimpleModule
{
gates:
input in;//添加一个接收门
output out;//添加一个发送门
}
其中门(gates)实现模块的连接,OMNET++支持单向的简单线路,因此有输入门和输出门,消息从输出门发出,在输入门接收。
2.2建立网络
项目点击右键new-->Network description Files建立network.ned文件,在Types中选择第三个Network在左侧生成Network,同样右键属性修改相应内容,如名字,并将左侧在2.1生成的简单模块拖入network中右键属性修改模块名称,点击左侧Connection,连接各个模块,得到如下网络结构:
在source中代码如下:
network Network
{
@display("bgb=349,329");
submodules:
s1: SimpleModule {
@display("p=51,76");
}
s2: SimpleModule {
@display("p=261,76");
}
s3: SimpleModule {
@display("p=160,230");
}
connections:
s1.out --> {delay=100ms;} --> s2.in;
s2.out --> {delay=100ms;} --> s3.in;
s3.out --> {delay=100ms;} --> s1.in;
}
其中{delay=100ms;}代表消息传输延迟100ms发送
3 定义.cc文件
打开simpleModule.cc文件;会发现里面有
void SimpleModule::initialize()和void SimpleModule::handleMessage(cMessage *msg)两个函数,第一个为初始化函数,其含义为该模块初始化时所需要执行的操作,第二个为消息处理函数,当该模块收到消息后所需要执行的操作,编写内容如下:
#include "simpleModule.h"
Define_Module(SimpleModule);
void SimpleModule::initialize()
{
// TODO - Generated method body
if (strcmp("s1", getName()) == 0) {
cMessage *msg = new cMessage("spMsg");
send(msg, "out");
}
}
void SimpleModule::handleMessage(cMessage *msg)
{
// TODO - Generated method body
send(msg, "out"); // send out the message
}
在initialize()中的if条件语句表达式含义为在初始化过程中,当该模块名字为s1时,就要生成消息msg,并通过函数send()将该消息通过发送门out发送出去;
在handleMessage()中表达的含义为一旦从接收门接收到消息后,该模块所需要执行的操作(代码内容为将消息从发送门发送出去)
4 网络初始化.ini文件
右键项目new-->Initialization File(ini)生成文件omnetpp.ini文件,打开该文件,点击文本框左下角Source,输入网络名network=Network
最后右键项目,点击Build Project,最后右键omnetpp.ini-->run as-->OMNet++ simulation,运行该项目
总结
通过上面简单例子的介绍需要了解到:.ned文件是负责生成简单模块及网络,.cc和.h文件是对简单模块行为进行定义,.ini文件是网络初始化文件,在veins中图通过这几种类型文件的理解,对其仿真环境进行一点点的学习
最后
以上就是妩媚皮皮虾为你收集整理的veins车载通信仿真框架(3)--OMNET++基础OMNET++介绍简单例子总结的全部内容,希望文章能够帮你解决veins车载通信仿真框架(3)--OMNET++基础OMNET++介绍简单例子总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复