我正在使用Mavlink協議(使用C++)與ArduPilotMega(2.6)進行通信的項目。
例如,我可以讀取消息,例如ATTITUDE。目前的消息速率(所有消息)是2Hz,我想提高這個速度。
我發現我應該設置MESSAGE_INTERVAL使用MAV_CMD_SET_MESSAGE_INTERVAL
爲了改變它。更改Mavlink消息速率ArduPilotMega
所以我的問題是:
如何使用C++中的mavlink發送此命令消息?
我嘗試使用下面的代碼,但它沒有奏效。我想我必須使用上面提到的命令,但我不知道如何。
mavlink_message_t command;
mavlink_message_interval_t interval;
interval.interval_us = 100000;
interval.message_id = 30;
mavlink_msg_message_interval_encode(255, 200, &command, &interval);
p_sensorsPort->write_message(command);
更新:我也試過下面這段代碼,也許我不會給它正確的系統ID或組件ID。
mavlink_message_t command;
mavlink_command_long_t interval;
interval.param1 = MAVLINK_MSG_ID_ATTITUDE;
interval.param2 = 100000;
interval.command = MAV_CMD_SET_MESSAGE_INTERVAL;
interval.target_system = 0;
interval.target_component = 0;
mavlink_msg_command_long_encode(255, 0, &command, &interval);
p_sensorsPort->write_message(command);
也許我失去了一些東西約target_system
,target_component
和sysid
,compid
之間的差異。我嘗試了幾個值,但沒有任何工作。
是否有任何確認能夠告訴我它是否得到了命令?