我在CentOS 6.7上使用N210运行Redhawk 1.10.1,当我第一次分配并附加USRP_UHD设备的波形时正常运行,但是当我释放它然后尝试分配第二(或更高)时间时设备总是显示一个sri。x = 1。这个问题使我的其他组件崩溃。这是一个错误的设备或有什么东西设置错误在我的电脑上?
如果您已经从REDHAWK rpm安装,请获取USRP_UHD设备的源代码副本:
git clone https://github.com/redhawksdr/USRP_UHD.git
现在编辑第598行(应该是"fts")。Stream_id = 0.0;"),以便将Stream_id设置为空字符串(")而不是0.0。然后,您应该能够重新构建并安装这个编辑过的版本,问题将得到解决。
导致问题的原因实际上很有趣。虽然编译器不允许将字符串设置为0,但将其设置为0.0似乎会清除std::string的内部缓冲区,但保留字符串之前的长度。释放后,USRP_UHD Device清除SRI信息。当执行新的分配时,Device检查stream_id是否为空,这将表明它需要更新SRI。因为对字符串的empty()调用检查字符串的长度,设备假设stream_id不为空,并推入默认的SRI。