omnet veins 错误No packet was ready

最近在使用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也改了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值