Наблюдайте за изменениями атрибутов с помощью слушателей или декораторов - PullRequest
0 голосов
/ 08 февраля 2019

Моя проблема очень похожа на другую здесь ;Для моего теста я держу свой код как можно проще:

@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}

Итакопять странное поведение, потому что даже если я не касаюсь палочек своего радио, скрипт печатает значения канала транспортного средства, как если бы он был в цикле, но при чтении документации , он должен печатать только значение каналовв случае изменения значения канала.

...