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

2023-05-16

下面红色部分为添加内容

第一步,增加单个设备复选按钮,位于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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AMOVLAB-QGC地面站二次开发-第七章 的相关文章

随机推荐

  • 【AWS入门】AWS CICD

    目录 一 TASK二 环境准备IAM创建存储库ec2 repoec2 wp 三 Code Deploy创建应用程序创建部署组创建管道部署后的ec2 wp 一 TASK 创建2台EC2实例 xff0c 一台名为 ec2 repo xff0c
  • 【AWS入门】将EC2的系统日志推送到CloudWatch

    创建一个 EC2 实例 xff0c 不附加任何 IAM profile 这里注意不要用23年最新版本的镜像 xff0c 该镜像不支持awslogs 选择旧版镜像可成功安装awslogs 开始创建一个 IAM profile 创建角色 xff
  • CAS单点登录详细流程

    一 CAS简介和整体流程 CAS 是 Yale 大学发起的一个开源项目 xff0c 旨在为 Web 应用系统提供一种可靠的单点登录方法 xff0c CAS 在 2004 年 12 月正式成为 JA SIG 的一个项目 CAS 具有以下特点
  • 【AWS入门】利用CloudWatch监控EC2的CPU负载情况

    创建一个 EC2 实例 User data 配置如下 span class token comment bin bash span sudo span class token operator span i amazon span clas
  • ORACLE查看一个视图是由哪些表而来

    核心sql explain plan for select from v1 select from table dbms xplan display SQL解析 dbms xplan display 相当于一个report xff0c 是由
  • Show Parameter 参数查询的两种方式

    假设你想查询包含con的参数 xff0c 但记不清全拼了 xff0c 可以按照如下方式进行查询 方式一 show parameter cont 方式二 select name from v parameter where UPPER nam
  • stm32 SPI/UART的配置

    一般来说配置USARTx RX和SPI MISO是需要配置上拉输入 xff0c 可实际使用过程中配置推完复用也可正常使用 xff0c 不必纠结 xff0c 若纠结 xff0c 可以配置自己理解的方式
  • stm32---08FreeRTOS实现多任务

    更新记录链接 https blog csdn net weixin 42162924 article details 124562037 前言 目标 FreeRTOS实现多任务 2颗LED以不同频率闪烁 一 准备工作 硬件平台 正点原子探索
  • 变结构PID与经典PID比较

    一 xff0e 普通PID调节器 使用普通PID控制PMSM 仿真时间0 3s xff0c 转速设定值10r s 设定转速 上升时间 ms 调节时间 ms 超调量 稳态误差 rps 10r s 1 5 5 6 0 13 由上图曲线以及图表可
  • linux bash 内容查找,Linux Bash-文件查找

    locate xff1a 作用 非实时模糊查询文件 xff0c 根据全系统文件数据库进行查询 使用updatedb命令手动生成文件数据库 xff0c 较为耗时 find xff1a 作用 实时精确查询文件 xff0c 通过遍历指定目录中的所
  • 使用STM32H757XI双核流水灯调试

    STM32H757XI双核流水灯调试 使用STM32H757XI流水灯调试环境准备硬件配置软件配置程序调试 使用STM32H757XI流水灯调试 环境准备 我采用的STM32CubeIDE集成开发环境调试 xff0c 非常方便 新建一个工程
  • Ubuntu下访问windows的共享文件遇到的问题以及解决办法(ubuntu版本20.04)

    前提 xff1a 今天ubutnu下面与windos共享的文件夹相互传文件时发现共享文件夹有如下症状 xff1a 1 xff09 使用命令vmware hgfsclient能看到我有个共享文件夹 2 xff09 从共享文件夹的目录进入的时候
  • 数据可视化组态编辑器—TopV

    图扑TopV 组态编辑器 xff0c 是一款应用于广泛物联网场景的数据可视化编辑器 软件前端界面采用标准 HTML5 开发 xff0c 支持图形组态 xff0c 支持 MQTT Kafka HTTP 数据接入 可与企业自有平台无缝整合 xf
  • 【深度学习】转载_目标识别损失函数

    转载自博客 人脸识别 MTCNN 43 Arcface全流程详解 Pytorch代码 损失函数发展 人脸识别介绍 MTCNN 实现人脸检测 xff0c 回答了 是不是人脸 和 人脸在哪 的问题 xff0c 接下来人脸识别要解决的就是 人脸是
  • 【ROS】关于 tf2_tools 的安装

    首先使用 rospack find tf2 tools 查看是否安装了 tf2 tools xff0c 如果没有则安装 但直接采用 sudo apt install tf2 tools 是无法安装成功的 xff0c 会显示 E 无法定位软件
  • Socket编程(C语言实现)——TCP协议(网络间通信AF_INET)的流式(SOCK_STREAM)+报式(SOCK_DGRAM)传输【多线程+循环监听】

    Socket编程 目前较为流行的网络编程模型是客户机 服务器通信模式 客户进程向服务器进程发出要求某种服务的请求 xff0c 服务器进程响应该请求 如图所示 xff0c 通常 xff0c 一个服务器进程会同时为多个客户端进程服务 xff0c
  • Git报错:reference broken

    为了pull最新的代码到本地虚拟环境 xff0c 在git pull的时候出现下面的错误 xff0c 最后解决了 xff0c 但是免不了下次出现类似的错误 xff0c 所谓好记性不如烂笔头 记录一下解决办法 问题现象 git pull报错
  • linux声音脚本,bash - 通过CLI使Linux中的音频静音的脚本有效,但需要帮助 - 堆栈内存溢出...

    我经常在工作时播放新闻 xff0c 并想在广告中使声音静音 xff0c 因此四处寻找 产生了一些好东西 xff0c 并产生了下面的脚本 xff0c 其工作原理像一个吊饰 xff1a 161 MM numid 61 16 iface 61 M
  • android headless模式,Headless JS(后台任务)

    Headless JS 是一种使用 js 在后台执行任务的方法 它可以用来在后台同步数据 处理推送通知或是播放音乐等等 JS 端的 API 首先我们要通过AppRegistry来注册一个异步函数 xff0c 这个函数我们称之为 任务 注册方
  • AMOVLAB-QGC地面站二次开发-第七章

    下面红色部分为添加内容 第一步 xff0c 增加单个设备复选按钮 xff0c 位于MultiVehicleList qml中 ColumnLayout id innerColumn anchors margins margin anchor