我的问题与其他here非常相似;为了进行测试,我将代码保持最简单的方式:
@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”更改为例如“ channels”,脚本的输出变为:
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}
这又是一个奇怪的行为,因为即使我不碰我的收音机的摇杆,脚本也会像在循环中一样打印车辆频道的值,但是读取documentation时,它应该打印频道值仅在通道值发生变化的情况下。