Обмен данными между Visual C ++ и Python

Вот история,

У меня есть код Visual C ++, который запускает симулятор автомобиля. Симулятор фиксирует состояние автомобиля в векторном виде и может получать управляющие сигналы (например, угол поворота, педаль) либо с клавиатуры, либо вручную (через код). Моя цель — автоматизировать управление транспортным средством, однако я реализовал класс управления в Python.

Я хочу ввести состояние транспортного средства из кода C ++ в класс python, в котором выполняется некоторая обработка. Затем класс python должен вывести соответствующий управляющий вход, который будет получен кодом C ++.

Есть ли простой способ добиться этого? Я читал похожие посты, но ни один из них не был понятен для меня.

Один из способов, о котором я подумал, — это использовать файлы, оба класса читают и записывают в файл, из которого они получают состояние транспортного средства и управляющий ввод, однако это может привести к утомительным проблемам с синхронизацией!

Конвейерная обработка также возможна, но кажется очень сложной, если вы не можете предложить хорошее простое решение 🙂 🙂

Суть в том, что я хочу, чтобы класс C ++ и класс python выполнялись одновременно при обмене данными между собой.

Заранее спасибо!

0

Решение

Если вам нужно запустить обе программы одновременно, то не существует простого способа сделать это, и вам придется реализовать механизм асинхронной связи между двумя отдельными процессами.

Одним из способов достижения этого является использование сокетов. Таким образом, ваш контроллер и приложение C ++ могут работать на разных машинах, если возникнет такая необходимость.

На стороне C ++ вы можете основывать свое приложение на boost::asio читать сообщения из управляющего приложения Python и отправлять ответы. увидеть: Boost Asio

Для стороны Python смотрите: Python сокеты HowTo

Заметки:

boost::python позволит вам вызывать C ++ из Python и Python из C ++.

SWIG также может использоваться для переноса классов C ++, чтобы их можно было вызывать из Python.

1

Другие решения

Ты можешь использовать Повысьте :: Python обернуть ваш код C ++.

1

Не могли бы вы попробовать ctypes для этого (посмотреть здесь)?

Чтобы вызывать вещи в Python из C ++, вы можете использовать Python API.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector