通道(channel)就像简单的模块,因为它们背后有c++类。为NED通道(channel)类型查找c++类的规则与简单模块相同:默认的类名是NED类型名,除非有@class属性(也可以识别@namespace),并且在通道子类化时继承c++类。
channel CustomChannel
//需要CustomChannel c++类
{
}
与模块相比,实际的区别是很少需要编写定制的channel c++类,因为有预定义的channel类型,可以继承它们的c++代码,从中派生子类。预定义的类型是:ned.IdealChannel,ned.DelayChannel 和 ned.DatarateChannel。“ned”是包名,可以通过导入具有import ned.*类型来消除它。
IdealChannel没有参数,允许通过所有消息,没有延迟或任何副作用。没有通道对象的连接和具有IdealChannel的连接具有相同的行为。尽管如此,IdealChannel仍然有它的用途,例如,当需要channel对象时,它可以携带仿真模型的其他部分将要读取的新属性或参数。
DelayChannel有两个参数:
delay是表示消息传播时延的双参数。值需要与时间单位(s、ms、us等)一起指定。
disabled是布尔参数,默认为false;当设置为true时,channel对象将删除所有消息。
与DelayChannel相比,DatarateChannel有一些额外的参数: