2025-04-14T17:11:00

This commit is contained in:
yuntang 2025-04-14 17:11:01 +08:00
parent ecec86e4fd
commit 3a6c5fb642
21 changed files with 430 additions and 63 deletions

View File

@ -22,6 +22,7 @@ SOURCES += \
data/pointcalculate.cpp \ data/pointcalculate.cpp \
global.cpp \ global.cpp \
logger/logger.cpp \ logger/logger.cpp \
ui/aboutform.cpp \
ui/rightwidget.cpp \ ui/rightwidget.cpp \
thirdparty/easylogging/easylogging++.cc \ thirdparty/easylogging/easylogging++.cc \
ui/analysissettingform.cpp \ ui/analysissettingform.cpp \
@ -48,6 +49,7 @@ HEADERS += \
data/pointcalculate.h \ data/pointcalculate.h \
defines.h \ defines.h \
logger/logger.h \ logger/logger.h \
ui/aboutform.h \
ui/rightwidget.h \ ui/rightwidget.h \
thirdparty/easylogging/easylogging++.h \ thirdparty/easylogging/easylogging++.h \
ui/analysissettingform.h \ ui/analysissettingform.h \
@ -70,6 +72,7 @@ HEADERS += \
FORMS += \ FORMS += \
mainwindow.ui \ mainwindow.ui \
ui/aboutform.ui \
ui/degreeofcrystallinityform.ui \ ui/degreeofcrystallinityform.ui \
ui/degreeofcureform.ui \ ui/degreeofcureform.ui \
ui/experimentsettingform.ui \ ui/experimentsettingform.ui \

View File

