我正在为同事开发的 GNU Radio 应用程序开发 Web 前端。
我有一个 TCP 客户端连接到两个TCP Sink
块的输出,并且数据编码不像我预期的那样。
一种TCP Sink
是发送复杂数据,另一种是发送浮点数据。
我通过读取每个 4 字节块作为float32
值来解码客户端的数据。服务器和客户端都是 little-endian 系统,但我也尝试了字节交换(使用 GNU RadioEndian Swap
块并在客户端手动),但数据仍然不正确。实际上情况要糟糕得多,确认没有字节顺序不匹配。
当我在 GNU Radio Companion 中使用适当的 GUI 元素执行流程图时,这些图看起来是正确的。数据值按预期显示在 0 到 10 之间。
然而,在客户端解码的值通常在 0.00xxxxx 左右,并且该图看起来像噪音,而不是像 GNU Radio 中那样显示简单的音调。如果我通过乘以 1000 手动缩放数据,它看起来仍然像噪音。
我将描述 GNU Radio 中的 pre-D 路径,因为它更短,但我在 post-D 路径上看到了同样的问题,其中添加了 aWBFM Receive
和 a Rational Resampler
,然后是一个Throttle
块,然后是一个TCP Sink
发送浮点数据的块。
File Source (Output Type: complex, vector length: 1) =>
Throttle (vector length: 1) =>
Low Pass Filter (FIR Type: Complex->Complex (Decimating)) =>
Throttle (vector length: 1) =>
TCP Sink (input type: complex, vector length: 1).
这似乎是指定流参数的正确方法(如果我做出与流项目不匹配的更改,确实 Companion 会显示错误),但我无法在流的另一端正确解码数据。