omnet++ 中tictoc10-12学习笔记
tictoc10总结:加入了多模块的连接和消息发送
一、ned文件
simple Txc10
{parameters:@display("i=block/routing");gates:input in[]; output out[];
}
这里声明in[]和out[]为 门向量
network Tictoc10
{@display("bgb=981,541");submodules:tic[6]: Txc10 {@display("p=166,132");}connections://实现了0/1、1/2、1/4、3/4、4/5直接的连接。tic[0].out++ --> { delay = 100ms; } --> tic[1].in++;tic[0].in++ <-- { delay = 100ms; } <-- tic[1].out++;tic[1].out++ --> { delay = 100ms; } --> tic[2].in++;tic[1].in++ <-- { delay = 100ms; } <-- tic[2].out++;tic[1].out++ --> { delay = 100ms; } --> tic[4].in++;tic[1].in++ <-- { delay = 100ms; } <-- tic[4].out++;tic[3].out++ --> { delay = 100ms; } --> tic[4].in++;tic[3].in++ <-- { delay = 100ms; } <-- tic[4].out++;tic[4].out++ --> { delay = 100ms; } --> tic[5].in++;tic[4].in++ <-- { delay = 100ms; } <-- tic[5].out++;
}
实现了0/1、1/2、1/4、3/4、4/5直接的连接。
网络结构如图所示
一个节点的输入门和输出门只能和另一个节点的输入门和输出门连接一次,他们之间的连接是一一对应的。一个节点和多个节点连接用门向量
这里的++我理解的是:第一次连接,第二次连接!
void Txc10::initialize()
{//getIndex获取当前0模块的索引,0就是tic[0]。语句就是判断当前模块是否为tic[0]模块if (getIndex() == 0) {//当前模块时都是tic【0】模块// Boot the process scheduling the initial message as a self-message.char msgname[20];sprintf(msgname, "tic-%d", getIndex());cMessage *msg = new cMessage(msgname);scheduleAt(0.0, msg);}
}
void Txc10::handleMessage(cMessage *msg)
{if (getIndex() == 3) {// Message arrived.EV << "Message " << msg << " arrived.\n";delete msg;}else {//我们需要转发消息。forwardMessage(msg);}
}
void Txc10::forwardMessage(cMessage *msg)
{// In this example, we just pick a random gate to send it on.// We draw a random number between 0 and the size of gate `out[]'.int n = gateSize("out");//Gatesize门的大小,是返回当前门的数量,其实就是表示这个模块连接了几个模块,或者说有几条线int k = intuniform(0, n-1);//产生一个随机数EV << "Forwarding message " << msg << " on port out[" << k << "]\n";send(msg, "out", k);//k是门的索引,目的就是产生一个随机的门向量索引//再根据当前的门的名称以及输出门的索引把消息发送出去
}
tictoc11:总结:channel关键字的引入
这一节很简单
//之前的tic[0].out++ --> { delay = 100ms; } --> tic[1].in++;tic[0].in++ <-- { delay = 100ms; } <-- tic[1].out++;
//现在的tic[0].out++ --> Channel --> tic[1].in++;tic[0].in++ <-- Channel <-- tic[1].out++;
types:channel Channel extends ned.DelayChannel {delay = 100ms;}submodules:tic[6]: Txc11;connections:tic[0].out++ --> Channel --> tic[1].in++;tic[0].in++ <-- Channel <-- tic[1].out++;
一共有3中channel,一个是ned.idealchannel,一个是ned.delaychannel(本例用),一个是ned.dataratechannel
cc文件和tictoc是一样的
tictoc12总结:用inout替换了in门和out门
simple Txc12
{parameters:@display("i=block/routing");gates:inout gate[]; // declare two way connections
}
inout gete[ ]向量替换了之前的in门和out门
tic[0].gate++ <--> Channel <--> tic[1].gate++;tic[1].gate++ <--> Channel <--> tic[2].gate++;tic[1].gate++ <--> Channel <--> tic[4].gate++;tic[3].gate++ <--> Channel <--> tic[4].gate++;tic[4].gate++ <--> Channel <--> tic[5].gate++;
仿真结果和上边两个是一样的,这么写大大简化了代码结构。
门有三种类型:
input:当前门是输入门,只能和输出门连接,只能接收消息。
output:当前门是输出门,只能和输入门连接,只能发送消息。
inout:既是输入门又是输出门,既能发送消息又能接收消息。
cc文件中这句代码看一下
send(msg, "gate$o", k);
标识符表示是发出消息。
omnet++ 中tictoc10-12学习笔记相关推荐
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...
- Qt 5.12学习笔记--QML性能策略
Qt 5.12学习笔记--QML性能策略 1 简介 2 时间因素 2 性能分析 3 JavaScript 部分 4 绑定 5 类型转换 6 解析属性 6 属性绑定 7 序列提示(Sequence ti ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 原文:Introduction to 3D Game P ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader)...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十三章:计算着色器(The Compute Shader) 原文: Int ...
- Python中索引的学习笔记
1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...
- 机器人学中的状态估计——学习笔记
机器人学中的状态估计--学习笔记 离散时间的批量估计问题 1.最大后验概率法(Maximum A Posteriori, MAP) 2.贝叶斯推断(Bayesian inference) 离散时间的迭 ...
- 机器人学中的状态估计学习笔记(二)第三章线性高斯系统的状态估计
机器人学中的状态估计学习笔记(二)第三章线性高斯系统的状态估计 3.1 离散时间的批量估计问题 3.1.1 问题定义 3.1.2 最大后验估计 3.1.3 贝叶斯推断 3.1.4 存在性.唯一性与能观 ...
- JavaSE中Map框架学习笔记
前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...
- 我的Android进阶之旅------gt;Android中编解码学习笔记
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
- Oracle中job_type,【学习笔记】Oracle DBMS_SCHEDULER详细介绍与使用案例
天萃荷净 分享一篇关于Oracle DBMS_SCHEDULER详细介绍与使用案例 1.通过DBMS_SCHEDULER.CREATE_JOB直接创建job SQL> create table ...
最新文章
- 单片机要学多久才能自己开发?学单片机以后做什么?
- (AOSP)repo checkout指定版本
- 【Elastic Stack学习】ELK日志分析平台(一)ELK简介、ElasticSearch集群
- linux关机方法有哪些?有何区别_Linux下判断是否正常关机的一个简单方法
- jzoj3860-地壳运动(mst)【最小生成树,三分】
- DX10 Shadow Volumn Sample Code的Bug修正
- java 继承 extends_java中的继承 (extends) 详解
- 知方可补不足~sqlserver中使用sp_who查看sql的进程
- 照搬照做无疑了!2019新iPhone系列确定“浴霸摄像头”
- cpu是32位的 这指的是数据总线还是地址总线是32条?另外,电脑操作系统是3位的这指的是什么意思?指令是32...
- kettle下载安装和连接
- USB总线-USB协议简介(一)
- 复信号在信号处理中的意义
- 讯飞输入法pad版x86_讯飞输入法Pad版软件下载_讯飞输入法Pad版app下载_讯飞输入法Pad版安卓下载_亲亲宝贝网...
- 怎么进入计算机网络权限设置方法,电脑怎么设置网络访问权限保护共享文件安全...
- 嵌入式电子钢琴游戏开发设计
- windows 7z windows cannot create symbolic link : 客户端没有所需的特权。
- 编程实现linux中的who命令功能,Linux who命令简介及使用方法详解
- AE快速批量添加字幕
- 项目--练习题61:超市收银系统