DSCAnalysisTool/src/ui/experimentsettingform.cpp

230 lines
7.9 KiB
C++
Raw Normal View History

2025-03-10 09:35:07 +00:00
#include <QtDebug>
#include "experimentsettingform.h"
#include "ui_experimentsettingform.h"
#include "protocol.h"
2025-03-11 09:31:15 +00:00
#include "dataparser.h"
#include "serialport.h"
2025-03-12 09:29:52 +00:00
#include "global.h"
2025-03-10 09:35:07 +00:00
ExperimentSettingForm::ExperimentSettingForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::ExperimentSettingForm)
{
ui->setupUi(this);
uiReset();
connect(ui->checkBox_phase_2,&QCheckBox::clicked,
this,&ExperimentSettingForm::slotPhase2StateChanged);
connect(ui->checkBox_phase_3,&QCheckBox::clicked,
this,&ExperimentSettingForm::slotPhase3StateChanged);
connect(ui->checkBox_phase_4,&QCheckBox::clicked,
this,&ExperimentSettingForm::slotPhase4StateChanged);
2025-03-13 09:27:31 +00:00
// connect(ui->pushButton_connect_to_device,&QPushButton::clicked,
// this,&ExperimentSettingForm::slotConnectToDevice);
2025-03-11 09:31:15 +00:00
connect(ui->pushButton_cancel,&QPushButton::clicked,
2025-03-10 09:35:07 +00:00
this,&ExperimentSettingForm::slotCancel);
}
ExperimentSettingForm::~ExperimentSettingForm()
{
delete ui;
}
void ExperimentSettingForm::uiReset()
{
//init data and status.
ui->checkBox_phase_1->setChecked(true);
ui->checkBox_phase_1->setEnabled(false);
ui->phase_1_cutoff_temp->setText("0");
ui->phase_2_cutoff_temp->setText("0");
ui->phase_3_cutoff_temp->setText("0");
ui->phase_4_cutoff_temp->setText("0");
ui->phase_1_scan_rate->setText("0");
ui->phase_2_scan_rate->setText("0");
ui->phase_3_scan_rate->setText("0");
ui->phase_4_scan_rate->setText("0");
ui->phase_1_constant_temp->setText("0");
ui->phase_2_constant_temp->setText("0");
ui->phase_3_constant_temp->setText("0");
ui->phase_4_constant_temp->setText("0");
ui->phase_2_cutoff_temp->setEnabled(false);
ui->phase_3_cutoff_temp->setEnabled(false);
ui->phase_4_cutoff_temp->setEnabled(false);
ui->phase_2_scan_rate->setEnabled(false);
ui->phase_3_scan_rate->setEnabled(false);
ui->phase_4_scan_rate->setEnabled(false);
ui->phase_2_constant_temp->setEnabled(false);
ui->phase_3_constant_temp->setEnabled(false);
ui->phase_4_constant_temp->setEnabled(false);
ui->comboBox_phase_2_atmosphere->setEnabled(false);
ui->comboBox_phase_3_atmosphere->setEnabled(false);
ui->comboBox_phase_4_atmosphere->setEnabled(false);
ui->radioButton_OIT_not->setChecked(true);
ui->checkBox_phase_2->setTristate(false);
ui->checkBox_phase_3->setTristate(false);
ui->checkBox_phase_4->setTristate(false);
}
void ExperimentSettingForm::slotPhase2StateChanged(int state)
{
qDebug()<<"slotPhase2StateChanged:"<<state;
if(state == Qt::PartiallyChecked){
ui->phase_2_cutoff_temp->setEnabled(true);
ui->phase_2_scan_rate->setEnabled(true);
ui->phase_2_constant_temp->setEnabled(true);
ui->comboBox_phase_2_atmosphere->setEnabled(true);
}else{
if(ui->checkBox_phase_3->isChecked()){
ui->checkBox_phase_2->setCheckState(Qt::Checked);
}else {
ui->phase_2_cutoff_temp->setEnabled(false);
ui->phase_2_scan_rate->setEnabled(false);
ui->phase_2_constant_temp->setEnabled(false);
ui->comboBox_phase_2_atmosphere->setEnabled(false);
}
}
}
void ExperimentSettingForm::slotPhase3StateChanged(int state)
{
if(state == Qt::PartiallyChecked){
if(ui->checkBox_phase_2->isChecked()){
ui->phase_3_cutoff_temp->setEnabled(true);
ui->phase_3_scan_rate->setEnabled(true);
ui->phase_3_constant_temp->setEnabled(true);
ui->comboBox_phase_3_atmosphere->setEnabled(true);
}else{
ui->checkBox_phase_3->setChecked(false);
}
}else{
if(ui->checkBox_phase_4->isChecked()){
ui->checkBox_phase_3->setChecked(true);
}else{
ui->phase_3_cutoff_temp->setEnabled(false);
ui->phase_3_scan_rate->setEnabled(false);
ui->phase_3_constant_temp->setEnabled(false);
ui->comboBox_phase_3_atmosphere->setEnabled(false);
}
}
}
void ExperimentSettingForm::slotPhase4StateChanged(int state)
{
if(state == Qt::PartiallyChecked){
if(ui->checkBox_phase_3->isChecked()){
ui->phase_4_cutoff_temp->setEnabled(true);
ui->phase_4_scan_rate->setEnabled(true);
ui->phase_4_constant_temp->setEnabled(true);
ui->comboBox_phase_4_atmosphere->setEnabled(true);
}else{
ui->checkBox_phase_4->setChecked(false);
}
}else{
ui->phase_4_cutoff_temp->setEnabled(false);
ui->phase_4_scan_rate->setEnabled(false);
ui->phase_4_constant_temp->setEnabled(false);
ui->comboBox_phase_4_atmosphere->setEnabled(false);
}
}
void ExperimentSettingForm::slotConnectToDevice()
{
QVector<Phase> phaseVtr;
if(ui->checkBox_phase_1->checkState()){
Phase phase;
phase.onoff = 1;
phase.cutoff_temp = ui->phase_1_cutoff_temp->text().toFloat();
phase.temp_flow = ui->phase_1_scan_rate->text().toFloat();
phase.constant_temp_time_min = (uint16_t)ui->phase_1_constant_temp->text().toInt();
// phase.gas = ui->comboBox_phase_1_atmosphere->currentIndex();
phase.gas = GasType::N2;
phaseVtr.push_back(phase);
}
if(ui->checkBox_phase_2->checkState()){
Phase phase;
phase.onoff = 1;
phase.cutoff_temp = ui->phase_2_cutoff_temp->text().toFloat();
phase.temp_flow = ui->phase_2_scan_rate->text().toFloat();
phase.constant_temp_time_min = (uint16_t)ui->phase_2_constant_temp->text().toInt();
// phase.gas = ui->comboBox_phase_1_atmosphere->currentIndex();
phase.gas = GasType::N2;
phaseVtr.push_back(phase);
}
2025-03-11 09:31:15 +00:00
QByteArray ba = DataParser::connectToDevice(phaseVtr);
qDebug()<<"ba size:"<<ba.size();
emit sigConnectToDevice(ba);
2025-03-12 09:29:52 +00:00
2025-03-13 09:27:31 +00:00
Global::instance()->setMode(Global::Mode::ConnectedToDev);
2025-03-12 09:29:52 +00:00
#if 0
QByteArray startBa = DataParser::setDeviceStartStop(DeviceStartMode::Start);
emit sigConnectToDevice(startBa);
#endif
hide();
2025-03-10 09:35:07 +00:00
}
void ExperimentSettingForm::slotCancel()
{
2025-03-13 09:27:31 +00:00
hide();
2025-03-10 09:35:07 +00:00
}
void ExperimentSettingForm::slotPhaseCheck()
{
if(sender() == ui->checkBox_phase_2){
if(ui->checkBox_phase_2->isChecked()){
ui->phase_2_cutoff_temp->setEnabled(true);
ui->phase_2_scan_rate->setEnabled(true);
ui->phase_2_constant_temp->setEnabled(true);
ui->comboBox_phase_2_atmosphere->setEnabled(true);
}else{
ui->phase_2_cutoff_temp->setEnabled(false);
ui->phase_2_scan_rate->setEnabled(false);
ui->phase_2_constant_temp->setEnabled(false);
ui->comboBox_phase_2_atmosphere->setEnabled(false);
}
}else if(sender() == ui->checkBox_phase_3){
if(ui->checkBox_phase_3->isChecked()){
ui->phase_3_cutoff_temp->setEnabled(true);
ui->phase_3_scan_rate->setEnabled(true);
ui->phase_3_constant_temp->setEnabled(true);
ui->comboBox_phase_3_atmosphere->setEnabled(true);
}else{
ui->phase_3_cutoff_temp->setEnabled(false);
ui->phase_3_scan_rate->setEnabled(false);
ui->phase_3_constant_temp->setEnabled(false);
ui->comboBox_phase_3_atmosphere->setEnabled(false);
}
}else if(sender() == ui->checkBox_phase_4){
if(ui->checkBox_phase_4->isChecked()){
ui->phase_4_cutoff_temp->setEnabled(true);
ui->phase_4_scan_rate->setEnabled(true);
ui->phase_4_constant_temp->setEnabled(true);
ui->comboBox_phase_4_atmosphere->setEnabled(true);
}else{
ui->phase_4_cutoff_temp->setEnabled(false);
ui->phase_4_scan_rate->setEnabled(false);
ui->phase_4_constant_temp->setEnabled(false);
ui->comboBox_phase_4_atmosphere->setEnabled(false);
}
}
}
2025-03-13 09:27:31 +00:00
void ExperimentSettingForm::on_pushButton_connect_to_device_clicked()
{
slotConnectToDevice();
}