GrabBag/AppUtils/AppConfig/Inc/ConfigXmlUtils.h

81 lines
2.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef CONFIGXMLUTILS_H
#define CONFIGXMLUTILS_H
#include <vector>
#include <string>
#include "VrCommonConfig.h"
#include "VrHandEyeCalibConfig.h"
#include "tinyxml2.h"
/**
* @brief 公共配置 XML 读写工具
*
* 提供手眼标定、平面校准、调试参数、串口配置、相机列表等
* 通用配置段的 XML 加载和保存功能,供各应用的 VrConfig 复用。
*/
namespace ConfigXmlUtils
{
// ============ 手眼标定矩阵 ============
/**
* @brief 从 XML 根节点加载手眼标定矩阵列表
*
* 向后兼容策略:
* 1. 优先找 <HandEyeCalibMatrixs> 容器节点
* 2. 其次找旧名 <HandEyeCalibMatrixList>
* 3. 最后找单个 <HandEyeCalibMatrix>(作为 cameraIndex=1
*
* @param root XML 根节点
* @param list 输出的矩阵列表
* @param defaultEulerOrder 当 XML 中无 eulerOrder 属性时使用的默认值
*/
void LoadHandEyeCalibMatrixs(tinyxml2::XMLElement* root,
std::vector<VrHandEyeCalibMatrix>& list,
int defaultEulerOrder = 11);
/**
* @brief 保存手眼标定矩阵列表到 XML 根节点(<HandEyeCalibMatrixs> 格式)
*/
void SaveHandEyeCalibMatrixs(tinyxml2::XMLDocument& doc,
tinyxml2::XMLElement* root,
const std::vector<VrHandEyeCalibMatrix>& list);
// ============ 平面校准参数 ============
/**
* @brief 从 <PlaneCalibParams> 节点加载多相机平面校准参数
* @param parent 包含 <PlaneCalibParams> 的父节点(通常是 AlgorithmParams
*/
void LoadPlaneCalibParams(tinyxml2::XMLElement* parent,
VrPlaneCalibParam& param);
/**
* @brief 保存多相机平面校准参数到 <PlaneCalibParams> 节点
*/
void SavePlaneCalibParams(tinyxml2::XMLDocument& doc,
tinyxml2::XMLElement* parent,
const VrPlaneCalibParam& param);
// ============ 调试参数 ============
void LoadDebugParam(tinyxml2::XMLElement* root, VrDebugParam& param);
void SaveDebugParam(tinyxml2::XMLDocument& doc, tinyxml2::XMLElement* root,
const VrDebugParam& param);
// ============ 串口配置 ============
void LoadSerialConfig(tinyxml2::XMLElement* root, SerialConfig& config);
void SaveSerialConfig(tinyxml2::XMLDocument& doc, tinyxml2::XMLElement* root,
const SerialConfig& config);
// ============ 相机列表 ============
void LoadCameraList(tinyxml2::XMLElement* root, std::vector<DeviceInfo>& list);
void SaveCameraList(tinyxml2::XMLDocument& doc, tinyxml2::XMLElement* root,
const std::vector<DeviceInfo>& list);
} // namespace ConfigXmlUtils
#endif // CONFIGXMLUTILS_H