背景:我在 gnuradio 中构建了一个传统的解调器,并试图将有效负载数据从流程图发送到外部 Python 脚本。我正在使用 gnuradio v3.7.12。
在我看来,最佳方法是使用流程图:
- 找到序言并标记它
- 将有效载荷后面的数据转换为 pdu
- 将 pdu 作为消息发送到外部 Python 代码
我已经使用以下块构建了一个成功执行此操作的流程图:输入比特流->“关联访问代码 - 标记流”->“重新打包位”->“到 PDU 的标记流”->“ZMQ PUSH 消息接收器”。
问题是“相关访问代码 - 标记流”块需要在前导码和有效负载之间有一个非常具体的标头:包含有效负载大小的 32 位(16 位重复两次)。如果我是控制输入信号的人,这很好。但是,我尝试接收的任何其他信号都不会包含此标头字段。
因此,我尝试使用“相关访问代码 - 标记”块而不是“相关访问代码 - 标记流”块,但该块将长度标记值设置为 0,这会阻止信号链的其余部分正常工作. 似乎我需要做的就是将长度标签的值更改为我预期的有效负载长度,但不幸的是,经过数小时搜索有关标签、消息和 pdus 的文档后,我一直无法弄清楚如何做到这一点.
我在正确的轨道上吗?我附上了我的工作流程图(带有“标签流”块)以及非工作流程图(带有“标签”块)。我尝试了很多东西(标记流对齐,流到标记流),但我什么也做不了。
工作 GRC:https ://www.dropbox.com/s/ilv0ry1x4nvqelj/tag_stream_test.grc?dl=0
非工作 GRC(无法设置长度标签!): https ://www.dropbox.com/s/aoueiovuvj9ss8z/tag_test.grc?dl=0
感谢您的任何帮助,您可以提供。个人电脑