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++基础相关推荐

  1. veins车载通信仿真框架(1)--veins安装

    由于实验室的需要,这段时间需要利用veins进行车载通信的仿真,第一次写博客,一方面想把自己学习过程中的经验分享给大家,另一方面也把他当做笔记,没事儿自己也复习一下 安装 关于veins的安装主要有两 ...

  2. Proteus的串口通信仿真实例(八路数据采集系统)

    用proteus和虚拟串口调试助手进行串口通信仿真 实例是一个八路数字电压表,将采集到的八路数字电压经过RS232串口发送至接收上位机.进行串口通信仿真首先要安装一个虚拟串口软件,创建一对虚拟串口.用 ...

  3. 【OMNET+Veins+SUMO】【视频】车联网仿真框架搭建指南

    1.简介 针对车联网方向的研究方向的童鞋,在OMNET搭建基本的仿真平台,需要安装两个插件Veins和SUMO.仿真软件OMNET的基本安装和使用本文不多赘述,前面的博文有介绍.下面重点说明一下Vei ...

  4. 云计算仿真框架CloudSim介绍

    幻灯片1 云计算仿真框架CloudSim介绍 jiangzw#ihep.ac.cn (以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开) (  ...

  5. Xenomai——实现一个GNU/Linux上的RTOS的仿真框架

    Copyright © 2002 Philippe Gerum [摘要] 一般来说,Xenomai 技术起初旨在帮助依靠传统 RTOS 应用程序设计者尽可能顺利移动到一个基于 GNU/ Linux 的 ...

  6. 关于通信matlab 仿真,关于MATLAB在通信仿真系统中的运用

    关于 MATLAB在通信仿真系统中的运用 卢 钊 贵 广 东南方 电信规 划 咨询 设 计院 有 限公 司 广 东 揭 阳 522031 [摘 要 ]本文采用MATLAB软件 ,采集一些图像对其进行图 ...

  7. 差分跳频MATLAB,基于Matlab的短波差分跳频通信仿真设计与实现

    第29卷第5期沈阳理工大学学报V01.29No.52010年10月JOURNALOFSHENYANGLIGONGUNIVERSIrⅣOct.2010文章编号:1003-1251(2010)05-001 ...

  8. 车载通信与导航(七):D2D通信详解

    D2D(设备到设备),即临近终端设备之间直接进行通信的技术,在通信网络中,一旦D2D通信链路建立起来,传输语音或数据消息就无需基站的干预,这样就可以减轻通信系统中基站及核心网络的数据压力,大幅提升频谱 ...

  9. USB设备仿真框架设计指南——11.在托管代码中开发DSF应用程序

    在DSF COM对象的托管代码中开发DSF测试应用程序有多种方法.对于托管代码与COM对象进行通信,必须将COM类型导入到COM类包装器中. 您可以使用以下任何方法创建COM类包装器: 通过类型库导入 ...

最新文章

  1. 倒计时2天 | 张钹院士领衔,AI开发者大会20大论坛议程全揭秘!
  2. 怎么DIY一个粒子检测器
  3. [转]Javascript的IE和Firefox(火狐)兼容性
  4. cJSON源码及解析流程详解
  5. typedef struct 用法
  6. printf 地址_C程序显示主机名和IP地址
  7. 有幸和一位企业家聊天,他白手起家
  8. Linux故障解决(2)——使用yum安装netcat 及报错问题解决
  9. 走美团特色的无人配送道路,王慧文:久久为功才能做成
  10. 数字电子技术基础第三版杨志忠_阎石《数字电子技术基础》(第6版)笔记和课后习题(含考研真题)详解复习笔记资料...
  11. 通过 Socket 实现 UDP 编程 入门
  12. Java中的BlockingQueue队列
  13. 网页设计软件html图标,网页设计Photoshop(PS)CSS切图必用工具
  14. 邮箱客户端设置 服务器设置,263邮箱客户端设置
  15. python设置散点图点的大小_matplotlib - pyplot散点图标记大小
  16. hive计算几个月的最大最小时一定要把string类型转换成int类型
  17. ElasticSearch 哪里不会点哪里
  18. 0x120-从头开始写操作系统-启动扇区与内存的关系及内存寻址的应用
  19. 井冈山大学专属中秋月饼
  20. 分享!手机浏览器跳转微信一键添加微信好友的方案

热门文章

  1. Linux USB 驱动开发—— 热插拔
  2. 我是一个集技术和购物返利的机器人
  3. c语言 substr,如何在C语言实现substr()
  4. java有substr方法_java substring和substr
  5. OpenStack云平台搭建(3) | 部署Glance
  6. 我的GH60 - 极客定制GK61XS : 基本情况及安装心得
  7. cad怎样转换成pdf格式?四个步骤完成
  8. 小甲鱼Python学习笔记之魔法方法
  9. 幼儿抽象逻辑思维举例_孩子这五大表现,证明抽象思维萌发,家长一定要抓住这个关键时机...
  10. R语言二项分布(The Binomial Distribution)