Моя проблема очень похожа на другую здесь ;Для моего теста я держу свой код как можно проще:
@vehicle.on_attribute('ch1out')
def ch1out_listener(self, name, msg):
print '%s attribute is: %s' % (name, msg)
Я проверил свой код как с помощью dronekit sitl, так и на своем собственном дроне.С dronekit:
dronekit-sitl copter-3.3
sudo mavproxy.py --master tcp:127.0.0.1:5760 --out 127.0.0.1:14550 --map --console
С физическим дроном:
sudo mavproxy.py --master=/dev/ttyS0 --out 127.0.0.1:14550 --aircraft RaspFlyMAV
В обоих случаях, даже если я перемещаю джойстики или меняю значения каналов с помощью консольных команд,Скрипт python не выдаёт мне ошибок, но ничего не выводит.
При изменении «ch1out», например, «channel», вывод скрипта стал:
CALLBACK: channels changed to {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
CALLBACK: channels changed to {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
CALLBACK: channels changed to {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
CALLBACK: channels changed to {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
CALLBACK: channels changed to {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
CALLBACK: channels changed to {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
CALLBACK: channels changed to {'1': 1500, '3': 1000, '2': 1500, '5': 1800, '4': 1500, '7': 1000, '6': 1000, '8': 1800}
Итакопять странное поведение, потому что даже если я не касаюсь палочек своего радио, скрипт печатает значения канала транспортного средства, как если бы он был в цикле, но при чтении документации , он должен печатать только значение каналовв случае изменения значения канала.