diff --git a/M3KTE_TERM/adcgraphdialog.cpp b/M3KTE_TERM/adcgraphdialog.cpp index e856d44..e147ad3 100644 --- a/M3KTE_TERM/adcgraphdialog.cpp +++ b/M3KTE_TERM/adcgraphdialog.cpp @@ -79,16 +79,12 @@ AdcGraphDialog::AdcGraphDialog(QModbusClient *modbusDevice, QWidget *parent) : layout->addWidget(chartView); // Подключаем сигналы элементов управления диапазоном - connect(ui->startAddressSpinBox, QOverload::of(&QSpinBox::valueChanged), - this, &AdcGraphDialog::on_startAddressChanged); connect(ui->registerCountSpinBox, QOverload::of(&QSpinBox::valueChanged), this, &AdcGraphDialog::on_registerCountChanged); connect(ui->rangeApplyButton, &QPushButton::clicked, this, &AdcGraphDialog::on_rangeApplyClicked); connect(ui->teNumberSpinBox, QOverload::of(&QSpinBox::valueChanged), this, &AdcGraphDialog::on_teNumberChanged); - connect(ui->teApplyButton, &QPushButton::clicked, - this, &AdcGraphDialog::on_teApplyClicked); connect(m_updateTimer, &QTimer::timeout, this, &AdcGraphDialog::onUpdateTimer); connect(ui->closeBtn, &QPushButton::clicked, this, &AdcGraphDialog::on_closeBtn_clicked); @@ -111,20 +107,17 @@ void AdcGraphDialog::setModbusDevice(QModbusClient *device) void AdcGraphDialog::on_teNumberChanged(int value) { - // Можно сохранить значение, но не применять сразу - m_pendingTeNumber = value; + if(m_teNumber != value) + setTENumber(m_boardId, value); } -void AdcGraphDialog::on_teApplyClicked() -{ - setTENumber(ui->teNumberSpinBox->value()); -} - -void AdcGraphDialog::setTENumber(int teNumber) +void AdcGraphDialog::setTENumber(int boardID, int teNumber) { if (m_boardAddress == -1) return; m_teNumber = teNumber; + m_boardId = boardID; + m_boardAddress = m_boardId + 1; // Обновляем заголовок окна setWindowTitle(QString("График АЦП - Плата %1, ТЭ %2 (адр %3-%4)") @@ -155,6 +148,7 @@ void AdcGraphDialog::setTENumber(int teNumber) } } } + ui->teNumberSpinBox->setValue(teNumber); } void AdcGraphDialog::readCalibrationValues() @@ -246,28 +240,19 @@ void AdcGraphDialog::updateStatistics() } + void AdcGraphDialog::updateStatisticsWithStableInfo() { if (m_series->count() > 0) { - // Обновляем информацию о стабильном участке в статистике - if (m_stableStartIndex >= m_startAddress && - m_stableStartIndex < m_startAddress + m_registerCount) { - int relativeIndex = m_stableStartIndex - m_startAddress; - ui->samplesLabel->setText( - QString("%1 отсч. (адр %2-%3) [стаб: %4]") - .arg(m_series->count()) - .arg(m_startAddress) - .arg(m_startAddress + m_registerCount - 1) - .arg(relativeIndex) - ); - } else { - ui->samplesLabel->setText( - QString("%1 отсч. (адр %2-%3)") - .arg(m_series->count()) - .arg(m_startAddress) - .arg(m_startAddress + m_registerCount - 1) - ); - } + // Используем абсолютные индексы в формате "начальный-конечный" + ui->samplesLabel->setText( + QString("%1 отсч. (адр %2-%3) [стаб: %4-%5]") + .arg(m_series->count()) + .arg(m_startAddress) + .arg(m_startAddress + m_registerCount - 1) + .arg(m_stableStartIndex) // Абсолютный начальный индекс + .arg(m_stableEndIndex) // Абсолютный конечный индекс + ); } } @@ -343,6 +328,12 @@ void AdcGraphDialog::onCombinedDataReady() auto *reply = qobject_cast(sender()); if (!reply) return; + if((m_adcZero == 0) || (m_adcOneVolt == 0)) + { + readCalibrationValues(); + return; + } + if (reply->error() == QModbusDevice::NoError) { const QModbusDataUnit result = reply->result(); @@ -431,7 +422,7 @@ void AdcGraphDialog::startGraph(int boardId, int teNumber) readCalibrationValues(); // Записываем начальный номер ТЭ - setTENumber(teNumber); + setTENumber(m_boardAddress, teNumber); m_updateTimer->start(m_timeout); } @@ -453,6 +444,7 @@ void AdcGraphDialog::stopGraph() if (m_modbusDevice) { m_modbusDevice->disconnect(this); // Отключаем все сигналы } + } void AdcGraphDialog::onUpdateTimer() @@ -526,21 +518,21 @@ void AdcGraphDialog::updateYAxisRange(double minVoltage, double maxVoltage) double yMax = maxVoltage + margin; // Если диапазон слишком маленький или слишком большой, устанавливаем разумные пределы - if ((range < 0.1) || ((maxVoltage > 0.5) && (minVoltage < -0.5))) - { - yMin = -1.5; - yMax = 1.5; - } - else if(maxVoltage > 0.5) { - yMin = -0.1; - yMax = 1.5; - } - else if(minVoltage < -0.5) - { - yMin = -1.5; - yMax =0.1; - } - else +// if ((range < 0.1) || ((maxVoltage > 0.5) && (minVoltage < -0.5))) +// { +// yMin = -1.5; +// yMax = 1.5; +// } +// else if(maxVoltage > 0.5) { +// yMin = -0.1; +// yMax = 1.5; +// } +// else if(minVoltage < -0.5) +// { +// yMin = -1.5; +// yMax =0.1; +// } +// else { yMin = -1.5; yMax = 1.5; @@ -564,11 +556,6 @@ double AdcGraphDialog::convertAdcToVoltage(quint16 adcValue) return (adcValue - m_adcZero) * 1.1 / (m_adcOneVolt - m_adcZero); } -void AdcGraphDialog::on_startAddressChanged(int value) -{ - m_startAddress = value; - // qDebug() << "Start address changed to:" << value; -} void AdcGraphDialog::on_registerCountChanged(int value) { @@ -592,9 +579,3 @@ void AdcGraphDialog::on_closeBtn_clicked() stopGraph(); reject(); // Или accept() в зависимости от логики } - -void AdcGraphDialog::closeEvent(QCloseEvent *event) -{ - stopGraph(); - event->accept(); -} diff --git a/M3KTE_TERM/adcgraphdialog.h b/M3KTE_TERM/adcgraphdialog.h index 5fb87bf..ca36877 100644 --- a/M3KTE_TERM/adcgraphdialog.h +++ b/M3KTE_TERM/adcgraphdialog.h @@ -24,24 +24,30 @@ public: explicit AdcGraphDialog(QModbusClient *modbusDevice, QWidget *parent = nullptr); ~AdcGraphDialog(); + void setTENumber(int boardID, int teNumber); void setModbusDevice(QModbusClient *device); void startGraph(int boardId, int teNumber); void stopGraph(); void setTimeout(int timeout); void readyClose(); +signals: + void dialogClosed(); + protected: - void closeEvent(QCloseEvent *event) override; + void closeEvent(QCloseEvent *event) override { + stopGraph(); + event->accept(); + emit dialogClosed(); + QDialog::closeEvent(event); + } private slots: void on_teNumberChanged(int value); - void on_teApplyClicked(); - void setTENumber(int teNumber); void onUpdateTimer(); void onReadReady(); void onStableIndicesReady(); void on_closeBtn_clicked(); - void on_startAddressChanged(int value); void on_registerCountChanged(int value); void on_rangeApplyClicked(); @@ -71,7 +77,6 @@ private: QChart *m_chart; // Добавить указатель на chart // Управление диапазоном регистров - int m_pendingTeNumber; int m_startAddress; int m_registerCount; diff --git a/M3KTE_TERM/adcgraphdialog.ui b/M3KTE_TERM/adcgraphdialog.ui index 335fe3e..5bee990 100644 --- a/M3KTE_TERM/adcgraphdialog.ui +++ b/M3KTE_TERM/adcgraphdialog.ui @@ -16,26 +16,6 @@ - - - - Начальный адрес: - - - - - - - 0 - - - 500 - - - 0 - - - @@ -90,13 +70,6 @@ - - - - Применить - - - diff --git a/M3KTE_TERM/debugTerminalDialog.ui b/M3KTE_TERM/debugTerminalDialog.ui index 7ddf223..d04af36 100644 --- a/M3KTE_TERM/debugTerminalDialog.ui +++ b/M3KTE_TERM/debugTerminalDialog.ui @@ -14,217 +14,14 @@ Dialog - - - - Плата 4 + + + + Qt::Horizontal + + + QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults - - - - - Вызов функций - - - - - - Опрос ТЭ - - - - - - - Непрерывный вызов калибр. и опроса - - - - - - - Калибровка - - - - - - - Генерация HardFault - - - - - - - Настройки по умолчанию - - - - - - - Сбросить все ключи - - - - - - - - - - Тест светодиодов - - - - - - Работа - - - - - - - Предупреждение - - - - - - - Авария - - - - - - - Связь - - - - - - - LED VH1 (Зеленый) - - - - - - - LED VH2 (Зеленый) - - - - - - - LED VH3 (Красный) - - - - - - - - - - ADC - - - - - - 65 - - - - - - - ТЭ - - - - - - - Открыть график - - - - - - - - - - Тест дискретных сигналов - - - - - - Предупреждение - - - - - - - Авария - - - - - - - Ошибка 5 Vsci - - - - - - - Работа - - - - - - - Ошибка 5 В - - - - - - - Ошибка 24 В - - - - - - - Ошибка 5 VA - - - - - - - - - - Тест ламп и дискретных сигналов - - - - @@ -233,87 +30,6 @@ Плата 3 - - - - Вызов функций - - - - - - Опрос ТЭ - - - - - - - Непрерывный вызов калибр. и опроса - - - - - - - Калибровка - - - - - - - Генерация HardFault - - - - - - - Настройки по умолчанию - - - - - - - Сбросить все ключи - - - - - - - - - - ADC - - - - - - 85 - - - - - - - ТЭ - - - - - - - Открыть график - - - - - - @@ -372,6 +88,64 @@ + + + + Тест ламп и дискретных сигналов + + + + + + + Вызов функций + + + + + + Опрос ТЭ + + + + + + + Непрерывный вызов калибр. и опроса + + + + + + + Калибровка + + + + + + + Генерация HardFault + + + + + + + Настройки по умолчанию + + + + + + + Сбросить все ключи + + + + + + @@ -430,13 +204,6 @@ - - - - Тест ламп и дискретных сигналов - - - @@ -446,145 +213,6 @@ Плата 2 - - - - Вызов функций - - - - - - Калибровка - - - - - - - Настройки по умолчанию - - - - - - - Сбросить все ключи - - - - - - - Опрос ТЭ - - - - - - - Генерация HardFault - - - - - - - Непрерывный вызов калибр. и опроса - - - - - - - - - - ADC - - - - - - ТЭ - - - - - - - 85 - - - - - - - Открыть график - - - - - - - - - - Тест дискретных сигналов - - - - - - Ошибка 5 Vsci - - - - - - - Ошибка 24 В - - - - - - - Предупреждение - - - - - - - Работа - - - - - - - Ошибка 5 В - - - - - - - Авария - - - - - - - Ошибка 5 VA - - - - - - @@ -650,19 +278,118 @@ + + + + Вызов функций + + + + + + Калибровка + + + + + + + Настройки по умолчанию + + + + + + + Сбросить все ключи + + + + + + + Опрос ТЭ + + + + + + + Генерация HardFault + + + + + + + Непрерывный вызов калибр. и опроса + + + + + + + + + + Тест дискретных сигналов + + + + + + Ошибка 5 Vsci + + + + + + + Ошибка 24 В + + + + + + + Предупреждение + + + + + + + Работа + + + + + + + Ошибка 5 В + + + + + + + Авария + + + + + + + Ошибка 5 VA + + + + + + - - - - Qt::Horizontal - - - QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults - - - @@ -778,36 +505,6 @@ - - - - ADC - - - - - - ТЭ - - - - - - - 85 - - - - - - - Открыть график - - - - - - @@ -876,6 +573,189 @@ + + + + Плата 4 + + + + + + Тест дискретных сигналов + + + + + + Предупреждение + + + + + + + Авария + + + + + + + Ошибка 5 Vsci + + + + + + + Работа + + + + + + + Ошибка 5 В + + + + + + + Ошибка 24 В + + + + + + + Ошибка 5 VA + + + + + + + + + + Тест светодиодов + + + + + + Работа + + + + + + + Предупреждение + + + + + + + Авария + + + + + + + Связь + + + + + + + LED VH1 (Зеленый) + + + + + + + LED VH2 (Зеленый) + + + + + + + LED VH3 (Красный) + + + + + + + + + + Тест ламп и дискретных сигналов + + + + + + + Вызов функций + + + + + + Опрос ТЭ + + + + + + + Непрерывный вызов калибр. и опроса + + + + + + + Калибровка + + + + + + + Генерация HardFault + + + + + + + Настройки по умолчанию + + + + + + + Сбросить все ключи + + + + + + + + + diff --git a/M3KTE_TERM/debugterminaldialog.cpp b/M3KTE_TERM/debugterminaldialog.cpp index 6c338f4..ead6d76 100644 --- a/M3KTE_TERM/debugterminaldialog.cpp +++ b/M3KTE_TERM/debugterminaldialog.cpp @@ -32,6 +32,14 @@ void DebugTerminalDialog::setModbusDevice(QModbusClient *device) } } +void DebugTerminalDialog::setDebugTerminalCoil(int enable) +{ + writeCoil(0, COIL_DEBUG_MODE, enable); + writeCoil(1, COIL_DEBUG_MODE, enable); + writeCoil(2, COIL_DEBUG_MODE, enable); + writeCoil(3, COIL_DEBUG_MODE, enable); +} + void DebugTerminalDialog::showEvent(QShowEvent *event) { QDialog::showEvent(event); @@ -39,19 +47,13 @@ void DebugTerminalDialog::showEvent(QShowEvent *event) resetAll(); - writeCoil(0, COIL_DEBUG_MODE, 1); - writeCoil(1, COIL_DEBUG_MODE, 1); - writeCoil(2, COIL_DEBUG_MODE, 1); - writeCoil(3, COIL_DEBUG_MODE, 1); + setDebugTerminalCoil(1); } void DebugTerminalDialog::closeEvent(QCloseEvent *event) { // При закрытии окна записываем в коил 555 значение "0" - writeCoil(0, COIL_DEBUG_MODE, 0); - writeCoil(1, COIL_DEBUG_MODE, 0); - writeCoil(2, COIL_DEBUG_MODE, 0); - writeCoil(3, COIL_DEBUG_MODE, 0); + setDebugTerminalCoil(0); QDialog::closeEvent(event); } @@ -93,8 +95,6 @@ void DebugTerminalDialog::initializeConnections() connect(ui->ledVH2TestChkBox_1, &QCheckBox::stateChanged, this, &DebugTerminalDialog::on_ledVH2TestChkBox_1_stateChanged); connect(ui->ledVH3TestChkBox_1, &QCheckBox::stateChanged, this, &DebugTerminalDialog::on_ledVH3TestChkBox_1_stateChanged); - connect(ui->openADCBtn_1, &QPushButton::clicked, this, &DebugTerminalDialog::on_openADCBtn_1_clicked); - // Подключаем все чекбоксы для платы 2 connect(ui->continiusCallChkBox_2, &QCheckBox::stateChanged, this, &DebugTerminalDialog::on_continiusCallChkBox_2_stateChanged); connect(ui->calibrateCallChkBox_2, &QCheckBox::stateChanged, this, &DebugTerminalDialog::on_calibrateCallChkBox_2_stateChanged); @@ -126,8 +126,6 @@ void DebugTerminalDialog::initializeConnections() connect(ui->ledVH2TestChkBox_2, &QCheckBox::stateChanged, this, &DebugTerminalDialog::on_ledVH2TestChkBox_2_stateChanged); connect(ui->ledVH3TestChkBox_2, &QCheckBox::stateChanged, this, &DebugTerminalDialog::on_ledVH3TestChkBox_2_stateChanged); - connect(ui->openADCBtn_2, &QPushButton::clicked, this, &DebugTerminalDialog::on_openADCBtn_2_clicked); - } @@ -571,22 +569,25 @@ void DebugTerminalDialog::on_ledVH3TestChkBox_4_stateChanged(int state) void DebugTerminalDialog::openAdc(int boardID, int teNumber) { - writeTENumber(boardID, teNumber); - // Создаем/обновляем AdcGraphDialog - if (!m_adcGraphDialog) { - m_adcGraphDialog = new AdcGraphDialog(m_modbusDevice, this); - } else { - m_adcGraphDialog->setModbusDevice(m_modbusDevice); - } + // Удаляем старый диалог и создаем новый if (m_adcGraphDialog) { - m_adcGraphDialog->startGraph(boardID, teNumber); - m_adcGraphDialog->show(); - m_adcGraphDialog->raise(); // Поднять окно на передний план - m_adcGraphDialog->activateWindow(); // Активировать окно + m_adcGraphDialog->deleteLater(); + m_adcGraphDialog = nullptr; } + m_adcGraphDialog = new AdcGraphDialog(m_modbusDevice, this); + connect(m_adcGraphDialog, &AdcGraphDialog::dialogClosed, this, [this]() { + setDebugTerminalCoil(0); + }); + + setGraphUpdateInterval(1000); + m_adcGraphDialog->startGraph(boardID, teNumber); + m_adcGraphDialog->show(); + m_adcGraphDialog->raise(); + m_adcGraphDialog->activateWindow(); } + void DebugTerminalDialog::setGraphUpdateInterval(int milliseconds) { if (m_adcGraphDialog) { @@ -595,32 +596,6 @@ void DebugTerminalDialog::setGraphUpdateInterval(int milliseconds) } -void DebugTerminalDialog::on_openADCBtn_1_clicked() -{ - openAdc(0, ui->debugTENumSpinBox_1->value()); -} - - -void DebugTerminalDialog::on_openADCBtn_2_clicked() -{ - openAdc(1, ui->debugTENumSpinBox_2->value()); -} - - - -void DebugTerminalDialog::on_openADCBtn_3_clicked() -{ - openAdc(2, ui->debugTENumSpinBox_3->value()); -} - - - -void DebugTerminalDialog::on_openADCBtn_4_clicked() -{ - openAdc(3, ui->debugTENumSpinBox_4->value()); -} - - void DebugTerminalDialog::writeCoil(int boardID, int coil, int value) { QGroupBox* boardGroup = nullptr; @@ -641,15 +616,7 @@ void DebugTerminalDialog::writeCoil(int boardID, int coil, int value) void DebugTerminalDialog::writeTENumber(int boardId, int teNumber) { - if (!m_modbusDevice) { - qDebug() << "Modbus device not available for writing TE number"; - return; - } - - qDebug() << "Writing TE number" << teNumber << "to board" << boardId << "register" << REGISTER_TE_NUMB; - - // Отправляем сигнал для записи регистра - emit writeRegister(boardId, REGISTER_TE_NUMB, teNumber); + m_adcGraphDialog->setTENumber(boardId, teNumber); } @@ -712,9 +679,6 @@ void DebugTerminalDialog::resetAll() ui->ledVH2TestChkBox_1->setChecked(false); ui->ledVH3TestChkBox_1->setChecked(false); - // Сброс спинбоксов ТЭ - ui->debugTENumSpinBox_1->setValue(0); - @@ -748,12 +712,6 @@ void DebugTerminalDialog::resetAll() ui->ledVH2TestChkBox_2->setChecked(false); ui->ledVH3TestChkBox_2->setChecked(false); - // Сброс спинбоксов ТЭ - ui->debugTENumSpinBox_2->setValue(0); - - - - // Сброс всех чекбоксов вызова функций ui->continiusCallChkBox_3->setChecked(false); @@ -782,13 +740,6 @@ void DebugTerminalDialog::resetAll() ui->ledVH2TestChkBox_3->setChecked(false); ui->ledVH3TestChkBox_3->setChecked(false); - // Сброс спинбоксов ТЭ - ui->debugTENumSpinBox_3->setValue(0); - - - - - @@ -819,6 +770,4 @@ void DebugTerminalDialog::resetAll() ui->ledVH2TestChkBox_4->setChecked(false); ui->ledVH3TestChkBox_4->setChecked(false); - // Сброс спинбоксов ТЭ - ui->debugTENumSpinBox_4->setValue(0); } diff --git a/M3KTE_TERM/debugterminaldialog.h b/M3KTE_TERM/debugterminaldialog.h index e44e7d1..4471b57 100644 --- a/M3KTE_TERM/debugterminaldialog.h +++ b/M3KTE_TERM/debugterminaldialog.h @@ -56,11 +56,15 @@ class DebugTerminalDialog : public QDialog public: explicit DebugTerminalDialog(QWidget *parent = nullptr); ~DebugTerminalDialog(); + AdcGraphDialog *m_adcGraphDialog; + void setDebugTerminalCoil(int enable); void updateConnectionStatus(int boardId, bool connected); void setBoardActive(int boardId, bool active); void updateBoardStates(bool activeBoards[4]); void setModbusDevice(QModbusClient *device); void setGraphUpdateInterval(int milliseconds); + void writeTENumber(int boardId, int teNumber); + void openAdc(int boardID, int teNumber); protected: void showEvent(QShowEvent *event) override; @@ -69,18 +73,6 @@ protected: private slots: void on_buttonBox_clicked(QAbstractButton *button); -// // Слоты для вызова функций -// void onFunctionCallChanged(int boardId, int coil, bool state); - -// // Слоты для теста дискретных сигналов -// void onDiscreteTestChanged(int boardId, int coil, bool state); - -// // Слоты для теста светодиодов -// void onLedTestChanged(int boardId, int coil, bool state); - -// // Слоты для ADC -// void onOpenADCGraphClicked(int boardId); - // Плата 1 void on_continiusCallChkBox_1_stateChanged(int state); void on_calibrateCallChkBox_1_stateChanged(int state); @@ -107,8 +99,6 @@ private slots: void on_ledVH2TestChkBox_1_stateChanged(int state); void on_ledVH3TestChkBox_1_stateChanged(int state); - void on_openADCBtn_1_clicked(); - // Плата 2 void on_continiusCallChkBox_2_stateChanged(int state); void on_calibrateCallChkBox_2_stateChanged(int state); @@ -135,8 +125,6 @@ private slots: void on_ledVH2TestChkBox_2_stateChanged(int state); void on_ledVH3TestChkBox_2_stateChanged(int state); - void on_openADCBtn_2_clicked(); - // Плата 3 void on_continiusCallChkBox_3_stateChanged(int state); @@ -164,8 +152,6 @@ private slots: void on_ledVH2TestChkBox_3_stateChanged(int state); void on_ledVH3TestChkBox_3_stateChanged(int state); - void on_openADCBtn_3_clicked(); - // Плата 4 void on_continiusCallChkBox_4_stateChanged(int state); void on_calibrateCallChkBox_4_stateChanged(int state); @@ -192,8 +178,6 @@ private slots: void on_ledVH2TestChkBox_4_stateChanged(int state); void on_ledVH3TestChkBox_4_stateChanged(int state); - void on_openADCBtn_4_clicked(); - signals: void coilValueChanged(int boardID, int coil, int value); @@ -201,7 +185,6 @@ signals: private: Ui::DebugTerminalDialog *ui; - AdcGraphDialog *m_adcGraphDialog; QModbusClient *m_modbusDevice; // Храним указатель здесь // Карты для хранения состояний @@ -214,8 +197,6 @@ private: void initializeConnections(); - void writeTENumber(int boardId, int teNumber); - void openAdc(int boardID, int teNumber); void writeCoil(int boardID, int coil, int value); void readCoil(int coil); void resetAll(); diff --git a/M3KTE_TERM/m3kte.cpp b/M3KTE_TERM/m3kte.cpp index 105d0a7..7cacb1d 100644 --- a/M3KTE_TERM/m3kte.cpp +++ b/M3KTE_TERM/m3kte.cpp @@ -497,6 +497,7 @@ M3KTE::M3KTE(QWidget *parent) ThePhantomMenace[i]->setPalette(QPalette(tb, tb, tb, tb, tb, tb, tb, tb, tb)); connect(ThePhantomMenace[i], &QPushButton::clicked, this, [this, i]() { selectPositionOnTree(i); + m_debugTerminalDialog->writeTENumber(i/85, i - (i/85)*85 + 1); }); } connect(m_deviceSettingsDialog, &DeviceSettingsDialog::parityChanged, this, &M3KTE::onParityUpdate); @@ -539,6 +540,11 @@ void M3KTE::initActions() connect(ui->writeTable, QOverload::of(&QComboBox::currentIndexChanged), this, &M3KTE::onWriteTableChanged); connect(ui->DebugTerm, &QAction::triggered, m_debugTerminalDialog, &QWidget::show); + connect(ui->OpenADCBuff, &QAction::triggered, this, [this]() { + m_debugTerminalDialog->setDebugTerminalCoil(1); + m_debugTerminalDialog->openAdc(0, 1); + }); + connect(m_debugTerminalDialog, &DebugTerminalDialog::coilValueChanged, this, &M3KTE::writeSingleCoil); connect(m_debugTerminalDialog, &DebugTerminalDialog::writeRegister, @@ -1831,8 +1837,6 @@ void M3KTE::writeSingleRegister(int boardID, int regAddress, quint16 value) if (!modbusDevice || !Boards[boardID].isActive) return; - m_debugTerminalDialog->setGraphUpdateInterval(m_deviceSettingsDialog->currentBoardTimer(boardID)); - QModbusDataUnit unit(QModbusDataUnit::HoldingRegisters, regAddress, 1); unit.setValue(0, value); diff --git a/M3KTE_TERM/m3kte.ui b/M3KTE_TERM/m3kte.ui index e01713b..14e9956 100644 --- a/M3KTE_TERM/m3kte.ui +++ b/M3KTE_TERM/m3kte.ui @@ -14649,6 +14649,7 @@ Отладка + @@ -14691,6 +14692,11 @@ Открыть + + + Буфер АЦП + + diff --git a/Release/release/M3KTE_TERM.exe b/Release/release/M3KTE_TERM.exe index 890dc96..a211a22 100644 Binary files a/Release/release/M3KTE_TERM.exe and b/Release/release/M3KTE_TERM.exe differ