Не могу отправить переопределения RC в MavproxyC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не могу отправить переопределения RC в Mavproxy

Сообщение Anonymous »

Я не могу управлять отправкой переопределения RC в Mavproxy < /p>

Код: Выделить всё

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);
}
Также я запросил DataStream для mavlink_msg_id_rc_channels :

Код: Выделить всё

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);
}
Чего мне не хватает, чтобы включить переоценки каналов RC? > И я ожидаю, что rc_channels из штуковины Mavproxy's Stus.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... e-mavproxy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»