Day01:OMNET++的代码运行机制
记录下omnet++的学习过程
问题描述
(1)在最开始学习OMNET时,有个疑问:就是代码的运行机制是怎样的?main函数在哪里?怎么个流程?
分析流程:
第1步
在tictoc1.ned文件中
——整了1个模块:Txc1
——整了1个拓扑:Tictoc1
第2步
在txc1.cc中对上述的Txc1模块进行声明和定义
类声明:
class Txc1 : public cSimpleModule
{
protected:
// The following redefined virtual function holds the algorithm.
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
模块声明;
Define_Module(Txc1);
定义函数:
void Txc1::initialize()//用于初始化所有节点
void Txc1::handleMessage(cMessage *msg)//节点接收到数据后将会执行这个函数
第3步
仿真即可。
那么疑问来了:节点的运行函数是从哪里开始的?哪里指明了要用 Txc1::initialize()进行初始化?哪里指明了接收到消息时要调用Txc1::handleMessage(cMessage *msg)?QT中有槽机制,Omnet++中如何保证类似的槽机制?main函数在哪里?
解决方案:
(1)c/c++工程必然有main函数,先找到main函数在哪里,明白程序入口
omnet++是一个离散时间仿真器,事件之间可以完全离散开。在OMNET++中,简单模块里面包含固定的四个函数:
void initialize()//创建模块,初始化模块
void handleMessage(cMessage *msg)//收到消息会自动调用
void activity()//不常用
void finish()//结束仿真会自动调用
所以OMNET++是吧main函数封装了,其实在信号仿真中,以上四个自动触发,确实够用了。
这是目前个人的看法,后续有新想法,再更新