From cd92f11838764bf93aae331e4b26d7106e19c65e Mon Sep 17 00:00:00 2001 From: tk Date: Fri, 13 Sep 2024 16:35:13 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=B1=BB=20=20=E5=9E=8B=E3=80=91?= =?UTF-8?q?=EF=BC=9Afactor=20palneState=E6=94=B9=E4=B8=BAquestState=20?= =?UTF-8?q?=E5=8F=AA=E8=AE=B0=E5=BD=95=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81?= =?UTF-8?q?=20=E3=80=90=E5=8E=9F=20=20=E5=9B=A0=E3=80=91=EF=BC=9A=20?= =?UTF-8?q?=E3=80=90=E8=BF=87=20=20=E7=A8=8B=E3=80=91=EF=BC=9A=20=E3=80=90?= =?UTF-8?q?=E5=BD=B1=20=20=E5=93=8D=E3=80=91=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/commser.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/commser.cpp b/src/commser.cpp index 60dcf31..9006fc5 100644 --- a/src/commser.cpp +++ b/src/commser.cpp @@ -34,8 +34,19 @@ uint32_t udpServerPort = 37260; // 云台相机端口 FoodCube fc(ssid, password, mqttServer, mqttPort, mqttName, mqttPassword, mavlinkSerial, voiceSerial, udpServerIP, udpServerPort); // 创建项目对象 /* 发布 主题 ps:以下是登记发布json内容的组成元素 */ // 登记 json成员名字 + // 0:心跳信息 1:电压信息 2:电流信息 3:电池电量 4:海拔高度 5:对地速度 6:卫星数量 7:定位状态 8:磁罗盘校准进度 9:磁罗盘校准结果 10:任务状态 11:加速度计状态 12:飞机模式 13:重量 14:钩子状态 15:{经,维,高} 16:电池总容量 17:返航点 18:文本信息 19:返航速度 const String topicPub[] = {"heartBeat", "voltagBattery", "currentBattery", "batteryRemaining", "positionAlt", "groundSpeed", "satCount", "fixType", "completionPct", "reportCal", "questState", "acceState", "getPlaneMode", "loadweight", "hookstatus", "position", "battCapacity", "homePosition", "statusText", "wpnavSpeed"}; +/* + *其中topicPubMsg[10]既飞机任务状态的值 + *二进制00 0000 + *第0位: 初始状态 &1 + *第1位: 正在写入航线 &2 + *第2位: 已经写入航点 &4 + *第3位: 正在解锁 &8 + *第4位: 解锁成功 &16 + *第5位: 执行航点任务 &32 + */ const int topicPubCount = sizeof(topicPub) / sizeof(topicPub[0]); // 登记 json成员总数 String topicPubMsg[topicPubCount] = {""}; // 登记 json成员的值 对应topicPub /*触发发送 主题*/ @@ -80,17 +91,8 @@ void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length) writeRoute(todo); // 写入航点 } else if (key == "setQuestState") - { // 设置飞机状态 - /* - *其中topicPubMsg[10]既飞机任务状态的值 - *二进制00 0000 - *第0位: 初始状态 &1 - *第1位: 正在写入航线 &2 - *第2位: 已经写入航点 &4 - *第3位: 正在解锁 &8 - *第4位: 解锁成功 &16 - *第5位: 执行航点任务 &32 - */ + { + // 设置飞机任务状态 String todoJson = value; // 转换值 /* json 反序列化 */ DynamicJsonDocument doc(50); @@ -100,6 +102,15 @@ void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length) uint8_t state = obj["state"]; // 标记飞机状态 0 or 1 // 标记飞机状态 topicPubMsg[10] = fc.setNBit(topicPubMsg[10], n, state); + if (n = 5 && state == 1) // 执行任务 ps:且自动 + { + // 切模式 + set_mode(AUTO); // 设置飞控为定高模式 + // 油门 + delay(500); + uint16_t chan[] = {1500, 1500, 1500, 1500}; // 加解锁 油门到底 + fc.mav_channels_override(chan); // 控制油门 + } } else if (key == "unlock") // 解锁 {