OMNeT 购买复杂信号
OMNeT emit complex signals
我在 OMNeT 中从我的模块发出一些信号时遇到问题。特别是,我的一个模块有一组要发出的信号,例如:
simsignal_t* signalInputInterarrivalTime;
...
signalInputInterarrivalTime = new simsignal_t[N];
然后我 registerSignal
数组中的每个元素都有不同的名称。
这种方式有效,但是在我的 .ned 文件中,我必须使用与数组的最大大小一样多的 @statistic
行。这当然不是最好的方法,既不是参数化的也不是可读的。是否可以声明要发出的信号向量,这更适合我的情况?
是的,在OMNeT++
中可以dynamically create statistics。
将这些行添加到您的 NED
文件中:
@signal[interarrivalTime*](type=simtime_t); // note an asterisk and the type of emitted values
@statisticTemplate[interarrivalTimeTemplate](record=vector);
然后在你的C++
class中声明:
simsignal_t interarrivalTimeSignals[10];
并创建多个统计实例:
for (int i = 0; i < 10; ++i) {
char signalName[32];
sprintf(signalName, "interarrivalTime%d", i);
simsignal_t signal = registerSignal(signalName);
cProperty *statisticTemplate = getProperties()->get("statisticTemplate", "interarrivalTimeTemplate");
getEnvir()->addResultRecorders(this, signal, signalName, statisticTemplate);
interarrivalTimeSignals[i] = signal;
}
使用示例:
simtime_t delay = simTime() - msg->getSendingTime();
emit(interarrivalTimeSignals[3], delay);
请注意,发射值的类型必须与 NED
中声明的类型相匹配。
我在 OMNeT 中从我的模块发出一些信号时遇到问题。特别是,我的一个模块有一组要发出的信号,例如:
simsignal_t* signalInputInterarrivalTime;
...
signalInputInterarrivalTime = new simsignal_t[N];
然后我 registerSignal
数组中的每个元素都有不同的名称。
这种方式有效,但是在我的 .ned 文件中,我必须使用与数组的最大大小一样多的 @statistic
行。这当然不是最好的方法,既不是参数化的也不是可读的。是否可以声明要发出的信号向量,这更适合我的情况?
是的,在OMNeT++
中可以dynamically create statistics。
将这些行添加到您的 NED
文件中:
@signal[interarrivalTime*](type=simtime_t); // note an asterisk and the type of emitted values
@statisticTemplate[interarrivalTimeTemplate](record=vector);
然后在你的C++
class中声明:
simsignal_t interarrivalTimeSignals[10];
并创建多个统计实例:
for (int i = 0; i < 10; ++i) {
char signalName[32];
sprintf(signalName, "interarrivalTime%d", i);
simsignal_t signal = registerSignal(signalName);
cProperty *statisticTemplate = getProperties()->get("statisticTemplate", "interarrivalTimeTemplate");
getEnvir()->addResultRecorders(this, signal, signalName, statisticTemplate);
interarrivalTimeSignals[i] = signal;
}
使用示例:
simtime_t delay = simTime() - msg->getSendingTime();
emit(interarrivalTimeSignals[3], delay);
请注意,发射值的类型必须与 NED
中声明的类型相匹配。