【问题标题】:How to pass variable value from C++ to Python?如何将变量值从 C++ 传递到 Python?
【发布时间】:2016-12-21 00:21:25
【问题描述】:

我有一个只能使用 C++ 读取的传感器值,因为它是使用它实现的,我想将一个传感器的位置值(两个浮点变量)传递给 Python。我读了很多书,发现了共享内存、管道等等,知道什么是最好的方法吗?

【问题讨论】:

  • 您使用的是什么设备?也许某个地方有一个 python 库可以像 C++ 一样完成这项任务?

标签: python c++ subprocess piping


【解决方案1】:

我不熟悉python但是,一个简单的方法是使用一些通信协议,例如串行端口或udp,它是一种网络协议。对于实时应用程序,UDP 协议是一个较好的选择。

【讨论】:

    【解决方案2】:

    @ramtha Z28,您提供的信息有限...您是否有权访问 C++ 代码本身,或者您是否正在调用 DLL?如果您有源代码,您可以轻松地在 Cython 中包装函数以在 Python 和 C++ 之间进行通信。将所有 C++ 块包装在可从 Python 和 C++ 访问的 cpdef 语句中。此处的示例文件向您展示了如何在 Cython 中包含 C 程序并与 Python 交互:https://github.com/cythonbook/examples/tree/master/07-wrapping-c/01-wrapping-c-functions-mt-random

    如果是 DLL,则必须声明所有常量、函数、返回值。实际上,这个示例可能类似于您已经在使用的示例:http://people.seas.harvard.edu/~krussell/html-tutorial/wrap_dll.html

    【讨论】:

      【解决方案3】:

      从你的问题中不清楚这是一个独立的 C++ 程序还是一个库。

      如果是独立程序,请使用subprocess 模块调用它并读取其输出。

      如果是库,请使用Cython 构造一个包装该库的 Python 扩展模块。 (使用 Cython 不是必需;Python 扩展可以手动编写。但这会使任务变得更加容易。)

      【讨论】: