【类 型】:fix 控制端请求飞机状态 强制发送飞机现状(所有状态字段)

【原  因】:控制端请求全部状态 例如:控制端 或者飞机断线 并在此时gps状态为no fix  飞机断线之后gps更新为DGPS 之后又连上线 控制端让然还会显示no fix旧数据 飞机也不会向控制端发送新GPS状态  导致控制端不能实时检测飞机状态
【过  程】:加forcePubMsg() 这个函数遍历发送全部当前飞机数据 。
【影  响】:两种情况 控制端:断线重连之后 向飞机请求飞机所有状态  后端:mqtt服务器断线重连之后 主动向飞机发送所有状态

# 类型 包含:
# feat:新功能(feature)
# fix:修补bug
# docs:文档(documentation)
# style: 格式(不影响代码运行的变动)
# refactor:重构(即不是新增功能,也不是修改bug的代码变动)
# test:增加测试
# chore:构建过程或辅助工具的变动
This commit is contained in:
tk 2024-07-26 19:30:42 +08:00
parent cf42ba1501
commit ed39e11154
2 changed files with 22 additions and 11 deletions

View File

@ -153,23 +153,15 @@ void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length)
fc.mav_command(n, param);
}
}
else if (key == "getPlaneState")
{ // 获取飞机状态
fc.pubMQTTmsg("planeState", "{\"state\":" + topicPubMsg[10] + "}"); // 终端主动get飞机状态
else if (key == "getPlaneState") // 终端主动get飞机状态
{
forcePubMsg(); // 强制发送飞机 现在的所有状态值
}
else if (key == "resetState")
{ // 恢复飞机为初始状态
String todo = value; // 转换值
topicPubMsg[10] = todo; // 恢复初始状态
}
else if (key == "getBattCapacity") // 请求 飞控返回 电池容量
{
fc.mav_parameter_data("BATT_CAPACITY"); // 请求飞控 返回参数 电池容量 值
}
else if (key == "getHomePorsion")
{
fc.mav_request_homePosition(); // 请求飞控返回 返航点
}
else if (key == "chan1")
{
uint16_t todo = value; // 转换值
@ -770,6 +762,24 @@ void pubThread()
// pingNetTest();
}
/**
* @description: 线 ps
*/
void forcePubMsg()
{
// 创建一个JSON对象
DynamicJsonDocument doc(2000); // 缓冲区
// 遍历 有更新的数据 组成一个json对象
for (int i = 0; i < topicPubCount; i++)
{
doc[topicPub[i]] = topicPubMsg[i];
}
// 将JSON对象序列化为JSON字符串
String jsonString;
serializeJson(doc, jsonString);
fc.pubMQTTmsg("planeState", jsonString);
}
/**
* @description:
*/

View File

@ -8,6 +8,7 @@
extern void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length);
extern void pubThread();
extern void forcePubMsg();
extern void writeRoute(String topicStr);
extern void mavlink_receiveCallback(uint8_t c);
extern const String topicPub[];