A1210_Desktop/setpribor.cpp

134 lines
5.1 KiB
C++
Raw Normal View History

2023-11-17 09:24:13 +03:00
#include "setpribor.h"
#include "ui_setpribor.h"
SetPribor::SetPribor(MainWindow *parent) :
2023-11-17 09:24:13 +03:00
QDialog(parent),
ui(new Ui::setPribor)
{
ui->setupUi(this);
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
}
SetPribor::~SetPribor()
2023-11-17 09:24:13 +03:00
{
delete ui;
}
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) {
ui->labelResult->setText("Успшно настроен"); //
}
QApplication::beep();
}
void SetPribor::getProgressBar(uint a)
{
ui->progressBar->setValue(ui->progressBar->value()+a);
}