AMOVLAB-QGC地面站二次开发-第七章

下面红色部分为添加内容

第一步,增加单个设备复选按钮,位于MultiVehicleList.qml中

ColumnLayout {

id: innerColumn

anchors.margins: _margin

anchors.top: parent.top

anchors.left: parent.left

anchors.right: parent.left

spacing: _margin

RowLayout {

Layout.fillWidth: true

QGCCheckBox{

id: singleSelector

onCheckedChanged:{

if(checked){

guidedActionsController.selectedVehicleCtl(_vehicle.id , 1)

}else{

guidedActionsController.selectedVehicleCtl(_vehicle.id , 0)

}

}

Connections{

target: selectedAll

onCheckedChanged:{

singleSelector.checked = selectedAll.checked

}

}

}

QGCLabel {

Layout.alignment: Qt.AlignTop

text: _vehicle ? _vehicle.id : ""

color: _textColor

}

之后添加全部设备的选择框

Column {

id: mvCommandsColumn

anchors.margins: _margin

anchors.top: parent.top

anchors.left: parent.left

anchors.right: parent.right

spacing: _margin

QGCLabel {

anchors.left: parent.left

anchors.right: parent.right

text: qsTr("The following commands will be applied to all vehicles")

color: _textColor

wrapMode: Text.WordWrap

font.pointSize: ScreenTools.smallFontPointSize

}

Row{

spacing: _margin

QGCCheckBox {

id: selectedAll

checked: false

onCheckedChanged :{

if(checked){

guidedActionsController.selectedVehicleCtl(0 , 1)

}else{

guidedActionsController.selectedVehicleCtl(0 , 0)

}

}

}

QGCLabel {

text: qsTr("all vehicles")

color: _textColor

wrapMode: Text.WordWrap

font.pointSize: ScreenTools.smallFontPointSize

}

}

在GuidedActionsController.qml中添加函数与变量

Item {

id: _root

//复选设备:开始

property var selectedVehiclelist: []

function selectedVehicleCtl(id,insert)

{

var i

//@param id :vehicle's id: 0:all

//@param insert 0:remove 1:insert

if (id===0){

if (insert){

selectedVehiclelist = []

var vehicles = QGroundControl.multiVehicleManager.vehicles

for (i = 0; i < vehicles.count ; i++){

selectedVehiclelist.push(vehicles.get(i).id)

}

}else{

selectedVehiclelist = []

}

}else{

var found=false

var tmp=[]

for (i = 0; i < selectedVehiclelist.length; i++){

if (selectedVehiclelist[i] === id){

if (!insert)

continue;

tmp.push(selectedVehiclelist[i])

found = true

}else{

tmp.push(selectedVehiclelist[i])

}

}

selectedVehiclelist = tmp

if (!found && insert){

selectedVehiclelist.push(id)

}

}

}

接下来在下面executeAction中添加

var vehicle和var i,j以便于下面使用

在下面的case中添加如下

case actionMVPause:

rgVehicle = QGroundControl.multiVehicleManager.vehicles

for (j = 0; j<selectedVehiclelist.length;j++){

for (i = 0; i < rgVehicle.count; i++) {

vehicle=rgVehicle.get(i)

if (selectedVehiclelist[j] === vehicle.id){

vehicle.pauseVehicle()

}

}

}

Break

case actionMVArm:

rgVehicle = QGroundControl.multiVehicleManager.vehicles

for (j = 0; j<selectedVehiclelist.length;j++){

for (i = 0; i < rgVehicle.count; i++) {

vehicle=rgVehicle.get(i)

if (selectedVehiclelist[j] === vehicle.id){

vehicle.armed = true

}

}

}

break

case actionMVDisarm:

rgVehicle = QGroundControl.multiVehicleManager.vehicles

for (j = 0; j<selectedVehiclelist.length;j++){

for (i = 0; i < rgVehicle.count; i++) {

vehicle=rgVehicle.get(i)

if (selectedVehiclelist[j] === vehicle.id){

vehicle.armed = false

}

}

}

break

case actionMVLand:

rgVehicle = QGroundControl.multiVehicleManager.vehicles

for (j = 0; j<selectedVehiclelist.length;j++){

for (i = 0; i < rgVehicle.count; i++) {

vehicle=rgVehicle.get(i)

if (selectedVehiclelist[j] === vehicle.id){

vehicle.guidedModeLand()

}

}

}

break

case actionMVRTL:

rgVehicle = QGroundControl.multiVehicleManager.vehicles

for (j = 0; j<selectedVehiclelist.length;j++){

for (i = 0; i < rgVehicle.count; i++) {

vehicle=rgVehicle.get(i)

if (selectedVehiclelist[j] === vehicle.id){

vehicle.guidedModeRTL()

}

}

}

break

case actionMVTakeoff:

rgVehicle = QGroundControl.multiVehicleManager.vehicles

for (j = 0; j<selectedVehiclelist.length;j++){

for (i = 0; i < rgVehicle.count; i++) {

vehicle=rgVehicle.get(i)

if (selectedVehiclelist[j] === vehicle.id){

vehicle.guidedModeTakeoff(actionAltitudeChange)

}

}

}

Break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值