M350b版本

This commit is contained in:
xin
2026-01-08 16:00:08 +08:00
parent 7396728ea7
commit a76d4b77e9
213 changed files with 8883 additions and 7196579 deletions

View File

@ -0,0 +1,63 @@
#pragma once
#include "pch.h"
// WDA校正功能类
// 用于执行WDA传感器的自动校准流程
class WDACalibration
{
public:
WDACalibration();
~WDACalibration();
// 执行WDA校正流程
// 参数:
// pSerialPort - 串口指针(必须已打开)
// dTemperature - 校准温度(单位:℃)
// 返回:
// 0 - 成功
// 1 - 串口未打开
// 2 - 发送命令失败(重试次数过多)
// 3 - 接收响应超时(重试次数过多)
// 4 - 响应无效(重试次数过多)
// 5 - 未知错误
// 注意WDA工作状态检查由调用者IrisSensor_WDA_P0负责错误码2由调用者返回
int ExecuteCalibration(QSerialPort* pSerialPort, double dTemperature);
private:
// 校正状态枚举
enum CalibrationState {
Calib_Idle,
Calib_Step1_TC0,
Calib_Step2_KY18_First,
Calib_Step3_AC_First,
Calib_Step4_KY18_Second,
Calib_Step5_AC_Second,
Calib_Step6_Restore_KY18,
Calib_Step7_Restore_TC
};
// 发送校正命令
int SendCalibrationCommand(QSerialPort* pSerialPort, const std::string& sCommand);
// 接收校正响应
int RecvCalibrationResponse(QSerialPort* pSerialPort, std::string& sResponse, int iTimeoutMs = 5000);
// 检查响应是否匹配当前步骤
bool CheckCalibrationResponse(const std::string& sResponse, CalibrationState eStep);
// 检查校正是否完成
bool CheckCalibrationComplete(const std::string& sResponse);
// 从响应中提取AC值
std::string ExtractACValues(const std::string& sResponse);
// 检查所有值是否小于10
bool AllValuesLessThan10(const std::string& sACValues);
// 执行单个校正步骤
// 返回0-成功非0-失败
// sResponse输出参数接收到的响应仅在成功时有效
int ExecuteCalibrationStep(QSerialPort* pSerialPort, CalibrationState eStep, const std::string& sTempValue,
int& iRetryCount, int& iTryCount, std::string& sResponse);
};