MAV_CMD_SET_CAMERA_ZOOM 531
python测试脚本
import time
from pymavlink import mavutil
def get_current_millis():
"""获取当前时间(毫秒级)"""
return int(time.time() * 1000)
MAV_CMD_SET_CAMERA_ZOOM = 531
ZOOM_TYPE_CONTINUOUS = 1
DEFAULT_ZOOM_VALUE = 20
DEFAULT_TIMEOUT = 5.0
def send_camera_zoom_command(master, zoom_type=ZOOM_TYPE_CONTINUOUS, zoom_value=DEFAULT_ZOOM_VALUE):
"""发送相机变焦命令到无人机"""
send_time = get_current_millis()
print(f"[{send_time}] 发送相机变焦命令: type = {zoom_type}, value = {zoom_value}")
master.mav.command_long_send(
master.target_system,
master.target_component,
mavutil.mavlink.MAV_CMD_SET_CAMERA_ZOOM,
0, # 确认标志
zoom_type, # param1: 变焦类型
zoom_value, # param2: 变焦值
0, # param3
0, # param4
0, # param5
0, # param6
0 # param7
)
return send_time
def wait_for_ack(master, send_time, timeout=DEFAULT_TIMEOUT):
"""等待命令确认响应"""
print("等待相机变焦命令响应...")
ack = master.recv_match(
type='COMMAND_ACK',
blocking=True,
timeout=timeout
)
if ack:
ack_time = get_current_millis()
delay = ack_time - send_time
print(f"[{ack_time}] 收到命令应答 (MAV_CMD_SET_CAMERA_ZOOM)")
print(f" 命令ID: {ack.command}, 结果: {ack.result}, 延迟: {delay}ms")
else:
print(f"[{get_current_millis()}] 超时:未收到相机变焦命令应答")
def main():
"""主函数:连接无人机并发送相机变焦命令"""
# 连接无人机(UDP端口14550)
master = mavutil.mavlink_connection('udpin:0.0.0.0:14550')
print("等待无人机心跳...")
master.wait_heartbeat()
print("无人机已连接,开始发送相机变焦命令")
# 发送相机变焦命令
send_time = send_camera_zoom_command(master)
# 等待响应
wait_for_ack(master, send_time)
print("相机变焦命令发送完成")
if __name__ == "__main__":
main()执行脚本

结果

作者:admin 创建时间:2024-09-14 15:47
最后编辑:sfd 更新时间:2026-03-31 18:40
最后编辑:sfd 更新时间:2026-03-31 18:40