gnuradio - wavfile_sink: 值 nan 不能在目标整数类型中表示
问题描述
我有几个通过 Internet 进行通信的 gnuradio 应用程序。流程图相当复杂,所以我将它们归结为最简单的形式来重新创建我看到的问题。
问题是,当我调用客户端时,它按预期连接到服务器,但立即抛出异常“值 nan 无法以目标整数类型表示”并且似乎来自 wavfile sink 块。
我将服务器简化为一个简单的拨号音流图,它在 TCP 端口上显示拨号音信号。客户端可以连接到该端口并期望接收拨号音信号。
如果我在同一台计算机上运行客户端和服务器并使用 localhost 进行连接,则客户端可以正常连接并按预期工作。但是,如果客户端和服务器相隔一段距离(通过互联网),那么我每次都会收到 nan 异常。
理论:
- 也许客户端正在启动并且没有足够快地接收数据(连接时间+ 20ms延迟)并且wavfile块正在从套接字PDU或流到标记的流块接收NaN?
- 也许数据在通过互联网时被破坏,导致数据包没有按预期到达 - 碎片?我尝试了 MTU 512,但问题仍然存在。Trued MTU 10000:相同的结果。
- 也许我在构建流程图时忽略了一个简单的用法/语法错误
- wavfile 接收器中有一个错误,它应该更优雅地处理数据的缺失。
更新 1:将错误报告记录到 gnuradio 项目https://github.com/gnuradio/gnuradio/issues/1763
更新 2:socket PDU 块似乎发挥了重要作用。如果我将流的数据包长度参数调整为标记流块,以及套接字 PDU 块的 MTU 参数,我可以获得带有丢弃数据包的无错误流(低 MTU)或带有 NaN 异常的死流(高 MTU )。
互联网上的 wav 结果(20-100ms 延迟) 此 wav 文件为 1k,可能与异常同时被截断,但很难确定。
wav 跨本地接口的结果(1 毫秒或更短的延迟) 跨本地接口客户端运行愉快,直到我停止它。接收到的信号符合预期。一件小事——注意到最初的几个样本有问题吗?不确定这是否是一个因素。可能不是。但是即使在本地接口上,前 10 毫秒左右的数据也是垃圾。
解决方案
推荐阅读
- c# - '找不到类型或命名空间名称'如何在 Unity 中解决
- vb6 - vb6 / 通过 api 或其他方式在同一浏览器选项卡中打开 url?
- javascript - 在原始视图中以横向或纵向显示图像不拉伸
- c - 在 C 中创建一个要写入的新文件并将其初始化为空?
- node.js - 将 JSON 作为字符串存储在 Azure SQL 数据库中
- javascript - 无法使用 javascript 使窗口淡出或在 css 中添加过渡效果
- c# - 在 Unity 中修改 PS3 控制器的操纵杆灵敏度
- ansible - Ansible 2.9 Cisco IOS 模块循环
- r - R Shiny:散点图未显示
- python-3.x - 如何以编程方式获取我是 Telegram 成员的封闭组中的一个特定用户发送的消息?