这是故事,
我有一个运行车辆模拟器的 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/