diff --git a/src/data/filemanager.cpp b/src/data/filemanager.cpp index 8207daf..d5eebaf 100644 --- a/src/data/filemanager.cpp +++ b/src/data/filemanager.cpp @@ -19,7 +19,7 @@ void writeExperimentFile(const CommonData &cd) } QTextStream out(&_expeFile); out.setRealNumberPrecision(3); // 设置精度为三位小数 - out.setRealNumberNotation(QTextStream::FixedNotation); + out.setRealNumberNotation(QTextStream::FixedNotation); out << cd.sample_temp << " " << cd.dsc << endl; @@ -34,8 +34,7 @@ void createExperimentFile() fileName.append("_"); if(_expeInfo.date.isEmpty()){ -// fileName.append(QDateTime::currentDateTime().toUTC().toString("yyyyMMdd_HHmmss")); - fileName.append(QDateTime::currentDateTime().toString("yyyyMMdd_HHmmss")); + fileName.append(QDateTime::currentDateTime().toString("yyyyMMdd_HHmmss")); }else{ fileName.append(_expeInfo.date); } @@ -63,9 +62,9 @@ void test() void fileClose() { - if(_expeFile.isOpen()){ - _expeFile.close(); - } + if(_expeFile.isOpen()){ + _expeFile.close(); + } } } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2124cdd..f4b8ef0 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -121,6 +121,7 @@ void MainWindow::on_actionConnectToDev_triggered() { setActionEnable(true); Global::instance()->setMode(Global::Mode::ConnectedToDev); + QByteArray ba = DataParser::inquirePhaseInfo(); SerialPort::instance()->sendData(ba); } diff --git a/src/serialport/protocol.h b/src/serialport/protocol.h index 0a985b1..f160ed8 100644 --- a/src/serialport/protocol.h +++ b/src/serialport/protocol.h @@ -13,6 +13,14 @@ #pragma pack(push) #pragma pack(1) +enum DeviceRunStatus{ + Idle, + Heat, + ConstantTemp, + Cooling, + HeatingReteSelfTunning +}; + enum DeviceStartMode{ Stop, Start, diff --git a/src/serialport/serialport.cpp b/src/serialport/serialport.cpp index ffbf5fb..8fe5c3f 100644 --- a/src/serialport/serialport.cpp +++ b/src/serialport/serialport.cpp @@ -101,6 +101,7 @@ void SerialPort::slotReadData() #if 1 QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数 qDebug() << "receive info (hex):" << hexData; + return; #endif SerialPortProtocol *spp = (SerialPortProtocol *)ba.data(); if (FRANE_HEAD != spp->head) @@ -123,10 +124,12 @@ void SerialPort::slotReadData() if (WRITE_CMD == spp->cmd) { - writeCmdHandle(dataLength, spp->addr, cd); + commonDataParser(dataLength, spp->addr, cd); } else if (READ_CMD == spp->cmd) { + // judge the device status. + commonDataParser(dataLength, spp->addr, cd); // read data if (spp->addr == 0) { @@ -140,8 +143,8 @@ void SerialPort::slotReadData() #endif } -void SerialPort::writeCmdHandle(const int dataLength, const u16 addr, - const CommonData &cd) +void SerialPort::commonDataParser(const int dataLength, const u16 addr, + const CommonData &cd) { int localLength = dataLength; int localAddr = addr; @@ -155,7 +158,7 @@ void SerialPort::writeCmdHandle(const int dataLength, const u16 addr, phase.temp_flow = cd.phase_data[index].temp_flow; phase.cutoff_temp = cd.phase_data[index].cutoff_temp; phase.constant_temp_time_min = - cd.phase_data[index].constant_temp_time_min; + cd.phase_data[index].constant_temp_time_min; localLength -= phaseByteSize; localAddr += phaseByteSize; @@ -165,6 +168,20 @@ void SerialPort::writeCmdHandle(const int dataLength, const u16 addr, { switch (localAddr) { + case offsetof(CommonData, run_type): // 运行状态 + { + switch(cd.run_type){ + case DeviceRunStatus::Cooling: + Global::instance()->setMode(Global::Mode::Analysis); + break; + default:break; + } + + localAddr += 1; + localLength -= 1; + + break; + } case offsetof(CommonData, current_gas): // 当前气氛 // gas_type_set(dev->temp, msg_data.current_gas); localAddr += 1; @@ -414,6 +431,7 @@ void SerialPort::parserTest() void SerialPort::slotDeliverData(const QByteArray &ba) { + qDebug()<<"slotDeliverData..."; openSp(); slotSendData(ba); @@ -421,13 +439,6 @@ void SerialPort::slotDeliverData(const QByteArray &ba) void SerialPort::slotSendData(const QByteArray &ba) { -#if 0 - if (WRITE_CMD == ba.at(3)) - { - _lastWriteBa = ba; - } -#endif - #if 1 qDebug() << "slotSendData:" << ba.size(); QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数 diff --git a/src/serialport/serialport.h b/src/serialport/serialport.h index 6eb8225..885941c 100644 --- a/src/serialport/serialport.h +++ b/src/serialport/serialport.h @@ -23,7 +23,7 @@ public: ~SerialPort(); void sendData(const QByteArray &data) - {slotSendData(data); } + { slotSendData(data); } void sendCmd(const E_CMD_TYPE e); static void parserTest(); bool openSp(); @@ -43,7 +43,7 @@ private slots: void slotReadData(); private: - void writeCmdHandle(const int dataLength, const u16 addr, const CommonData &cd); + void commonDataParser(const int dataLength, const u16 addr, const CommonData &cd); void to_hex(char *in_char, int char_length, char *out_char); void displayPortInfo(); diff --git a/src/ui/centralwidget.cpp b/src/ui/centralwidget.cpp index 907af6c..368535d 100644 --- a/src/ui/centralwidget.cpp +++ b/src/ui/centralwidget.cpp @@ -35,6 +35,11 @@ CentralWidget::CentralWidget(QWidget *parent) // startTimer(1000); } +CentralWidget::~CentralWidget() +{ + FileManager::fileClose(); +} + void CentralWidget::slotModeModify(const Global::Mode mode) { if (Global::Mode::ExperimentStart == mode) @@ -51,6 +56,8 @@ void CentralWidget::slotModeModify(const Global::Mode mode) } else if (Global::Mode::Analysis == mode) { + qDebug()<<"file close..."; + FileManager::fileClose(); } } diff --git a/src/ui/centralwidget.h b/src/ui/centralwidget.h index 09a4cfb..3f2b1f7 100644 --- a/src/ui/centralwidget.h +++ b/src/ui/centralwidget.h @@ -12,6 +12,7 @@ class CentralWidget:public QWidget Q_OBJECT public: CentralWidget(QWidget *parent = nullptr); + ~CentralWidget(); public slots: void slotModeModify(const Global::Mode); void slotRevCommonData(const CommonData&); diff --git a/src/ui/experimentsettingform.cpp b/src/ui/experimentsettingform.cpp index e90c4db..374d42c 100644 --- a/src/ui/experimentsettingform.cpp +++ b/src/ui/experimentsettingform.cpp @@ -354,6 +354,54 @@ void ExperimentSettingForm::slotConnectToDevice() phaseVtr.push_back(phase); } + if (ui->checkBox_phase_3->checkState()) + { + Phase phase; + phase.onoff = 1; + phase.cutoff_temp = ui->phase_3_cutoff_temp->text().toFloat(); + phase.temp_flow = ui->phase_3_scan_rate->text().toFloat(); + phase.constant_temp_time_min = (uint16_t)ui->phase_3_constant_temp->text().toInt(); + phase.gas = GasType::N2; + + phaseVtr.push_back(phase); + } + if (ui->checkBox_phase_4->checkState()) + { + Phase phase; + phase.onoff = 1; + phase.cutoff_temp = ui->phase_4_cutoff_temp->text().toFloat(); + phase.temp_flow = ui->phase_4_scan_rate->text().toFloat(); + phase.constant_temp_time_min = (uint16_t)ui->phase_4_constant_temp->text().toInt(); + // phase.gas = ui->comboBox_phase_1_atmosphere->currentIndex(); + phase.gas = GasType::N2; + + phaseVtr.push_back(phase); + } + if (ui->checkBox_phase_5->checkState()) + { + Phase phase; + phase.onoff = 1; + phase.cutoff_temp = ui->phase_5_cutoff_temp->text().toFloat(); + phase.temp_flow = ui->phase_5_scan_rate->text().toFloat(); + phase.constant_temp_time_min = (uint16_t)ui->phase_5_constant_temp->text().toInt(); + // phase.gas = ui->comboBox_phase_1_atmosphere->currentIndex(); + phase.gas = GasType::N2; + + phaseVtr.push_back(phase); + } + if (ui->checkBox_phase_6->checkState()) + { + Phase phase; + phase.onoff = 1; + phase.cutoff_temp = ui->phase_6_cutoff_temp->text().toFloat(); + phase.temp_flow = ui->phase_6_scan_rate->text().toFloat(); + phase.constant_temp_time_min = (uint16_t)ui->phase_6_constant_temp->text().toInt(); + // phase.gas = ui->comboBox_phase_1_atmosphere->currentIndex(); + phase.gas = GasType::N2; + + phaseVtr.push_back(phase); + } + QByteArray ba = DataParser::connectToDevice(phaseVtr); qDebug() << "ba size:" << ba.size(); emit sigDeliverData(ba); @@ -464,7 +512,7 @@ void ExperimentSettingForm::slotRecvPhaseInfo(const QByteArray &ba) QString checkBoxName = QString("checkBox_phase_%1").arg(i); QCheckBox *checkBox_phase = qobject_cast(this->findChild(checkBoxName)); if (checkBox_phase) { - checkBox_phase->setTristate(true); + checkBox_phase->setChecked(true); qDebug()<<"found..."; }else{ qDebug()<<"not found...";