from pymavlink import mavutil import time, sys # Установка соединения с устройством the_connection = mavutil.mavlink_connection('COM11', baud=57600) print('connected') # Ожидание получения heartbeat от устройства the_connection.wait_heartbeat() print('waiting for a heartbeat') print("Heartbeat from system (system %u component %u)" % (the_connection.target_system, the_connection.target_component)) # Запрос текущего значения режима полета the_connection.mav.param_request_read_send( the_connection.target_system, the_connection.target_component, b'FLTMODE1', -1 ) # Ожидание получения ответа с текущим значением режима полета msg = None while msg is None or msg.get_type() != 'PARAM_VALUE': msg = the_connection.recv_msg() # Извлечение значения текущего режима полета mode_id = msg.param_value # Получение имени текущего режима полета из словаря режимов полета flight_modes = the_connection.mode_mapping() current_mode = flight_modes.get(mode_id, "Unknown") print("Текущий режим полета: {} (ID: {})".format(current_mode, mode_id)) # Установка режима полета на "LAND" mode = "LAND" if mode not in flight_modes: print('Unknown mode: {}'.format(mode)) print('Try:', list(flight_modes.keys())) sys.exit(1) # Получение ID режима полета "LAND" mode_id = flight_modes[mode] # Отправка команды на изменение режима полета the_connection.mav.set_mode_send( the_connection.target_system, mavutil.mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED, mode_id) # Отправка команды на сохранение значения режима полета на устройстве the_connection.mav.param_set_send( the_connection.target_system, the_connection.target_component, b'FLTMODE1', mode_id, mavutil.mavlink.MAV_PARAM_TYPE_INT32 ) print("Режим полета изменен на: {}".format(mode)) the_connection.close()