@ -7,7 +7,7 @@
namespace FileManager { namespace FileManager {
Global::ExpeInfo _expeInfo; Global::ExperimentInfo _expeInfo;
QFile _expeFile; QFile _expeFile;
void writeExperimentFile(const CommonData &cd) void writeExperimentFile(const CommonData &cd)

View File

@ -15,7 +15,7 @@ const QString SampleDataFloder = ExperimentDirPath + "/sample_data";
const QString BaseLineFolder = ExperimentDirPath + "/base_line"; const QString BaseLineFolder = ExperimentDirPath + "/base_line";
const QString AnalysisStateFolder = ExperimentDirPath + "/analysis_state"; const QString AnalysisStateFolder = ExperimentDirPath + "/analysis_state";
extern Global::ExpeInfo _expeInfo; extern Global::ExperimentInfo _expeInfo;
extern QFile _expeFile; extern QFile _expeFile;
void createExperimentFile(); void createExperimentFile();

View File

@ -12,7 +12,7 @@ void XlsxHandler::readFile(const QString sourceFilePath)
// 检查文件是否存在 // 检查文件是否存在
if(!QFile::exists(sourceFilePath)) if(!QFile::exists(sourceFilePath))
{ {
qDebug() << "文件不存在:" << sourceFilePath; qDebug() << "xlsx file not existed:" << sourceFilePath;
return; return;
} }
@ -28,7 +28,7 @@ void XlsxHandler::readFile(const QString sourceFilePath)
QXlsx::Worksheet *workSheet = xlsx.currentWorksheet(); QXlsx::Worksheet *workSheet = xlsx.currentWorksheet();
if(!workSheet) if(!workSheet)
{ {
qDebug() << "当前工作表为空。"; qDebug() << "current sheet is empty.";
return; return;
} }
@ -44,12 +44,11 @@ void XlsxHandler::readFile(const QString sourceFilePath)
int index = 2; int index = 2;
Global::ExperimentInfo ei; Global::ExperimentInfo ei;
ei.sampleName = workSheet->cellAt(index++, 2)->value().toString(); ei.sampleName = workSheet->cellAt(index++, 2)->value().toString();
logde << "sample name:" << ei.sampleName.toStdString();
// return;
ei.sampleWeight = workSheet->cellAt(index++, 2)->value().toString(); ei.sampleWeight = workSheet->cellAt(index++, 2)->value().toString();
index++; // skip crucible weight.
ei.date = workSheet->cellAt(index++, 2)->value().toString(); ei.date = workSheet->cellAt(index++, 2)->value().toString();
ei.operatorName = workSheet->cellAt(index++, 2)->value().toString(); ei.experimentor = workSheet->cellAt(index++, 2)->value().toString();
index++; // skip measure type.
ei.phaseSize = workSheet->cellAt(index++, 2)->value().toInt(); ei.phaseSize = workSheet->cellAt(index++, 2)->value().toInt();
QVector<Global::PhaseTotalInfo> phaseTotalVtr; QVector<Global::PhaseTotalInfo> phaseTotalVtr;
@ -67,12 +66,13 @@ void XlsxHandler::readFile(const QString sourceFilePath)
void XlsxHandler::readPhaseData(QXlsx::Worksheet *workSheet, int &startLineIndex, void XlsxHandler::readPhaseData(QXlsx::Worksheet *workSheet, int &startLineIndex,
Global::PhaseTotalInfo &phaseTotal) Global::PhaseTotalInfo &phaseTotal)
{ {
// int startLineIndex = 9; // skip.# Time/min Temp/℃ Voltage/mW
startLineIndex++; startLineIndex++;
// skip.第一段
startLineIndex++; startLineIndex++;
phaseTotal.phase.cutoff_temp = workSheet->cellAt(startLineIndex++, 2)->value().toFloat(); phaseTotal.phase.cutoff_temp = workSheet->cellAt(startLineIndex++, 2)->value().toDouble();
phaseTotal.phase.temp_flow = workSheet->cellAt(startLineIndex++, 2)->value().toFloat(); phaseTotal.phase.temp_flow = workSheet->cellAt(startLineIndex++, 2)->value().toDouble();
phaseTotal.phase.constant_temp_time_min = (uint16_t)(workSheet->cellAt(startLineIndex++, 2)->value().toInt()); phaseTotal.phase.constant_temp_time_min = (uint16_t)(workSheet->cellAt(startLineIndex++, 2)->value().toInt());
phaseTotal.phase.gas = static_cast<GasType>(workSheet->cellAt(startLineIndex++, 2)->value().toInt()); phaseTotal.phase.gas = static_cast<GasType>(workSheet->cellAt(startLineIndex++, 2)->value().toInt());
@ -80,19 +80,110 @@ void XlsxHandler::readPhaseData(QXlsx::Worksheet *workSheet, int &startLineIndex
for(int i = 0; i < dataSize; i++) for(int i = 0; i < dataSize; i++)
{ {
Global::ExperimentData data; Global::ExperimentData data;
data.runTime = workSheet->cellAt(startLineIndex++, 2)->value().toFloat(); data.runTime = workSheet->cellAt(startLineIndex, 2)->value().toDouble();
data.sampleTemp = workSheet->cellAt(startLineIndex++, 3)->value().toFloat(); data.sampleTemp = workSheet->cellAt(startLineIndex, 3)->value().toDouble();
data.dsc = workSheet->cellAt(startLineIndex++, 4)->value().toFloat(); data.dsc = workSheet->cellAt(startLineIndex, 4)->value().toDouble();
phaseTotal.dataVtr.push_back(data); phaseTotal.dataVtr.push_back(data);
startLineIndex++;
} }
} }
void XlsxHandler::writeFile() void XlsxHandler::writeFile()
{ {
Global::ExperimentInfo& ei = Global::_experimentInfo;
QXlsx::Document xlsx; QXlsx::Document xlsx;
xlsx.addSheet("Sheet1"); // 添加一个新的工作表 xlsx.addSheet("Sheet1"); // 添加一个新的工作表
int row = 0;
xlsx.write(row++ , 1, ConFileDataInfo);
xlsx.write(row , 1, ConSampleName);
xlsx.write(row , 2, ei.sampleName);
row++;
xlsx.write(row , 1, ConSampleWeight);
xlsx.write(row , 2, ei.sampleWeight);
xlsx.write(row , 3, ConUnitMg);
row++;
xlsx.write(row , 1, ConCrucibleWeight);
xlsx.write(row , 2, 0);
xlsx.write(row , 3, ConUnitMg);
row++;
xlsx.write(row , 1, Conexperimenter);
xlsx.write(row , 2, ei.experimentor);
row++;
xlsx.write(row , 1, ConDate);
xlsx.write(row , 2, ei.date);
row++;
xlsx.write(row , 1, ConMeasureType);
xlsx.write(row , 2, "样品");
row++;
xlsx.write(row , 1, ConPhaseSize);
xlsx.write(row , 2, ei.phaseVtr.size());
row++;
// write phase data
int dataSizeRow = 0;
for(int i = 0; i < ei.phaseVtr.size();i++){
const Phase& phase = ei.phaseVtr.at(i);
xlsx.write(row , 1, ConPhaseProfix);
xlsx.write(row , 2, ConPhaseHeaderTime);
xlsx.write(row , 3, ConPhaseHeaderTemp);
xlsx.write(row , 4, ConPhaseHeaderVoltage);
row++;
xlsx.write(row , 1, ConPhaseIndex);
xlsx.write(row , 2, i + 1);
row++;
// phase info
xlsx.write(row , 1, ConPhaseCutoffTemp);
xlsx.write(row , 2, phase.cutoff_temp);
xlsx.write(row , 3, ConUnitDegreeCentigrade);
row++;
xlsx.write(row , 1, ConPhaseHeatingRate);
xlsx.write(row , 2, phase.temp_flow);
xlsx.write(row , 3, ConUnitDegreeCentigradePerMin);
row++;
xlsx.write(row , 1, ConPhaseConstantTempTime);
xlsx.write(row , 2, phase.constant_temp_time_min);
xlsx.write(row , 3, ConUnitMin);
row++;
xlsx.write(row , 1, ConPhaseAtmosphere);
switch(phase.gas){
case GasType::NC:
xlsx.write(row , 2, "NC");
break;
case GasType::N2:
xlsx.write(row , 2, "N2");
break;
case GasType::O2:
xlsx.write(row , 2, "O2");
break;
default:break;
}
row++;
// phase data.
dataSizeRow = row;
xlsx.write(row , 1, ConPhaseDataSize);
xlsx.write(row , 2, 0);
row++;
}
#if 0 #if 0
// 创建一个新的 Excel 文档 // 创建一个新的 Excel 文档
QXlsx::Document xlsx; QXlsx::Document xlsx;

View File

@ -13,6 +13,32 @@ namespace XlsxHandler {
void readPhaseData(QXlsx::Worksheet*,int& startLineIndex,Global::PhaseTotalInfo&); void readPhaseData(QXlsx::Worksheet*,int& startLineIndex,Global::PhaseTotalInfo&);
void writeFile(); void writeFile();
const QString ConUnitMg = "mg";
const QString ConUnitDegreeCentigrade = "";
const QString ConUnitDegreeCentigradePerMin = "℃/min";
const QString ConUnitMin = "min";
const QString ConFileDataInfo = "文件数据信息";
const QString ConSampleName = "样品名称:";
const QString ConSampleWeight = "样品质量:";
const QString ConCrucibleWeight = "坩埚质量:";
const QString Conexperimenter = "实验人员:";
const QString ConDate = "实验日期:";
const QString ConMeasureType = "测量类型:";
const QString ConPhaseSize = "阶段数量:";
const QString ConPhaseProfix = "#";
const QString ConPhaseHeaderTime = "Time/min";
const QString ConPhaseHeaderTemp = "Temp/℃";
const QString ConPhaseHeaderVoltage = "Voltage/mW";
const QString ConPhaseIndex = "阶段索引:";
const QString ConPhaseCutoffTemp = "截止温度:";
const QString ConPhaseHeatingRate = "升温速率:";
const QString ConPhaseConstantTempTime = "恒温时间:";
const QString ConPhaseAtmosphere = "气氛:";
const QString ConPhaseDataSize = "数据个数:";
} }
#endif // XLSX_H #endif // XLSX_H

View File

@ -2,6 +2,7 @@
#define DEFINES_H #define DEFINES_H
#include <cstdint> #include <cstdint>
#include <QtCore>
typedef uint8_t uchar; typedef uint8_t uchar;
@ -9,4 +10,6 @@ typedef uint8_t u8;
typedef uint16_t u16; typedef uint16_t u16;
typedef uint32_t u32; typedef uint32_t u32;
const QString ConSoftVersion = "0.9.0";
#endif // DEFINES_H #endif // DEFINES_H

View File

@ -1,5 +1,13 @@
#include "global.h" #include "global.h"
namespace Global {
ExperimentInfo _experimentInfo;
Mode _mode;
QVector<QPair<QCPCurve*,QVector<Global::ExperimentData>>> _curveDataVtr;
}
#if 0
Global::Global() Global::Global()
{ {
_mode = Global::Mode::Analysis; _mode = Global::Mode::Analysis;
@ -29,3 +37,5 @@ void Global::setDeviceConnectionStatus(const Global::DeviceConnectionStatus stat
} }
} }
#endif #endif
#endif

View File

@ -7,6 +7,58 @@
#include "protocol.h" #include "protocol.h"
namespace Global {
enum Mode{
Analysis,
ConnectedToDev,
DeliveredData,
ExperimentStart
};
enum DeviceConnectionStatus{
Disconnected,
Connected
};
struct ExperimentData {
float runTime;
float constantTempTime;
float sampleTemp;
float dsc;
};
enum TestType{
OIT,
NoneOIT
};
struct ExperimentInfo{
// experiment info
QString sampleName;
QString sampleWeight;
QString date;
QString experimentor;
// phase info
TestType testType;
GasType initialAtmosPhere;
int phaseSize;
QVector<Phase> phaseVtr;
};
struct PhaseTotalInfo{
int phaseIndex; // from 1 to 6.
Phase phase;
QVector<ExperimentData> dataVtr;
};
//
extern QVector<QPair<QCPCurve*,QVector<Global::ExperimentData>>> _curveDataVtr;
extern ExperimentInfo _experimentInfo;
extern Mode _mode;
}
#if 0
class Global:public QObject class Global:public QObject
{ {
Q_OBJECT Q_OBJECT
@ -40,22 +92,37 @@ public:
float dsc; float dsc;
}; };
struct ExpeInfo // struct ExpeInfo
{ // {
QString sampleName; // QString sampleName;
float sampleWeight; // float sampleWeight;
QString date; // QString date;
QString userName; // QString userName;
// };
enum TestType{
OIT,
NoneOIT
}; };
struct ExperimentInfo{ struct ExperimentInfo{
// experiment info
QString sampleName; QString sampleName;
QString sampleWeight; QString sampleWeight;
QString date; QString date;
QString operatorName; QString experimentor;
// phase info
TestType testType;
GasType initialAtmosPhere;
int phaseSize; int phaseSize;
QVector<Phase> phaseVtr;
}; };
ExperimentInfo _experimentInfo;
struct PhaseTotalInfo{ struct PhaseTotalInfo{
int phaseIndex; int phaseIndex; // from 1 to 6.
Phase phase; Phase phase;
QVector<ExperimentData> dataVtr; QVector<ExperimentData> dataVtr;
}; };
@ -70,5 +137,6 @@ private:
Mode _mode; Mode _mode;
DeviceConnectionStatus _deviceConnectStatus; DeviceConnectionStatus _deviceConnectStatus;
}; };
#endif
#endif // GLOBAL_H #endif // GLOBAL_H

View File

@ -28,23 +28,23 @@ int main(int argc, char *argv[])
XlsxHandler::test(); XlsxHandler::test();
// FileManager::test(); // FileManager::test();
// ExperimentSettingForm es; // ExperimentSettingForm es;
// es.show(); // es.show();
// CentralWidget central; // CentralWidget central;
// central.show(); // central.show();
// SerialPort::parserTest(); // SerialPort::parserTest();
// SerialPort sp; // SerialPort sp;
// RealTimeDataForm r; // RealTimeDataForm r;
// r.show(); // r.show();
// QObject::connect(&sp,&SerialPort::sigSendSerialPortData, // QObject::connect(&sp,&SerialPort::sigSendSerialPortData,
// &r,&RealTimeDataForm::slotRevSerialPortData); // &r,&RealTimeDataForm::slotRevSerialPortData);
return a.exec(); return a.exec();
} }

