diff --git a/BrainATUMtome/mainwindow.cpp b/BrainATUMtome/mainwindow.cpp index 4586e8a..78ce57a 100644 --- a/BrainATUMtome/mainwindow.cpp +++ b/BrainATUMtome/mainwindow.cpp @@ -210,67 +210,28 @@ MainWindow::~MainWindow() void MainWindow::configure_controlEpos() { - QButtonGroup *buttonGroup_epos_off = new QButtonGroup(this); - buttonGroup_epos_off->addButton(ui->radioButton_epos_lower_off); - buttonGroup_epos_off->addButton(ui->radioButton_epos_upper_off); - buttonGroup_epos_off->addButton(ui->radioButton_epos_tension_off); - - //connect(ui->checkBox_epos_sync, &QCheckBox::clicked, buttonGroup_epos_off, &QButtonGroup::buttonClicked); - connect(buttonGroup_epos_off, qOverload(&QButtonGroup::buttonClicked), this, &MainWindow::on_radioButton_epos_clicked); - - /* - connect(ui->radioButton_epos_lower_off, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - connect(ui->radioButton_epos_upper_off, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - connect(ui->radioButton_epos_tension_off, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - connect(ui->radioButton_epos_lower_cw, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - connect(ui->radioButton_epos_upper_cw, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - connect(ui->radioButton_epos_tension_on, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - connect(ui->radioButton_epos_lower_ccw, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - connect(ui->radioButton_epos_upper_ccw, &QRadioButton::clicked, this, &MainWindow::on_radioButton_epos_clicked); - */ - - /* - connect(ui->radioButton_epos_lower_cw, &QRadioButton::clicked, - [this]() - { - if (ui->checkBox_epos_sync->isChecked()) - { - ui->radioButton_epos_upper_cw->setChecked(true); - ui->radioButton_epos_tension_on->setChecked(true); - } - }); - - connect(ui->radioButton_epos_lower_off, &QRadioButton::clicked, - [this]() - { - if (ui->checkBox_epos_sync->isChecked()) - { - ui->radioButton_epos_upper_off->setChecked(true); - - } - }); - - connect(ui->radioButton_epos_upper_cw, &QRadioButton::clicked, [this](){if (ui->checkBox_epos_sync->isChecked()) ui->radioButton_epos_lower_cw->setChecked(true);}); - connect(ui->radioButton_epos_upper_off, &QRadioButton::clicked, [this](){if (ui->checkBox_epos_sync->isChecked()) ui->radioButton_epos_lower_off->setChecked(true);}); - - connect(ui->lineEdit_epos_lower_rpm, &QLineEdit::returnPressed, [this](){if (ui->checkBox_epos_sync->isChecked()) ui->lineEdit_epos_upper_rpm->setText(ui->lineEdit_epos_lower_rpm->text());}); - connect(ui->lineEdit_epos_upper_rpm, &QLineEdit::returnPressed, [this](){if (ui->checkBox_epos_sync->isChecked()) ui->lineEdit_epos_lower_rpm->setText(ui->lineEdit_epos_upper_rpm->text());}); - - connect(ui->checkBox_epos_sync, &QCheckBox::clicked, - [this](bool state) - { - ui->radioButton_epos_lower_ccw->setEnabled(!state); - ui->radioButton_epos_upper_ccw->setEnabled(!state); - if (state) - { - ui->radioButton_epos_lower_off->setChecked(true); - ui->radioButton_epos_upper_off->setChecked(true); - ui->radioButton_epos_tension_off->setChecked(true); - } - }); - */ - - + QButtonGroup *radioButtonGroup_epos_tension = new QButtonGroup(this); + radioButtonGroup_epos_tension->addButton(ui->radioButton_epos_tension_off, RADIOBUTTON_EPOS_TENSION_OFF); + radioButtonGroup_epos_tension->addButton(ui->radioButton_epos_tension_on, RADIOBUTTON_EPOS_TENSION_ON); + connect(radioButtonGroup_epos_tension, QOverload::of(&QButtonGroup::buttonClicked), this, &MainWindow::on_radioButton_epos_clicked); + + QButtonGroup *radioButtonGroup_epos_lower = new QButtonGroup(this); + radioButtonGroup_epos_lower->addButton(ui->radioButton_epos_lower_off, RADIOBUTTON_EPOS_LOWER_OFF); + radioButtonGroup_epos_lower->addButton(ui->radioButton_epos_lower_cw, RADIOBUTTON_EPOS_LOWER_CW); + radioButtonGroup_epos_lower->addButton(ui->radioButton_epos_lower_ccw, RADIOBUTTON_EPOS_LOWER_CCW); + connect(radioButtonGroup_epos_lower, QOverload::of(&QButtonGroup::buttonClicked), this, &MainWindow::on_radioButton_epos_clicked); + + QButtonGroup *radioButtonGroup_epos_uppser = new QButtonGroup(this); + radioButtonGroup_epos_uppser->addButton(ui->radioButton_epos_upper_off, RADIOBUTTON_EPOS_UPPER_OFF); + radioButtonGroup_epos_uppser->addButton(ui->radioButton_epos_upper_cw, RADIOBUTTON_EPOS_UPPER_CW); + radioButtonGroup_epos_uppser->addButton(ui->radioButton_epos_upper_ccw, RADIOBUTTON_EPOS_UPPER_CCW); + connect(radioButtonGroup_epos_uppser, QOverload::of(&QButtonGroup::buttonClicked), this, &MainWindow::on_radioButton_epos_clicked); + + QValidator *eposVelocity = new QIntValidator(100, 10000, this); + ui->lineEdit_epos_lower_rpm->setValidator(eposVelocity); + ui->lineEdit_epos_upper_rpm->setValidator(eposVelocity); + connect(ui->lineEdit_epos_lower_rpm, &QLineEdit::returnPressed, this, &MainWindow::on_lineEdit_epos_lower_returnPressed); + connect(ui->lineEdit_epos_upper_rpm, &QLineEdit::returnPressed, this, &MainWindow::on_lineEdit_epos_upper_returnPressed); } @@ -344,19 +305,90 @@ void MainWindow::command_DriverEpos(bool state) */ } -void MainWindow::on_lineEdit_dep_velocity_returnPressed() -{ - /* - if (QString::compare(ui->pushButton_dep_run->text(), "Stop") != 0) - return; - command_DriverEpos(true); - */ + +void MainWindow::on_radioButton_epos_clicked(int id) +{ + if (ui->checkBox_epos_sync->isChecked()) { + switch (id) + { + case RADIOBUTTON_EPOS_LOWER_OFF: + ui->radioButton_epos_upper_off->setChecked(true); + ui->radioButton_epos_tension_off->setChecked(true); + break; + case RADIOBUTTON_EPOS_UPPER_OFF: + ui->radioButton_epos_lower_off->setChecked(true); + ui->radioButton_epos_tension_off->setChecked(true); + break; + case RADIOBUTTON_EPOS_TENSION_OFF : + ui->radioButton_epos_lower_off->setChecked(true); + ui->radioButton_epos_upper_off->setChecked(true); + break; + case RADIOBUTTON_EPOS_LOWER_CW: + ui->radioButton_epos_upper_cw->setChecked(true); + ui->radioButton_epos_tension_on->setChecked(true); + break; + case RADIOBUTTON_EPOS_UPPER_CW: + ui->radioButton_epos_lower_cw->setChecked(true); + ui->radioButton_epos_tension_on->setChecked(true); + break; + case RADIOBUTTON_EPOS_TENSION_ON : + ui->radioButton_epos_lower_cw->setChecked(true); + ui->radioButton_epos_upper_cw->setChecked(true); + break; + } + } } +void MainWindow::on_checkBox_epos_sync_clicked(bool checked) +{ + if (checked) { + ui->widget_logger->on_notify("EPOS :: sync mode is on."); + ui->radioButton_epos_lower_ccw->setEnabled(false); + ui->radioButton_epos_upper_ccw->setEnabled(false); + + int velocity_lower = ui->lineEdit_epos_lower_rpm->text().toInt(); + int velocity_upper = ui->lineEdit_epos_upper_rpm->text().toInt(); + if (velocity_lower != velocity_upper) { + int velocity_min = (velocity_lower < velocity_upper) ? velocity_lower : velocity_upper; + ui->lineEdit_epos_lower_rpm->setText(QString::number(velocity_min)); + ui->lineEdit_epos_upper_rpm->setText(QString::number(velocity_min)); + ui->widget_logger->on_notify("EPOS :: motors speed changed to " + QString::number(velocity_min) + " rpm."); + } + } + else { + ui->widget_logger->on_notify("EPOS :: async mode is on."); + ui->radioButton_epos_lower_ccw->setEnabled(true); + ui->radioButton_epos_upper_ccw->setEnabled(true); + } + + ui->radioButton_epos_lower_off->setChecked(true); + ui->radioButton_epos_upper_off->setChecked(true); + ui->radioButton_epos_tension_off->setChecked(true); +} -void MainWindow::on_radioButton_epos_clicked() +void MainWindow::on_lineEdit_epos_lower_returnPressed() { + int velocity_lower = ui->lineEdit_epos_lower_rpm->text().toInt(); + if (ui->checkBox_epos_sync->isChecked()) { + ui->lineEdit_epos_upper_rpm->setText(QString::number(velocity_lower)); + ui->widget_logger->on_notify("EPOS :: motors speed changed to " + QString::number(velocity_lower) + " rpm."); + } + else { + ui->widget_logger->on_notify("EPOS :: lower motor speed changed to " + QString::number(velocity_lower) + " rpm."); + } +} + +void MainWindow::on_lineEdit_epos_upper_returnPressed() +{ + int velocity_upper = ui->lineEdit_epos_upper_rpm->text().toInt(); + if (ui->checkBox_epos_sync->isChecked()) { + ui->lineEdit_epos_lower_rpm->setText(QString::number(velocity_upper)); + ui->widget_logger->on_notify("EPOS :: motors speed changed to " + QString::number(velocity_upper) + " rpm."); + } + else { + ui->widget_logger->on_notify("EPOS :: upper motor speed changed to " + QString::number(velocity_upper) + " rpm."); + } } diff --git a/BrainATUMtome/mainwindow.h b/BrainATUMtome/mainwindow.h index 248766e..d9d46f6 100644 --- a/BrainATUMtome/mainwindow.h +++ b/BrainATUMtome/mainwindow.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "driverepos.h" @@ -43,19 +44,30 @@ class MainWindow : public QMainWindow //QThread *m_thread_videoConverter; //sQThread *m_thread_videoWriter; - void command_DriverEpos(bool state); + quint8 m_epos_motors; + qint16 m_epos_velocity; - void configure_controlEpos(); + static const int RADIOBUTTON_EPOS_TENSION_OFF = 1; + static const int RADIOBUTTON_EPOS_TENSION_ON = 2; + static const int RADIOBUTTON_EPOS_LOWER_OFF = 3; + static const int RADIOBUTTON_EPOS_LOWER_CCW = 4; + static const int RADIOBUTTON_EPOS_LOWER_CW = 5; + static const int RADIOBUTTON_EPOS_UPPER_OFF = 6; + static const int RADIOBUTTON_EPOS_UPPER_CCW = 7; + static const int RADIOBUTTON_EPOS_UPPER_CW = 8; - qint8 m_epos_motors; - qint16 m_epos_velocity; + void command_DriverEpos(bool state); + void configure_controlEpos(); private slots: void on_pushButton_dep_run_clicked(); void on_pushButton_mtm_cut_clicked(); - void on_lineEdit_dep_velocity_returnPressed(); + + void on_checkBox_epos_sync_clicked(bool checked); void on_radioButton_epos_clicked(int id); + void on_lineEdit_epos_upper_returnPressed(); + void on_lineEdit_epos_lower_returnPressed(); signals: void uirequest_mtm_setCuttingSpeed(quint32 value);