【类 型】:fix 改变飞机状态顺序 导致控制端按钮显示bug

【原  因】:例如改变状态时 要先取消 后 增加  比如前两位先增加  可能会短期变成3 控制端与位会 同时包含两个状态 造成显示错误
【过  程】:
【影  响】:

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
This commit is contained in:
tk 2024-07-26 21:41:08 +08:00
parent 816f3a4366
commit bd776a59d6

View File

@ -84,18 +84,18 @@ void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length)
/* /*
*topicPubMsg[10] *topicPubMsg[10]
*0000 0000 0000 0000 *0000 0000 0000 0000
*0 *0 &1
*1线 *1 线 &2
*2 *2 &4
*3 *3 &8
*4 *4 &16
*5 *5 &32
*6 *6 &64
*7: *7: &128
*8 *8 &256
*9 *9 &512
*10 *10 &1024
*11 *11 &2048
*/ */
String todoJson = value; // 转换值 String todoJson = value; // 转换值
/* json 反序列化 */ /* json 反序列化 */
@ -285,24 +285,20 @@ void writeRoute(String todoJson)
fc.mav_mission_count(taskcount); // 向飞控请求写入航点的数量 fc.mav_mission_count(taskcount); // 向飞控请求写入航点的数量
fc.writeState = true; // 锁定写入状态 fc.writeState = true; // 锁定写入状态
// 改变飞机状态 PS:mqtt发送写在这里 同步执行下面while循环时 写在loop函数里面 不会被执行到
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 1, 1); // 正在写入航点
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 0, 0); // 结束初始状态 topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 0, 0); // 结束初始状态
fc.pubMQTTmsg("planeState", "{\"state\":" + topicPubMsg[10] + "}"); // 发送正在写入的飞机状态 topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 1, 1); // 正在写入航点
// 监听飞控航点写入情况 // 监听飞控航点写入情况
while (true) while (true)
{ {
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 1, 1); // 正在写入航点
fc.comm_receive(mavlink_receiveCallback); fc.comm_receive(mavlink_receiveCallback);
if (fc.missionArkType == 0) if (fc.missionArkType == 0)
{ // 写入成功 { // 写入成功
fc.missionArkType = -1; // “航点写入是否成功” 改成-1默认状态 fc.missionArkType = -1; // “航点写入是否成功” 改成-1默认状态
fc.logln("misson_bingo..."); fc.logln("misson_bingo...");
// 改变飞机状态 // 改变飞机状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 2, 1); // 航点写入成功状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 1, 0); // 结束写入状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 0, 0); // 结束初始状态 topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 0, 0); // 结束初始状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 1, 0); // 结束写入状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 2, 1); // 航点写入成功状态
break; break;
} }
else if (fc.missionArkType > 0) else if (fc.missionArkType > 0)
@ -312,6 +308,7 @@ void writeRoute(String todoJson)
// 改变飞机状态 // 改变飞机状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 2, 0); // 航点写入失败状态 topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 2, 0); // 航点写入失败状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 1, 0); // 结束写入状态 topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 1, 0); // 结束写入状态
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 0, 1); // 回到初始状态
// 当有成果反馈之后 初始化下列数据 // 当有成果反馈之后 初始化下列数据
return; // 写入失败 中断函数 return; // 写入失败 中断函数
} }
@ -341,7 +338,7 @@ void writeRoute(String todoJson)
fc.mav_mission_item(fc.writeSeq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z); fc.mav_mission_item(fc.writeSeq, frame, command, current, autocontinue, param1, param2, param3, param4, x, y, z);
fc.futureSeq++; // 下一个航点序号 fc.futureSeq++; // 下一个航点序号
} }
delay(200); delay(20);
} }
} }