View File

@ -22,6 +22,7 @@ MainWindow::MainWindow(QWidget *parent)
,_degreeOfCureForm(new DegreeOfCureForm(this)) ,_degreeOfCureForm(new DegreeOfCureForm(this))
,_OITAutoAnalysisParamForm(new OITAutoAnalysisParamForm(this)) ,_OITAutoAnalysisParamForm(new OITAutoAnalysisParamForm(this))
,_degreeOfCrystallinityForm(new DegreeOfCrystallinityForm(this)) ,_degreeOfCrystallinityForm(new DegreeOfCrystallinityForm(this))
,_aboutForm(new AboutForm(this))
{ {
ui->setupUi(this); ui->setupUi(this);
this->setToolTip("....."); this->setToolTip(".....");
@ -36,7 +37,7 @@ MainWindow::MainWindow(QWidget *parent)
ui->statusbar->showMessage("showMessage show temp message!"); ui->statusbar->showMessage("showMessage show temp message!");
// permenent show // permenent show
QLabel *permenentLabel = new QLabel(this); QLabel *permenentLabel = new QLabel(this);
permenentLabel->setText("Permanent show!"); permenentLabel->setText("Software Ver:" + ConSoftVersion);
ui->statusbar->addPermanentWidget(permenentLabel); ui->statusbar->addPermanentWidget(permenentLabel);
// //
#if 0 #if 0
@ -69,6 +70,7 @@ MainWindow::MainWindow(QWidget *parent)
setSubWidgetAttribute(_instrumentCoefficientForm); setSubWidgetAttribute(_instrumentCoefficientForm);
setSubWidgetAttribute(_OITAutoAnalysisParamForm); setSubWidgetAttribute(_OITAutoAnalysisParamForm);
setSubWidgetAttribute(_degreeOfCrystallinityForm); setSubWidgetAttribute(_degreeOfCrystallinityForm);
setSubWidgetAttribute(_aboutForm);
// //
setActionEnable(true); setActionEnable(true);
@ -114,8 +116,8 @@ void MainWindow::connections()
#endif #endif
// mode // mode
connect(Global::instance(), &Global::sigModeModify, // connect(Global::instance(), &Global::sigModeModify,
_centralWidget, &CentralWidget::slotModeModify); // _centralWidget, &CentralWidget::slotModeModify);
//analysis //analysis
connect(_leftWidget,&LeftWidget::sigSendAnalysisFileName, connect(_leftWidget,&LeftWidget::sigSendAnalysisFileName,
_centralWidget,&CentralWidget::slotRecvAnalysisFileName); _centralWidget,&CentralWidget::slotRecvAnalysisFileName);
@ -171,7 +173,8 @@ void MainWindow::on_actionStop_triggered()
FileManager::close(); FileManager::close();
Global::instance()->setMode(Global::Mode::Analysis); // Global::instance()->setMode(Global::Mode::Analysis);
Global::_mode = Global::Mode::Analysis;
} }
void MainWindow::on_actionNew_triggered() void MainWindow::on_actionNew_triggered()
@ -190,12 +193,14 @@ void MainWindow::on_actionStart_triggered()
// //
FileManager::createExperimentFile(); FileManager::createExperimentFile();
Global::instance()->setMode(Global::Mode::ExperimentStart); // Global::instance()->setMode(Global::Mode::ExperimentStart);
Global::_mode = Global::Mode::ExperimentStart;
} }
void MainWindow::on_actionReadOnly_triggered() void MainWindow::on_actionReadOnly_triggered()
{ {
Global::instance()->setMode(Global::Mode::ExperimentStart); // Global::instance()->setMode(Global::Mode::ExperimentStart);
Global::_mode = Global::Mode::ExperimentStart;
SerialPort::instance()->openSp(); SerialPort::instance()->openSp();
} }
@ -209,7 +214,8 @@ void MainWindow::on_actionConnectToDev_triggered()
if (SerialPort::instance()->openSp()) if (SerialPort::instance()->openSp())
{ {
setActionEnable(true); setActionEnable(true);
Global::instance()->setMode(Global::Mode::ConnectedToDev); // Global::instance()->setMode(Global::Mode::ConnectedToDev);
Global::_mode = Global::Mode::ConnectedToDev;
QByteArray ba = DataParser::inquirePhaseInfo(); QByteArray ba = DataParser::inquirePhaseInfo();
SerialPort::instance()->sendData(ba); SerialPort::instance()->sendData(ba);
@ -305,3 +311,8 @@ void MainWindow::on_actionDegreeOfCuring_triggered()
// //
_degreeOfCureForm->show(); _degreeOfCureForm->show();
} }
void MainWindow::on_actionAbout_triggered()
{
_aboutForm->show();
}

