Код: Выделить всё
void MAVProxyHandler::SendRCOverride(uint16_t chan1, uint16_t chan2, uint16_t chan3, uint16_t chan4,
uint16_t chan5, uint16_t chan6, uint16_t chan7, uint16_t chan8) {
mavlink_message_t msg;
mavlink_rc_channels_override_t rc_override;
memset(&rc_override, 0, sizeof(rc_override));
rc_override.target_system = 1;
rc_override.target_component = 1;
rc_override.chan1_raw = chan1;
rc_override.chan2_raw = chan2;
rc_override.chan3_raw = chan3;
rc_override.chan4_raw = chan4;
rc_override.chan5_raw = chan5;
rc_override.chan6_raw = chan6;
rc_override.chan7_raw = chan7;
rc_override.chan8_raw = chan8;
mavlink_msg_rc_channels_override_encode(1, 200, &msg, &rc_override);
SendMAVLinkMessage(msg);
}
< /code>
Просто ничего не происходит. Но я ожидаю измененных значений структуры RC_Channels: < /p>
RC_CHANNELS {time_boot_ms : 18715335, chancount : 0, chan1_raw : 0, chan2_raw : 1500, chan3_raw : 0, chan4_raw : 1500, chan5_raw : 0, chan6_raw : 0, chan7_raw : 0, chan8_raw : 0, chan9_raw : 0, chan10_raw : 0, chan11_raw : 1500, chan12_raw : 1500, chan13_raw : 0, chan14_raw : 0, chan15_raw : 0, chan16_raw : 0, chan17_raw : 0, chan18_raw : 0, rssi : 255}
< /code>
Точно так же, как работает для моего сценария в Python: < /p>
channels[roll_channel] = set_roll
channels[pitch_channel] = set_pitch
channels[throttle_channel] = set_throttle
self.connection.mav.rc_channels_override_send(
self.connection.target_system,
self.connection.target_component,
**channels,
force_mavlink1=False
)
< /code>
Также я могу установить режим полета для самолета (поэтому я предполагаю, что связь Mavproxy работает нормально): < /p>
void MAVProxyHandler::SetFlightMode(uint32_t customMode) {
mavlink_message_t msg;
mavlink_command_long_t cmd;
memset(&cmd, 0, sizeof(cmd));
cmd.target_system = 1;
cmd.target_component = 1;
cmd.command = MAV_CMD_DO_SET_MODE;
cmd.confirmation = 0; // No confirmation required
cmd.param1 = MAV_MODE_FLAG_CUSTOM_MODE_ENABLED; // Enable custom mode
cmd.param2 = static_cast(customMode); // Set the custom mode
cmd.param3 = 0; // Unused parameters
cmd.param4 = 0;
cmd.param5 = 0;
cmd.param6 = 0;
cmd.param7 = 0;
mavlink_msg_command_long_encode(1, 200, &msg, &cmd);
SendMAVLinkMessage(msg);
}
Код: Выделить всё
void MAVProxyHandler::RequestDataStream(uint16_t message_id, uint32_t interval_us) {
mavlink_message_t msg;
mavlink_command_long_t cmd;
memset(&cmd, 0, sizeof(cmd));
cmd.target_system = 1;
cmd.target_component = 1;
cmd.command = MAV_CMD_SET_MESSAGE_INTERVAL;
cmd.param1 = message_id;
cmd.param2 = static_cast(interval_us);
cmd.param3 = 0;
cmd.param4 = 0;
cmd.param5 = 0;
cmd.param6 = 0;
cmd.param7 = 0;
mavlink_msg_command_long_encode(1, 200, &msg, &cmd);
SendMAVLinkMessage(msg);
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... e-mavproxy