M350b版本

This commit is contained in:
xin
2025-12-24 09:10:08 +08:00
parent 72b1b29c10
commit 257708ae42
83 changed files with 19895 additions and 4 deletions

View File

@ -0,0 +1,71 @@
#ifndef CALIBRATOR_H
#define CALIBRATOR_H
#include <QObject>
#include <QSerialPort>
#include <QTimer>
#include <QTextStream>
#include <QCoreApplication>
class Calibrator : public QObject
{
Q_OBJECT
public:
explicit Calibrator(QObject *parent = nullptr);
~Calibrator();
bool connectSerialPort(const QString &portName, int baudRate = 9600);
void disconnectSerialPort();
void startCalibration(double temperature);
void stopCalibration();
void sendManualCommand(const QString &command);
bool isConnected() const { return serialPort && serialPort->isOpen(); }
signals:
void calibrationCompleted();
void calibrationFailed(const QString &error);
private slots:
void onSerialDataReceived();
void onCalibrationStepTimeout();
void onReceiveTimeout(); // 接收数据超时处理
private:
QSerialPort *serialPort;
QTimer *calibrationTimer;
QTimer *receiveTimeoutTimer; // 接收数据超时定时器
QTextStream *consoleOutput;
QByteArray receiveBuffer; // 接收数据缓冲区
// 校准状态
enum CalibrationState {
Idle,
Step1_TC0, // 发送TC0
Step2_KY18_First, // 第一次发送KY18
Step3_AC_First, // 第一次发送AC命令
Step4_KY18_Second, // 第二次发送KY18
Step5_AC_Second, // 第二次发送AC命令检查校准结果
Step6_Restore_KY18, // 恢复模式发送KY18
Step7_Restore_TC // 恢复模式发送TC00001
};
CalibrationState currentState;
QString temperatureValue; // 校准温度值如00240表示24.0℃)
int retryCount;
bool manualMode; // 手动模式标志
void sendCommand(const QString &command);
void processResponse(const QString &response);
void nextCalibrationStep();
bool checkCalibrationComplete(const QString &response);
QString extractACValues(const QString &response);
bool allValuesLessThan10(const QString &acValues);
void logMessage(const QString &message);
void logError(const QString &message);
void logSuccess(const QString &message);
void logInfo(const QString &message);
};
#endif // CALIBRATOR_H