View File

@ -17,6 +17,7 @@
#include "instrumentcoefficientform.h" #include "instrumentcoefficientform.h"
#include "degreeofcureform.h" #include "degreeofcureform.h"
#include "oitautoanalysisparamform.h" #include "oitautoanalysisparamform.h"
#include "aboutform.h"
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; } namespace Ui { class MainWindow; }
@ -69,6 +70,8 @@ private slots:
void on_actionDegreeOfCuring_triggered(); void on_actionDegreeOfCuring_triggered();
void on_actionAbout_triggered();
private: private:
void connections(); void connections();
void setActionEnable(const bool); void setActionEnable(const bool);
@ -88,5 +91,6 @@ private:
InstrumentCoefficientForm* _instrumentCoefficientForm; InstrumentCoefficientForm* _instrumentCoefficientForm;
DegreeOfCureForm *_degreeOfCureForm; DegreeOfCureForm *_degreeOfCureForm;
OITAutoAnalysisParamForm* _OITAutoAnalysisParamForm; OITAutoAnalysisParamForm* _OITAutoAnalysisParamForm;
AboutForm *_aboutForm;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View File

@ -77,6 +77,7 @@
<property name="title"> <property name="title">
<string>帮助</string> <string>帮助</string>
</property> </property>
<addaction name="actionAbout"/>
</widget> </widget>
<addaction name="menu"/> <addaction name="menu"/>
<addaction name="menu_2"/> <addaction name="menu_2"/>
@ -247,6 +248,11 @@
<string>固化度</string> <string>固化度</string>
</property> </property>
</action> </action>
<action name="actionAbout">
<property name="text">
<string>关于</string>
</property>
</action>
</widget> </widget>
<resources> <resources>
<include location="images.qrc"/> <include location="images.qrc"/>

