REDHAWK Python组件调用遗留的C代码

时间:2016-07-25 20:37:44

标签: redhawksdr

是否有一种从Python组件调用C代码的引用方法?我正在向REDHAWK移植一个调用C代码程序的csh脚本(使用" main"入口点和参数列表)。我更喜欢将csh脚本实现为Python组件,我从中调用C代码程序。

几个笔记:

  1. 我熟悉在GNU Radio的SWIG中这样做。
  2. 我承认将整个系统重新架构为连接的SDR组件的更大问题,但仍存在基本的C-from-Python问题。

1 个答案:

答案 0 :(得分:-1)

这是一个有趣的问题。您是否可以访问传统“主”应用程序的源代码?您关于SWIG的声明会建议您这样做。如果您这样做,最好的方法可能是使用REDHAWK手册的Section 4.9中讨论的共享库模式。 SWIG或共享库方法的问题在于,它们需要重构您的旧C应用程序才能有效地成为共享库。如果遗产只是某种形式的批处理器,它接收命令和数据并推出结果,那么最好使用fork / exec范例。我在这里做了很多假设,但如果您的遗留应用程序将其输出放在stdout上,您可以将其stdout附加到您从组件shell中读取的管道。

REDHAWK GPP完成了我上面提到的组件应用程序,你可以看到它是如何完成的here

我在回答这个问题时做了很多假设。如果您提供有关约束的更多详细信息,我可以优化答案。

额外的想法:如果您决定只想要一个快速结果,那么在StackOverflow上有一篇很棒的帖子,问题是'python-c-wrapper-for-reading-variable-argument-lengths'这可能很快就会让你在REDHAWK生成的python组件中运行起来。我只是不确定如何从遗留应用程序中获得任何结果。