2023-11-17 09:24:13 +03:00
|
|
|
|
#include "setpribor.h"
|
|
|
|
|
#include "ui_setpribor.h"
|
|
|
|
|
|
2023-11-24 14:08:11 +03:00
|
|
|
|
SetPribor::SetPribor(MainWindow *parent) :
|
2023-11-17 09:24:13 +03:00
|
|
|
|
QDialog(parent),
|
|
|
|
|
ui(new Ui::setPribor)
|
|
|
|
|
{
|
|
|
|
|
ui->setupUi(this);
|
2023-11-24 14:08:11 +03:00
|
|
|
|
parentUi=parent->ui;
|
|
|
|
|
QWidget::setWindowTitle("Поиск и настройка");
|
|
|
|
|
|
|
|
|
|
qDebug()<<parent->comList;
|
|
|
|
|
this->parent = parent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Перечислим порты в консоль
|
|
|
|
|
foreach(const auto com, parent->comList){ //для каждого доступного порта
|
|
|
|
|
ui->comboBoxPort->addItem(com); // Добавляем в список доступных
|
|
|
|
|
}//конец foreach
|
|
|
|
|
|
|
|
|
|
extern const uint32_t BAUDRATE[];
|
|
|
|
|
for(uint i = 0; i<10; i++){ui->comboBoxCurrentSpeed->addItem(QString::number(BAUDRATE[i]));
|
|
|
|
|
ui->comboBoxNewSpeed->addItem(QString::number(BAUDRATE[i]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//формирую данные для комбобокса бита четности
|
|
|
|
|
ui->comboBoxCurrentBit->addItem("Нет"); // Добавляем в список доступных
|
|
|
|
|
ui->comboBoxCurrentBit->addItem("Четности"); // Добавляем в список доступных
|
|
|
|
|
ui->comboBoxCurrentBit->addItem("Нечетности"); // Добавляем в список доступных
|
|
|
|
|
ui->comboBoxNewBit->addItem("Нет"); // Добавляем в список доступных
|
|
|
|
|
ui->comboBoxNewBit->addItem("Четности"); // Добавляем в список доступных
|
|
|
|
|
ui->comboBoxNewBit->addItem("Нечетности"); // Добавляем в список доступных
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ui->progressBar->setValue(0);
|
|
|
|
|
ui->progressBar->setRange(0, 7410);
|
|
|
|
|
|
|
|
|
|
ui->comboBoxPort->setCurrentIndex(parent->portComboboxIndex);
|
|
|
|
|
|
|
|
|
|
ui->lineEditNewAdr->setText(parent->adrValue);
|
|
|
|
|
ui->lineEditCurrentAdr->setText(parent->adrValue);
|
|
|
|
|
|
|
|
|
|
ui->comboBoxCurrentSpeed->setCurrentIndex(parent->speedComboboxIndex);
|
|
|
|
|
ui->comboBoxNewSpeed->setCurrentIndex(parent->speedComboboxIndex);
|
|
|
|
|
ui->comboBoxCurrentBit->setCurrentIndex(parent->bitComboboxIndex);
|
|
|
|
|
ui->comboBoxNewBit->setCurrentIndex(parent->bitComboboxIndex);
|
|
|
|
|
|
|
|
|
|
|
2023-11-17 09:24:13 +03:00
|
|
|
|
}
|
|
|
|
|
|
2023-11-24 14:08:11 +03:00
|
|
|
|
SetPribor::~SetPribor()
|
2023-11-17 09:24:13 +03:00
|
|
|
|
{
|
|
|
|
|
delete ui;
|
|
|
|
|
}
|
2023-11-24 14:08:11 +03:00
|
|
|
|
|
|
|
|
|
void SetPribor::on_pushButtonSetParam_clicked()
|
|
|
|
|
{
|
|
|
|
|
PrborConnectonAtr oldAtr;
|
|
|
|
|
oldAtr.port=ui->comboBoxPort->currentText();
|
|
|
|
|
oldAtr.speed=ui->comboBoxCurrentSpeed->currentText().toInt();
|
|
|
|
|
oldAtr.adress=ui->lineEditCurrentAdr->text().toInt();
|
|
|
|
|
oldAtr.parity=(Parity)ui->comboBoxCurrentBit->currentIndex();
|
|
|
|
|
|
|
|
|
|
PrborConnectonAtr newAtr;
|
|
|
|
|
newAtr.speed= ui->comboBoxNewSpeed->currentText().toInt();
|
|
|
|
|
newAtr.adress=ui->lineEditNewAdr->text().toInt();
|
|
|
|
|
newAtr.parity=(Parity)ui->comboBoxNewBit->currentIndex();
|
|
|
|
|
connect(parent->modebus, SIGNAL(writeResult(QModbusDevice::Error)), this, SLOT(priborIsSetConnAtr(QModbusDevice::Error)));
|
|
|
|
|
|
|
|
|
|
parent->modebus->writeConnectionAttr(oldAtr,newAtr);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SetPribor::on_pushButtonDetectAuto_clicked()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
ui->progressBar->setValue(0);
|
|
|
|
|
ui->labelFound->setText("Поиск..."); //выводим надпись
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// делаем коннект к сигналу найденого
|
|
|
|
|
//делаем коннект к сигналу не найденого
|
|
|
|
|
parent->modebus->scanPort(ui->comboBoxPort->currentText());
|
|
|
|
|
connect(parent->modebus, SIGNAL(priborFounded(uint,uint,uint)),
|
|
|
|
|
this, SLOT(getFoundedPribor(uint, uint,uint)));//коннект для найденого прибора
|
|
|
|
|
|
|
|
|
|
connect(parent->modebus, SIGNAL(priborNotFounded()),
|
|
|
|
|
this, SLOT(priborNotFounded()));//коннект для не найденого прибора
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
connect(parent->modebus, SIGNAL(progressUpToStatusBar(uint)), //todo: дисконнекту быть
|
|
|
|
|
this, SLOT(getProgressBar(uint))); //сделать коннект для полосы
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SetPribor::getFoundedPribor(uint a, uint s, uint b)
|
|
|
|
|
{
|
|
|
|
|
ui->lineEditCurrentAdr->setText(QString::number(a)); //если верная то заполняем поля
|
|
|
|
|
ui->comboBoxCurrentSpeed->setCurrentIndex(s-1);//из за особенности поиска
|
|
|
|
|
ui->comboBoxCurrentBit->setCurrentIndex(b);
|
|
|
|
|
ui->labelFound->setText("Найден!!"); //выводим радость
|
|
|
|
|
ui->progressBar->setValue(7410);
|
|
|
|
|
QApplication::beep();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SetPribor::priborNotFounded()
|
|
|
|
|
{
|
|
|
|
|
ui->labelFound->setText("Не найден!!");
|
|
|
|
|
QApplication::beep();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SetPribor::priborIsSetConnAtr(QModbusDevice::Error modbusMessage)
|
|
|
|
|
{
|
|
|
|
|
if(modbusMessage== QModbusDevice::ProtocolError) {
|
|
|
|
|
ui->labelResult->setText("Ошибка протокола"); //выводим радость
|
|
|
|
|
} else if(modbusMessage == QModbusDevice::TimeoutError) {
|
|
|
|
|
ui->labelResult->setText("Таймаут"); //
|
|
|
|
|
} else if (modbusMessage != QModbusDevice::NoError) {
|
|
|
|
|
ui->labelResult->setText("Ошибочка"); //
|
|
|
|
|
} else if(modbusMessage == QModbusDevice::NoError) {
|
2023-12-12 16:51:50 +03:00
|
|
|
|
ui->labelResult->setText("Успшно настроен /n Подключитесь к прибору с новыми атрибутами"); //
|
2023-11-24 14:08:11 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QApplication::beep();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SetPribor::getProgressBar(uint a)
|
|
|
|
|
{
|
|
|
|
|
ui->progressBar->setValue(ui->progressBar->value()+a);
|
|
|
|
|
|
|
|
|
|
}
|