1、添加矩形框,在FlightDisplayView.qml中,Fly操作栏对应的组件id是toolstrip
Rectangle{
anchors.left: toolStrip.left
anchors.top: toolStrip.bottom
anchors.topMargin: _margins * 2
width: 00
height: 40
color: "red"
radius: 4
visible: true
z: _panel.z+4
Text {
anchors.fill: parent
text: qsTr("Request All Parameters")
}
MouseArea{
anchors.fill: parent
onClicked: {
console.log("Request all Parameter is clicked!")
QGroundControl.multiVehicleManager.activeVehicle.requestAllParameters()
}
}
}
2、在Vehicle中添加函数实现
Vehicle.h中函数定义:
Q_INVOKABLE void requestAllParameters(void);
Vehicle.cc中完成函数实现:
void Vehicle::requestAllParameters()
{
mavlink_message_t msg;
mavlink_msg_param_request_list_pack_chan(
_mavlink->getSystemId(),
_mavlink->getComponentId(),
priorityLink()->mavlinkChannel(),
&msg,_id,MAV_COMP_ID_ALL
);
sendMessageOnLink(priorityLink(),msg);
qDebug()<<"========send Vehicle::requestAllParameters========"<<_id<<MAV_COMP_ID_ALL;
}
3、mock回路验证:在mocklink.cc中
void MockLink::_handleParamRequestList(const mavlink_message_t& msg)
{
// if (_failureMode == MockConfiguration::FailParamNoReponseToRequestList) {
// return;
// }
// mavlink_param_request_list_t request;
// mavlink_msg_param_request_list_decode(&msg, &request);
// Q_ASSERT(request.target_system == _vehicleSystemId);
// Q_ASSERT(request.target_component == MAV_COMP_ID_ALL);
// // Start the worker routine
// _currentParamRequestListComponentIndex = 0;
// _currentParamRequestListParamIndex = 0;
mavlink_param_request_list_t request;
mavlink_msg_param_request_list_decode(&msg, &request);
qDebug()<<"message with param request list is received,and message id:"<<msg.msgid<<"target_system:"<<request.target_system<<"target_component"<<request.target_component;
}