【类 型】:feat 写入参数 功能

【原  因】:
【过  程】:
【影  响】:
This commit is contained in:
tk 2024-08-30 21:11:37 +08:00
parent dcbd67fb7f
commit 798be02055
3 changed files with 41 additions and 0 deletions

View File

@ -781,3 +781,30 @@ void FoodCube::sendCommandAck(uint16_t command, uint8_t result)
// 通过串口发送数据
SWrite(buf, len, mavlinkSerial);
}
/**
* @brief
* @param param_id "COMPASS_OFS_X"
* @param value
*/
void FoodCube::setParam(const char *param_id, float value)
{
mavlink_message_t msg;
mavlink_param_set_t param_set;
// 设置参数
param_set.param_value = value;
strncpy(param_set.param_id, param_id, sizeof(param_set.param_id));
param_set.param_id[sizeof(param_set.param_id) - 1] = '\0'; // 确保字符串以null结尾
param_set.target_system = 1; // 目标系统 ID
param_set.target_component = 1; // 目标组件 ID
// 打包参数设置消息
mavlink_msg_param_set_encode(MAVLINK_SYSTEM_ID, MAVLINK_COMPONENT_ID, &msg, &param_set);
uint8_t buf[MAVLINK_MAX_PACKET_LEN];
int len = mavlink_msg_to_send_buffer(buf, &msg);
// 通过串口发送数据
SWrite(buf, len, mavlinkSerial);
}

View File

@ -76,6 +76,7 @@ public:
void mav_send_command(mavlink_command_long_t &msg_cmd);
void sendCommandAck(uint16_t command, uint8_t result);
void setParam(const char *param_id, float value);
/*云台相机控制*/
void udpSendToCamera(uint8_t *p_command, uint32_t len);

View File

@ -213,6 +213,19 @@ void mqtt_receiveCallback(char *topic, byte *payload, unsigned int length)
fc.sendCommandAck(1, 1); // 摆好校准
}
}
else if (key == "setParam")
{
String todoJson = value; // 转换值
/* json 反序列化 */
DynamicJsonDocument doc(128);
deserializeJson(doc, todoJson);
JsonObject obj = doc.as<JsonObject>();
// 提取参数
const char *item = obj["item"]; // 获取 item 字段
float paramValue = obj["value"]; // 获取 value 字段
// 调用 setParam 函数
fc.setParam(item, paramValue);
}
else if (key == "refreshRequest")
{
refreshRequest(); // 刷新各种请求