wMP1uT)`^7#92S=zf9s~OF
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
Tl~(hWhXlw;DMP9xjD!9M{}x{%
literal 0
HcmV?d00001
diff --git a/src/images/new.png b/src/images/new.png
new file mode 100644
index 0000000000000000000000000000000000000000..24a432e5205f45df1103db391bf5cd73822c7c2b
GIT binary patch
literal 3557
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
literal 5410
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
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 99172f4..a63d0df 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -1,7 +1,10 @@
+#include
+
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "global.h"
#include "serialport.h"
+#include "dataparser.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@@ -9,9 +12,12 @@ MainWindow::MainWindow(QWidget *parent)
, _centralWidget(new CentralWidget)
,_leftWidget(new LeftWidget)
,_expertmentSettingForm(new ExperimentSettingForm)
+ ,_realTimeDataForm(new RealTimeDataForm)
{
ui->setupUi(this);
+ setActionEnable(false);
+
this->setToolTip(".....");
// resize(2222,1111);
@@ -29,9 +35,6 @@ MainWindow::~MainWindow()
void MainWindow::connections()
{
//ui
-// connect(ui->actionshitu,&QAction::triggered,
-// [&]{_expertmentSettingForm->show();});
-
connect(_expertmentSettingForm,&ExperimentSettingForm::sigConnectToDevice,
SerialPort::instance(),&SerialPort::slotConnectToDevice);
//dynamic data
@@ -42,8 +45,56 @@ void MainWindow::connections()
_centralWidget,&CentralWidget::slotModeModify);
}
-
-void MainWindow::on_actionstart_triggered()
+void MainWindow::setActionEnable(const bool flag)
{
-
+ if(flag){
+ ui->actionNew->setEnabled(true);
+ ui->actionStart->setEnabled(true);
+ ui->actionStop->setEnabled(true);
+ ui->actionRealTimeWidget->setEnabled(true);
+ }else{
+ ui->actionNew->setEnabled(false);
+ ui->actionStart->setEnabled(false);
+ ui->actionStop->setEnabled(false);
+ ui->actionRealTimeWidget->setEnabled(false);
+ }
+}
+
+void MainWindow::on_actionStop_triggered()
+{
+ QByteArray ba = DataParser::setDeviceStartStop(DeviceStartMode::Stop);
+ SerialPort::instance()->slotSendData(ba);
+ SerialPort::instance()->slotCloseSp();
+}
+
+void MainWindow::on_actionNew_triggered()
+{
+ _expertmentSettingForm->show();
+}
+
+void MainWindow::on_actionStart_triggered()
+{
+ QByteArray ba = DataParser::setDeviceStartStop(DeviceStartMode::Start);
+ SerialPort::instance()->slotSendData(ba);
+}
+
+void MainWindow::on_actionReadOnly_triggered()
+{
+ Global::instance()->setMode(Global::Mode::ExperimentStart);
+ SerialPort::instance()->openSp();
+}
+
+void MainWindow::on_actionRealTimeWidget_triggered()
+{
+ _realTimeDataForm->show();
+}
+
+void MainWindow::on_actionConnectToDev_triggered()
+{
+ if(SerialPort::instance()->openSp()){
+ setActionEnable(true);
+ Global::instance()->setMode(Global::Mode::ConnectedToDev);
+ }else{
+ QMessageBox::warning(this, "warnning", "Serial Port open failed.");
+ }
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index a3705f5..b704a15 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -6,6 +6,7 @@
#include "centralwidget.h"
#include "leftwidget.h"
#include "experimentsettingform.h"
+#include "realtimedataform.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
@@ -19,14 +20,20 @@ public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
- void on_actionstart_triggered();
-
+ void on_actionConnectToDev_triggered();
+ void on_actionNew_triggered();
+ void on_actionStart_triggered();
+ void on_actionStop_triggered();
+ void on_actionReadOnly_triggered();
+ void on_actionRealTimeWidget_triggered();
private:
void connections();
+ void setActionEnable(const bool);
private:
Ui::MainWindow *ui;
CentralWidget *_centralWidget;
LeftWidget*_leftWidget;
ExperimentSettingForm *_expertmentSettingForm;
+ RealTimeDataForm* _realTimeDataForm;
};
#endif // MAINWINDOW_H
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 259c828..ab0fb22 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -27,13 +27,13 @@
文件
-
-
+
-
+
+
+
+ :/images/new.png:/images/new.png
+
新建
-
-
- 22
-
-
-
+
:/images/start.png:/images/start.png
- start
+ 开始
+
+
+ true
+
+
+
+
+ 只读数据
+
+
+
+
+
+ :/images/stop.png:/images/stop.png
+
+
+ 停止
+
+
+
+
+
+ :/images/real_time_widget.png:/images/real_time_widget.png
+
+
+ 实时窗口
+
+
+
+
+
+ :/images/connect.png:/images/connect.png
+
+
+ 连接设备
diff --git a/src/serialport/serialport.cpp b/src/serialport/serialport.cpp
index 03f4f6f..bfaf193 100644
--- a/src/serialport/serialport.cpp
+++ b/src/serialport/serialport.cpp
@@ -9,6 +9,7 @@
#include "protocol.h"
#include "defines.h"
#include "dataparser.h"
+#include "global.h"
using namespace std;
@@ -94,7 +95,7 @@ void SerialPort::slotReadData()
{
QByteArray ba = _sp->readAll();
-#if 1
+#if 0
// 将 QByteArray 转换为十六进制字符串
QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数
qDebug() << "receive info (hex):" << hexData;
@@ -120,7 +121,9 @@ void SerialPort::slotReadData()
QString formattedColdTemp = QString::number(cd.cold_temp, 'f', 3);
qDebug() << "cold temp:" << formattedColdTemp;
- emit sigSendCommonData(cd);
+ if(Global::Mode::ExperimentStart == Global::instance()->getMode()){
+ emit sigSendCommonData(cd);
+ }
#if 0
CommonData *serialPortData =
@@ -137,8 +140,12 @@ void SerialPort::slotReadData()
#endif
}
-void SerialPort::openSp()
+bool SerialPort::openSp()
{
+ if(_sp != nullptr && _sp->isOpen()){
+ return true;
+ }
+
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
u16 pid = info.productIdentifier();
@@ -154,7 +161,7 @@ void SerialPort::openSp()
if (_sp == nullptr)
{
qDebug() << "Device not found.";
- return;
+ return false;
}
// 设置波特率和读写方向
@@ -173,7 +180,7 @@ void SerialPort::openSp()
if (!_sp->open(QIODevice::ReadWrite))
{
qDebug() << "open failed." << _sp->error();
- exit(0);
+ return false;
}
else
{
@@ -181,8 +188,10 @@ void SerialPort::openSp()
// 设置 DTR 信号为就绪状态(true 表示低电平)
_sp->setDataTerminalReady(true);
}
+ return true;
}
+
void SerialPort::sendCmd(const SerialPort::E_CMD_TYPE e)
{
#if 1
@@ -335,7 +344,14 @@ void SerialPort::slotSendData(const QByteArray &ba)
{
qDebug() << "slotSendData:" << ba.size();
- _sp->write(ba);
+ if(_sp != nullptr && _sp->isOpen()){
+ _sp->write(ba);
+ }else{
+ qDebug()<<"sp not open.";
+ // qErrnoWarning("sp not open.");
+ return;
+ }
+
#if 0
// 将 QByteArray 转换为十六进制字符串
QString hexData = ba.toHex(' '); // ' ' 作为分隔符,可选参数
@@ -362,5 +378,7 @@ void SerialPort::slotSendData(const QByteArray &ba)
void SerialPort::slotCloseSp()
{
- _sp->close();
+ if(_sp != nullptr && _sp->isOpen()){
+ _sp->close();
+ }
}
diff --git a/src/serialport/serialport.h b/src/serialport/serialport.h
index 0f8434e..f864775 100644
--- a/src/serialport/serialport.h
+++ b/src/serialport/serialport.h
@@ -22,6 +22,7 @@ public:
void sendCmd(const E_CMD_TYPE e);
static void parserTest();
+ bool openSp();
public slots:
void slotConnectToDevice(const QByteArray&);
void slotSendData(const QByteArray&);
@@ -34,7 +35,6 @@ protected:
private slots:
void slotReadData();
private:
- void openSp();
void to_hex(char* in_char, int char_length, char* out_char);
void displayPortInfo();
private:
diff --git a/src/ui/centralwidget.cpp b/src/ui/centralwidget.cpp
index 21aaa00..5a3d3a7 100644
--- a/src/ui/centralwidget.cpp
+++ b/src/ui/centralwidget.cpp
@@ -36,7 +36,7 @@ CentralWidget::CentralWidget(QWidget *parent)
void CentralWidget::slotModeModify(const Global::Mode mode)
{
- if (Global::Mode::EXPERIMENT == mode)
+ if (Global::Mode::ExperimentStart == mode)
{
// 创建画布,设置画布上的点数据
_customPlot->addGraph();
@@ -48,7 +48,7 @@ void CentralWidget::slotModeModify(const Global::Mode mode)
_customPlot->xAxis->setRange(0, 400);
_customPlot->yAxis->setRange(-20, 20);
}
- else if (Global::Mode::ANALYZE == mode)
+ else if (Global::Mode::Analysis == mode)
{
}
}
diff --git a/src/ui/experimentsettingform.cpp b/src/ui/experimentsettingform.cpp
index ffdab01..064df31 100644
--- a/src/ui/experimentsettingform.cpp
+++ b/src/ui/experimentsettingform.cpp
@@ -21,12 +21,10 @@ ExperimentSettingForm::ExperimentSettingForm(QWidget *parent) :
connect(ui->checkBox_phase_4,&QCheckBox::clicked,
this,&ExperimentSettingForm::slotPhase4StateChanged);
- connect(ui->pushButton_connect_to_device,&QPushButton::clicked,
- this,&ExperimentSettingForm::slotConnectToDevice);
+// connect(ui->pushButton_connect_to_device,&QPushButton::clicked,
+// this,&ExperimentSettingForm::slotConnectToDevice);
connect(ui->pushButton_cancel,&QPushButton::clicked,
this,&ExperimentSettingForm::slotCancel);
-
-
}
ExperimentSettingForm::~ExperimentSettingForm()
@@ -170,7 +168,7 @@ void ExperimentSettingForm::slotConnectToDevice()
qDebug()<<"ba size:"<setMode(Global::Mode::EXPERIMENT);
+ Global::instance()->setMode(Global::Mode::ConnectedToDev);
#if 0
QByteArray startBa = DataParser::setDeviceStartStop(DeviceStartMode::Start);
@@ -182,7 +180,7 @@ void ExperimentSettingForm::slotConnectToDevice()
void ExperimentSettingForm::slotCancel()
{
-
+ hide();
}
void ExperimentSettingForm::slotPhaseCheck()
{
@@ -225,4 +223,7 @@ void ExperimentSettingForm::slotPhaseCheck()
}
}
-
+void ExperimentSettingForm::on_pushButton_connect_to_device_clicked()
+{
+ slotConnectToDevice();
+}
diff --git a/src/ui/experimentsettingform.h b/src/ui/experimentsettingform.h
index 6ee654b..34d2c8b 100644
--- a/src/ui/experimentsettingform.h
+++ b/src/ui/experimentsettingform.h
@@ -17,6 +17,9 @@ public:
signals:
void sigConnectToDevice(const QByteArray&);
+private slots:
+ void on_pushButton_connect_to_device_clicked();
+
private:
void uiReset();
//slot