一、首先需要打开三个文件
1、 omnetpp.ini文件前三个例子不用看
2、.cc文件放的是具体的代码
3、.ned文件放的是网络的搭建设计
.ned文件下方的design显示的是设计出的网络图,source是设计的代码。
二、.cc文件的解读
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
首先是头文件,这里和c++的含义一样。
class Txc1 : public cSimpleModule
{
protected:
// The following redefined virtual function holds the algorithm.
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
接着,是设计了一个Txc1的类,这个类还继承了cSimpleModule这个类,其中cSimpleModule这个类应该是在其他文件中包含了,这里我也没看他的具体定义,大概就是一个模板。这个Txc1类中有两个保护的虚函数,一个叫initialize(初始化),一个叫handleMessage(处理消息),因为他们都加了virtual,所以在后边还需要重新定义。(C++的内容,我也是今天才看到的,哈哈哈)
Define_Module(Txc1);
这句话我也不知道啥含义,但是这十几个tictoc中都在这个位置有这么一行,先写上。
void Txc1::initialize()//这里是初始化模块
{
if (strcmp("tic", getName()) == 0) {
//发送的是tic则执行下边的操作
cMessage *msg = new cMessage("tictocMsg");
send(msg, "out");
}
}
这里就重新定义了initialize函数,我理解它是一个初始化的版块,if里边的判断条件是说如果getname的名字是tic,就执行{}中的内容,getname是获取当前实例的名称。{}中定义了一个cMessage的指针变量msg,定义了一个消息,这个消息是一个字符串,字符创是消息的名称,通过out门发出。
void Txc1::handleMessage(cMessage *msg)
{
send(msg, "out"); // send out the message
}
这是消息处理函数,cMessage的指针变量msg,通过out门发出。
三、ned文件的解读
simple Txc1
{
gates://gate表示一个门,这里定义了连门,一个输出,一个输入
input in;
output out;
}
network Tictoc1
{
@display("bgb=86.185326,77.27674");
submodules:
tic: Txc1 {
@display("p=38.327606,63.60311");
}
toc: Txc1 {
@display("p=11.601871,13.466456");
}
connections:
tic.out --> { delay = 100ms; } --> toc.in;
tic.in <-- { delay = 100ms; } <-- toc.out;
}
先定义了一个节点,这里gates就是门,定义了两个门,一个输出,一个输入。
network中定义网络的构成,其中@display中的所有内容都会随着你拖拽那几个模块而变动,他们表示颜色,位置,大小等等信息,无关紧要。
connections定义了他们的连接方式,tic的out门发出信息,延时100ms送到toc的in门。