通过cmessage -Omnet 发送数组

Sending Array through CMessage - OMNET++

本文关键字:数组 -Omnet cmessage 通过      更新时间:2023-10-16

我正在尝试制作结构并使用send()命令将其数据发送到应用程序/MAC层。现在,我面临的问题是,send()仅允许cmessage对象/指针作为参数。这是使项目陷入困境的问题。

到目前为止我尝试过的事情是:

  • 从cmessage继承(但是如何处理数组?)
  • 超载handlecommand函数,但再次发送()不允许发送数组。

任何帮助将不胜感激。谢谢!

OMNeT++中的一个人可以定义自己的消息。该定义可以使用嵌入式类型(int,double,string,...)以及自己的类型。
假设您要发送Foo.h中定义的Foo的实例:

// Foo.h
#ifndef _FOO_H
#define _FOO_H
class Foo {
public:
    int x;
};
#endif

您应该使用.msg扩展名创建一个新文件,例如TestMsg.msg

// TestMsg.msg
cplusplus {{ 
#include "Foo.h"
}} 
class noncobject Foo; 
message TestMsg {
    Foo oneObject;
    Foo tab[10]; // example of fixed-size array
}

建立项目后,将创建新的C 文件(TestMsg_m.hTestMsg_m.cc)。这些文件包含从cMessage继承的TestMsg类的定义。TestMsg类具有所有需要的设置并获取方法。

参考:Omnet 仿真手册,第6章

这是对我有用的实现:

namespace inet;
struct NodeM
{
int type;
string description;
double coords[3];
};
// TODO generated message class
//
message Signal extends cMessage {
   NodeM Result[500];
   int sizeRes;
  NodeM RedQ[500];
  int sizeRed;
}