OMNeT++学习程序1

这是我学习OMNeT++以来第一个自己创建的工程:实现两个相同类型的简单模块(tic和toc)之间的通信,在initialize()函数中,令tic模块先发送一个消息,之后两个模块来回发消息,直到手动结束。

1.打开OMNeT++,打开simulation视图:Windows-->open perspective-->simulation

2.信件一个OMNeT++工程,命名为demo:File-->new-->OMNeT++ Project   创建以后Finish

  在这个步骤中需要注意的是有可能会弹出内核错误的对话框,没弹出最好,若弹出,原因是编码选择问题。修改方法为:Windows

  -->Preference,General, workspace,在Textfile encoding中不要选择default,改为other,选择编码为US_ASC2

至此,demo工程创建完毕,开始创建文件。

3.创建简单模块:demo工程,右键-->new-->Network Description File(NED),新建一个NED文件,命名为demo.ned(当然可以是其它名称)

打开demo.ned文件,在右方Types下选择第一个Simple Module。该文件在Design视图下只是一个图标,在Source视图下书代码书写如下:

package demo;
//
// TODO documentation
//
simple Txc1
{
    gates:
        input in;
        output out;
}

4.创建网络:如3中创建demo2.ned文件,在右方Types下选择第三个Network。

在Design视图下拖拽两个刚才建立的简单模块图标进去,并建立他们之间的双向连接。如图所示:

 

相应Source视图下代码如下:

package demo;
//
// TODO documentation
//
network Tictoc1
{
    submodules:
        tic: Txc1 {
            @display("p=62,64");
        }
        toc: Txc1 {
            @display("p=170,64;is=l");
        }
    connections:
        tic.out --> { delay = 100ms; } --> toc.in;
        toc.out --> { delay = 100ms; } --> tic.in;
}

5.创建.h和.cc文件让网络工作起来:

创建头文件Txc1.cc,内容如下:

#ifndef TXC1_H_
#define TXC1_H_
#include <string.h>
#include <omnetpp.h>
class Txc1 : public cSimpleModule
{
    protected:
        virtual void initialize();
        virtual void handleMessage(cMessage *msg);

};
#endif /* TXC1_H_ */

创建.cc文件,包含头文件,具体程序意思看程序内部注释,内容如下:

#include "Txc1.h"

Define_Module(Txc1);

//启动tic-toc-tic-toc过程,一个模块需要发送第一个消息,让我们设定为是tic发送第一个消息

void Txc1::initialize()
{
    //判断是Tic还是Toc
    if(strcmp("tic",getName())==0)
    {
        //向out门创建并发送第一个消息,tictocMsg消息
        cMessage *msg = new cMessage("tictocMsg");
        send(msg,"out");
    }

}
//这个函数每当消息到来的时候调用,这里我们只是将这个消息发送给其它模块(通过out门),因为tic和toc做的是相同的事情,所以消息会在两个模块间回荡
void Txc1::handleMessage(cMessage *msg)
{
    send(msg,"out");
}

6.创建.ini文件,并进行设置

主要的设置是General选项中选择的网络,我创建的网络名称为Tictoc1(在4中创建的),所以Network to simulate中要写上这个名称。

7.demo工程右键build project。

8..ini文件右键run as,选择第一个,运行程序。

可以看到两个模块之间的消息发送,结束。

转载于:https://www.cnblogs.com/xunmeng/archive/2012/10/10/2718569.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值