c++ - 在 Visual C++ 和 Python 之间交换数据

标签 c++ python controls pipe

这是故事,

我有一个运行车辆模拟器的 Visual C++ 代码。模拟器以 vector 形式捕获车辆状态,并且可以从键盘或手动(通过代码)接收控制输入(例如转向角、踏板)。我的目标是自动化车辆控制,但是,我已经在 Python 中实现了控制类。

我想将车辆的状态从 C++ 代码输入到 python 类,其中完成了一些处理。然后,python 类应输出相应的控制输入,以供 C++ 代码接收。

有没有简单的方法可以做到这一点?我读过类似的帖子,但对我来说没有一个是清楚的。

我想到的一种方法是使用文件,两个类都读取和写入一个文件,从中获取车辆状态和控制输入,但是,这可能会产生繁琐的同步问题!

流水线化也是可行的,但看起来很复杂,除非你能提供一个很好的简单解决方案:) :)

底线是,我希望 C++ 类和 python 类在相互交换数据时同时运行。

提前致谢!

最佳答案

如果您需要同时运行这两个程序,那么没有简单的方法可以做到,您必须在两个独立的进程之间实现异步通信机制。

实现此目的的一种方法是使用套接字。这样,如果需要,您的 Controller 和 C++ 应用程序可以在不同的机器上运行。

在 C++ 方面,您可以使应用程序基于 boost::asio 来读取来自 Python 控制应用程序的消息并发送响应。参见:Boost Asio

对于 python 方面,请参阅:Python sockets HowTo

注意事项:

boost::python 将允许您从 Python 调用 C++,从 C++ 调用 Python。

SWIG 也可用于包装 C++ 类,以便可以从 Python 调用它们。

关于c++ - 在 Visual C++ 和 Python 之间交换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966273/

相关文章:

c++ - 从 unsigned int 转换为 float 时出错

python - 输入: list of int elements的错误处理

python - 如何使用python用硬链接(hard link)替换重复文件?

c# - 覆盖 WebControl 上的控件集合

android - setVolumeControlStream 不起作用

数据随机分布

c++ - NSTask 的碳当量?

c++ - Qt Designer 中的自定义菜单操作

c++ - C++ 中的单词数

python - 如何在一行中打印两个列表的输出?