如何将变量值从C ++传递给Python?

时间:2016-08-14 16:23:11

标签: python c++ subprocess piping

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

@ramtha Z28,您提供的信息有限......您是否可以访问C ++代码本身,或者您正在调用DLL?如果你有源代码,你可以轻松地在Cython中包装一个函数,以便在Python和C ++之间进行通信。在cpdef语句中包装所有可从Python和C ++访问的C ++块。这里的示例文件向您展示如何在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

答案 2 :(得分:0)

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