veins车载通信仿真框架(3)--OMNET++基础
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 bodyif (strcmp("s1", getName()) == 0) {cMessage *msg = new cMessage("spMsg");send(msg, "out");}}void SimpleModule::handleMessage(cMessage *msg)
{// TODO - Generated method bodysend(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++基础相关推荐
- veins车载通信仿真框架(1)--veins安装
由于实验室的需要,这段时间需要利用veins进行车载通信的仿真,第一次写博客,一方面想把自己学习过程中的经验分享给大家,另一方面也把他当做笔记,没事儿自己也复习一下 安装 关于veins的安装主要有两 ...
- Proteus的串口通信仿真实例(八路数据采集系统)
用proteus和虚拟串口调试助手进行串口通信仿真 实例是一个八路数字电压表,将采集到的八路数字电压经过RS232串口发送至接收上位机.进行串口通信仿真首先要安装一个虚拟串口软件,创建一对虚拟串口.用 ...
- 【OMNET+Veins+SUMO】【视频】车联网仿真框架搭建指南
1.简介 针对车联网方向的研究方向的童鞋,在OMNET搭建基本的仿真平台,需要安装两个插件Veins和SUMO.仿真软件OMNET的基本安装和使用本文不多赘述,前面的博文有介绍.下面重点说明一下Vei ...
- 云计算仿真框架CloudSim介绍
幻灯片1 云计算仿真框架CloudSim介绍 jiangzw#ihep.ac.cn (以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开) ( ...
- Xenomai——实现一个GNU/Linux上的RTOS的仿真框架
Copyright © 2002 Philippe Gerum [摘要] 一般来说,Xenomai 技术起初旨在帮助依靠传统 RTOS 应用程序设计者尽可能顺利移动到一个基于 GNU/ Linux 的 ...
- 关于通信matlab 仿真,关于MATLAB在通信仿真系统中的运用
关于 MATLAB在通信仿真系统中的运用 卢 钊 贵 广 东南方 电信规 划 咨询 设 计院 有 限公 司 广 东 揭 阳 522031 [摘 要 ]本文采用MATLAB软件 ,采集一些图像对其进行图 ...
- 差分跳频MATLAB,基于Matlab的短波差分跳频通信仿真设计与实现
第29卷第5期沈阳理工大学学报V01.29No.52010年10月JOURNALOFSHENYANGLIGONGUNIVERSIrⅣOct.2010文章编号:1003-1251(2010)05-001 ...
- 车载通信与导航(七):D2D通信详解
D2D(设备到设备),即临近终端设备之间直接进行通信的技术,在通信网络中,一旦D2D通信链路建立起来,传输语音或数据消息就无需基站的干预,这样就可以减轻通信系统中基站及核心网络的数据压力,大幅提升频谱 ...
- USB设备仿真框架设计指南——11.在托管代码中开发DSF应用程序
在DSF COM对象的托管代码中开发DSF测试应用程序有多种方法.对于托管代码与COM对象进行通信,必须将COM类型导入到COM类包装器中. 您可以使用以下任何方法创建COM类包装器: 通过类型库导入 ...
最新文章
- 倒计时2天 | 张钹院士领衔,AI开发者大会20大论坛议程全揭秘!
- 怎么DIY一个粒子检测器
- [转]Javascript的IE和Firefox(火狐)兼容性
- cJSON源码及解析流程详解
- typedef struct 用法
- printf 地址_C程序显示主机名和IP地址
- 有幸和一位企业家聊天,他白手起家
- Linux故障解决(2)——使用yum安装netcat 及报错问题解决
- 走美团特色的无人配送道路,王慧文:久久为功才能做成
- 数字电子技术基础第三版杨志忠_阎石《数字电子技术基础》(第6版)笔记和课后习题(含考研真题)详解复习笔记资料...
- 通过 Socket 实现 UDP 编程 入门
- Java中的BlockingQueue队列
- 网页设计软件html图标,网页设计Photoshop(PS)CSS切图必用工具
- 邮箱客户端设置 服务器设置,263邮箱客户端设置
- python设置散点图点的大小_matplotlib - pyplot散点图标记大小
- hive计算几个月的最大最小时一定要把string类型转换成int类型
- ElasticSearch 哪里不会点哪里
- 0x120-从头开始写操作系统-启动扇区与内存的关系及内存寻址的应用
- 井冈山大学专属中秋月饼
- 分享!手机浏览器跳转微信一键添加微信好友的方案
热门文章
- Linux USB 驱动开发—— 热插拔
- 我是一个集技术和购物返利的机器人
- c语言 substr,如何在C语言实现substr()
- java有substr方法_java substring和substr
- OpenStack云平台搭建(3) | 部署Glance
- 我的GH60 - 极客定制GK61XS : 基本情况及安装心得
- cad怎样转换成pdf格式?四个步骤完成
- 小甲鱼Python学习笔记之魔法方法
- 幼儿抽象逻辑思维举例_孩子这五大表现,证明抽象思维萌发,家长一定要抓住这个关键时机...
- R语言二项分布(The Binomial Distribution)