View File

@ -182,7 +182,8 @@ namespace DataParser
switch(cd.run_type){ switch(cd.run_type){
case DeviceRunStatus::Idle: case DeviceRunStatus::Idle:
case DeviceRunStatus::Cooling: case DeviceRunStatus::Cooling:
Global::instance()->setMode(Global::Mode::Analysis); // Global::instance()->setMode(Global::Mode::Analysis);
Global::_mode = Global::Mode::Analysis;
return true; return true;
break; break;
default:break; default:break;

View File

@ -132,7 +132,7 @@ void SerialPort::slotReadData()
// read data // read data
if (spp->addr == 0) if (spp->addr == 0)
{ {
if (Global::Mode::ExperimentStart == Global::instance()->getMode()) if (Global::Mode::ExperimentStart == Global::_mode)
{ {
emit sigSendCommonData(cd); emit sigSendCommonData(cd);
} }
@ -172,7 +172,8 @@ void SerialPort::commonDataParser(const int dataLength, const u16 addr,
{ {
switch(cd.run_type){ switch(cd.run_type){
case DeviceRunStatus::Cooling: case DeviceRunStatus::Cooling:
Global::instance()->setMode(Global::Mode::Analysis); // Global::instance()->setMode(Global::Mode::Analysis);
Global::_mode = Global::Mode::Analysis;
break; break;
default:break; default:break;
} }
@ -198,10 +199,12 @@ void SerialPort::commonDataParser(const int dataLength, const u16 addr,
switch (mode) switch (mode)
{ {
case DeviceStartMode::Stop: case DeviceStartMode::Stop:
Global::instance()->setMode(Global::Mode::Analysis); // Global::instance()->setMode(Global::Mode::Analysis);
Global::_mode = Global::Mode::Analysis;
break; break;
case DeviceStartMode::Start: case DeviceStartMode::Start:
Global::instance()->setMode(Global::Mode::ExperimentStart); // Global::instance()->setMode(Global::Mode::ExperimentStart);
Global::_mode = Global::Mode::ExperimentStart;
break; break;
default: default:
break; break;

24
src/ui/aboutform.cpp Normal file
View File

@ -0,0 +1,24 @@
#include "aboutform.h"
#include "ui_aboutform.h"
#include "defines.h"
AboutForm::AboutForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::AboutForm)
{
ui->setupUi(this);
// ui->labelContent->setText(ConSoftVersion);
ui->labelContent->setAlignment(Qt::AlignTop | Qt::AlignLeft);
ui->labelContent->setText(QString("软件版本:%1").arg(ConSoftVersion));
}
AboutForm::~AboutForm()
{
delete ui;
}
void AboutForm::on_pushButtonClose_clicked()
{
hide();
}

25
src/ui/aboutform.h Normal file
View File

@ -0,0 +1,25 @@
#ifndef ABOUTFORM_H
#define ABOUTFORM_H
#include <QWidget>
namespace Ui {
class AboutForm;
}
class AboutForm : public QWidget
{
Q_OBJECT
public:
explicit AboutForm(QWidget *parent = nullptr);
~AboutForm();
private slots:
void on_pushButtonClose_clicked();
private:
Ui::AboutForm *ui;
};
#endif // ABOUTFORM_H

58
src/ui/aboutform.ui Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AboutForm</class>
<widget class="QWidget" name="AboutForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>428</width>
<height>290</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="labelLogo">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>131</width>
<height>101</height>
</rect>
</property>
<property name="text">
<string>差示扫描量热仪Logo</string>
</property>
</widget>
<widget class="QLabel" name="labelContent">
<property name="geometry">
<rect>
<x>150</x>
<y>20</y>
<width>261</width>
<height>251</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="pushButtonClose">
<property name="geometry">
<rect>
<x>300</x>
<y>240</y>
<width>80</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>关闭</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -45,7 +45,7 @@ CentralWidget::CentralWidget(QWidget *parent)
_eventHandler->setEnable(true); _eventHandler->setEnable(true);
_customPlot->installEventFilter(_eventHandler); _customPlot->installEventFilter(_eventHandler);
// _customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); // _customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);
_customPlot->setInteractions( QCP::iRangeZoom | QCP::iSelectPlottables); _customPlot->setInteractions( QCP::iRangeZoom | QCP::iSelectPlottables);
connect(_eventHandler,&EventHandler::sigSendLineXCoord, connect(_eventHandler,&EventHandler::sigSendLineXCoord,
@ -129,9 +129,35 @@ void CentralWidget::slotRecvCommonData(const CommonData &cd)
{ {
qDebug() << "slotRevCommonData"; qDebug() << "slotRevCommonData";
_customPlot->graph(0)->addData(cd.sample_temp, cd.dsc); // 添加数据到曲线 if(!_currentCurve){
_customPlot->replot(); _currentCurve = new QCPCurve(_customPlot->xAxis, _customPlot->yAxis);
Global::_curveDataVtr.clear();
Global::_curveDataVtr.push_back(qMakePair<QCPCurve*, QVector<Global::ExperimentData>>(
_currentCurve, QVector<Global::ExperimentData>()
));
}
QVector<Global::ExperimentData>& edVtr = Global::_curveDataVtr.first().second;
Global::ExperimentData ed;
ed.dsc = cd .dsc;
ed.sampleTemp = cd.sample_temp;
ed.runTime = cd.add_run_time;
ed.constantTempTime = cd.add_constan_temp_time;
edVtr.push_back(ed);
_currentCurve->addData(cd.sample_temp, cd.dsc);
// customPlot->xAxis->rescale();
// customPlot->yAxis->rescale();
// _customPlot->graph(0)->addData(cd.sample_temp, cd.dsc); // 添加数据到曲线
_customPlot->rescaleAxes(); _customPlot->rescaleAxes();
_customPlot->replot();
// //
FileManager::writeExperimentFile(cd); FileManager::writeExperimentFile(cd);
} }
@ -182,8 +208,7 @@ void CentralWidget::slotRecvAnalysisFileName(const QString &fileName)
_currentCurve->setSelectable(QCP::stWhole); // 设置曲线可选 _currentCurve->setSelectable(QCP::stWhole); // 设置曲线可选
// _currentCurve->setSelectable(QCP::stPlottable); // 设置曲线可选 // _currentCurve->setSelectable(QCP::stPlottable); // 设置曲线可选
Global::instance()->_curveDataVtr.push_back( Global::_curveDataVtr.push_back(qMakePair<QCPCurve*,QVector<Global::ExperimentData>>(
qMakePair<QCPCurve*,QVector<Global::ExperimentData>>(
_currentCurve,_dataVtr)); _currentCurve,_dataVtr));
// 清除第一个图表上的数据 // 清除第一个图表上的数据
@ -604,7 +629,7 @@ void CentralWidget::clearData(const CentralWidget::ClearDataMode mode)
} }
// Clear data. // Clear data.
Global::instance()->_curveDataVtr.clear(); Global::_curveDataVtr.clear();
// Set lines visiable false. // Set lines visiable false.
_line1->setVisible(false); _line1->setVisible(false);

View File

@ -406,12 +406,21 @@ void ExperimentSettingForm::slotConnectToDevice()
qDebug() << "ba size:" << ba.size(); qDebug() << "ba size:" << ba.size();
emit sigDeliverData(ba); emit sigDeliverData(ba);
// Global::instance()->setMode(Global::Mode::ConnectedToDev); //
Global::ExperimentInfo& ei = Global::_experimentInfo;
ei.phaseVtr = phaseVtr;
ei.sampleName = ui->sampleNameLineEdit->text();
ei.sampleWeight = ui->sampleWeightLineEdit->text();
ei.date = ui->dateTimeLineEdit->text();
ei.experimentor = ui->userLineEdit->text();
#if 0 if(ui->radioButton_OIT->isChecked()){
QByteArray startBa = DataParser::setDeviceStartStop(DeviceStartMode::Start); ei.testType = Global::TestType::OIT;
emit sigConnectToDevice(startBa); } else if(ui->radioButton_OIT_not->isChecked()){
#endif ei.testType = Global::TestType::NoneOIT;
}
ei.initialAtmosPhere = (GasType)(ui->comboBox_phase_1_atmosphere->currentIndex());
hide(); hide();
} }
@ -482,7 +491,7 @@ void ExperimentSettingForm::on_pushButton_deliverData_clicked()
FileManager::_expeInfo.sampleName = ui->sampleNameLineEdit->text(); FileManager::_expeInfo.sampleName = ui->sampleNameLineEdit->text();
FileManager::_expeInfo.sampleWeight = ui->sampleWeightLineEdit->text().toInt(nullptr, 16); FileManager::_expeInfo.sampleWeight = ui->sampleWeightLineEdit->text().toInt(nullptr, 16);
FileManager::_expeInfo.date = ui->dateTimeLineEdit->text(); FileManager::_expeInfo.date = ui->dateTimeLineEdit->text();
FileManager::_expeInfo.userName = ui->userLineEdit->text(); FileManager::_expeInfo.experimentor = ui->userLineEdit->text();
} }
void ExperimentSettingForm::slotRecvPhaseInfo(const QByteArray &ba) void ExperimentSettingForm::slotRecvPhaseInfo(const QByteArray &ba)

View File

@ -78,7 +78,7 @@ void LeftWidget::initData()
void LeftWidget::slotTreeWidgetItemClicked(QTreeWidgetItem *item, int column){ void LeftWidget::slotTreeWidgetItemClicked(QTreeWidgetItem *item, int column){
qDebug()<<"item clicked:"<<item->text(0)<<column; qDebug()<<"item clicked:"<<item->text(0)<<column;
if(Global::Mode::Analysis != Global::instance()->getMode()){ if(Global::Mode::Analysis != Global::_mode){
return; return;
} }

View File

@ -82,7 +82,7 @@ void SpecificHeatComparisonMethodForm::slotSetCurve(const int type, QCPCurve *c
void SpecificHeatComparisonMethodForm::on_pushButtonCalculate_clicked() void SpecificHeatComparisonMethodForm::on_pushButtonCalculate_clicked()
{ {
auto& curveDataVtr = Global::instance()->_curveDataVtr; auto& curveDataVtr = Global::_curveDataVtr;
QVector<Global::ExperimentData> *baseLineDataVtr = nullptr, QVector<Global::ExperimentData> *baseLineDataVtr = nullptr,
*standardSampleDataVtr = nullptr, *standardSampleDataVtr = nullptr,
*sampleDataVtr = nullptr; *sampleDataVtr = nullptr;