【发布时间】:2016-12-21 00:21:25
【问题描述】:
我有一个只能使用 C++ 读取的传感器值,因为它是使用它实现的,我想将一个传感器的位置值(两个浮点变量)传递给 Python。我读了很多书,发现了共享内存、管道等等,知道什么是最好的方法吗?
【问题讨论】:
-
您使用的是什么设备?也许某个地方有一个 python 库可以像 C++ 一样完成这项任务?
标签: python c++ subprocess piping
我有一个只能使用 C++ 读取的传感器值,因为它是使用它实现的,我想将一个传感器的位置值(两个浮点变量)传递给 Python。我读了很多书,发现了共享内存、管道等等,知道什么是最好的方法吗?
【问题讨论】:
标签: python c++ subprocess piping
我不熟悉python但是,一个简单的方法是使用一些通信协议,例如串行端口或udp,它是一种网络协议。对于实时应用程序,UDP 协议是一个较好的选择。
【讨论】:
@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
【讨论】:
从你的问题中不清楚这是一个独立的 C++ 程序还是一个库。
如果是独立程序,请使用subprocess 模块调用它并读取其输出。
如果是库,请使用Cython 构造一个包装该库的 Python 扩展模块。 (使用 Cython 不是必需;Python 扩展可以手动编写。但这会使任务变得更加容易。)
【讨论】: