omnet veins 错误No packet was ready

来源:互联网 发布:那曲网络怎么样 编辑:程序博客网 时间:2024/06/08 16:35

最近在使用omnet的veins 时候出现错误,如下所示:

<!> Error in module (Mac1609_4) scenario.node[1579].nic.mac1609_4 (id=11066) at event #877979, t=29.404181564383: Model error: No packet was ready

 

在release模式下出现的错误,在debug模式下没有这个错误。

写了一些输出语句,对比如下:

1.  debug模式下,13e-6 的double型正常转变为 0.000013.

2.release模式下,13e-6 的double型正常转变为 0.000012999999.

问题解释:

release模式下,由于优化,导致double本身在表示数据时候的准确度丢失,比如

0.5=2(-1);0.5就可以准确表示,但是0.1就不能完全由二进制数准确表示,于是产生准确度丢失。

 

解决方法:

一般的,可以将double转变成整型来处理。因为所有的整型数据都可以完全准确表示成二进制数据的组合。

omnet中,有相应的处理方法,simtime的setRaw()方法,就可以很好的解决这个问题。

如  SimTime().setRaw(13000000),就能够准确的表示 13e-6。于是本人将<Consts80211p.h>中的所有 有关802.11p的物理层参数改成上述setRaw方法。

bug得到解决。

本来想向veins反应此种情况,后来在最新的版本中,发现他们已经解决这个bug,把<Consts80211p.h>文件改了,同时把mac1609也改了。

 

 

原创粉丝点击