Вызов транспортного средства = connect() на 2 кода Python приводит к разрыву соединения

У меня есть 2 кода Python, которые запускаются в подпроцессе, оба из которых вызывают Vehicle = connect('/dev/ttyS0', heartbeat_timeout = 30, baud = 57600) одновременно для разных задач (для регистрации каналов радиоконтроллера, автоматизации и т. д.).

коды работают по назначению, но соединение между Raspberry Pi и PixHawk через последовательный порт иногда обрывается перед автоматическим повторным подключением. Это меня беспокоит, потому что это может повлиять на точность регистрации данных.

Я попытался передать переменную транспортного средства другому питону и обернуть транспортное средство в модули, но оба не работают. Есть ли способ разделить переменную транспортного средства между двумя кодами Python, или я застрял в объединении своих кодов, чтобы использовать потоки для глобальной переменной?

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


person ヲヲヲ    schedule 21.08.2018    source источник


Ответы (1)


Для подключения к одному транспортному средству из 2 программ (в вашем случае 2 скрипта python) вы можете использовать Mavproxy (http://ardupilot.github.io/MAVProxy/html/index.html), вы можете подключить свой автомобиль к Mavproxy, затем добавить 2 выхода в Mavproxy, а затем подключить оба скрипта Python к Mavproxy. Но я рекомендую использовать многопоточность или многопроцессорность, чем разделить ее на 2 разных сценария.


Редактировать: вы можете запустить Mavproxy из терминала следующим образом:

mavproxy.py --master=/dev/ttyAMA0 --baudrate 57600 --out 127.0.0.1:14550 --out 127.0.0.1:14551

где /dev/ttyAMA0 — адрес вашего автомобиля, а затем подключите скрипт python к 127.0.0.1:14550 и 127.0.0.1:14551

person Agustinus Baskara    schedule 21.08.2018
comment
Спасибо за совет! попробую позже. - person ヲヲヲ; 22.08.2018
comment
В качестве будущей ссылки для тех, у кого такая же проблема, как у меня, следуйте способу @agustinus для запуска Mavproxy (ardupilot.github.io/MAVProxy/html/getting_started/) и используйте это руководство (ardupilot.org/dev/docs/), чтобы настроить Mavproxy на постоянный запуск. После этого просто следуйте этому руководству, чтобы подключить коды python вашего Dronekit к Mavproxy (python.dronekit.io/guide /connecting_vehicle.html) (python.dronekit.io/guide/connecting_vehicle.html< /а>). - person ヲヲヲ; 23.08.2018