【类 型】: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:
parent
cf42ba1501
commit
ed39e11154
@ -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: 向飞控 发送油门指令
|
||||
*/
|
||||
|
@ -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[];
|
||||
|
Loading…
Reference in New Issue
Block a user