Вот история,
У меня есть код Visual C ++, который запускает симулятор автомобиля. Симулятор фиксирует состояние автомобиля в векторном виде и может получать управляющие сигналы (например, угол поворота, педаль) либо с клавиатуры, либо вручную (через код). Моя цель — автоматизировать управление транспортным средством, однако я реализовал класс управления в Python.
Я хочу ввести состояние транспортного средства из кода C ++ в класс python, в котором выполняется некоторая обработка. Затем класс python должен вывести соответствующий управляющий вход, который будет получен кодом C ++.
Есть ли простой способ добиться этого? Я читал похожие посты, но ни один из них не был понятен для меня.
Один из способов, о котором я подумал, — это использовать файлы, оба класса читают и записывают в файл, из которого они получают состояние транспортного средства и управляющий ввод, однако это может привести к утомительным проблемам с синхронизацией!
Конвейерная обработка также возможна, но кажется очень сложной, если вы не можете предложить хорошее простое решение 🙂 🙂
Суть в том, что я хочу, чтобы класс C ++ и класс python выполнялись одновременно при обмене данными между собой.
Заранее спасибо!
Если вам нужно запустить обе программы одновременно, то не существует простого способа сделать это, и вам придется реализовать механизм асинхронной связи между двумя отдельными процессами.
Одним из способов достижения этого является использование сокетов. Таким образом, ваш контроллер и приложение C ++ могут работать на разных машинах, если возникнет такая необходимость.
На стороне C ++ вы можете основывать свое приложение на boost::asio
читать сообщения из управляющего приложения Python и отправлять ответы. увидеть: Boost Asio
Для стороны Python смотрите: Python сокеты HowTo
Заметки:
boost::python
позволит вам вызывать C ++ из Python и Python из C ++.
SWIG
также может использоваться для переноса классов C ++, чтобы их можно было вызывать из Python.
Ты можешь использовать Повысьте :: Python обернуть ваш код C ++.
Не могли бы вы попробовать ctypes
для этого (посмотреть здесь)?
Чтобы вызывать вещи в Python из C ++, вы можете использовать Python API.