#include "setpribor.h" #include "ui_setpribor.h" SetPribor::SetPribor(MainWindow *parent) : QDialog(parent), ui(new Ui::setPribor) { ui->setupUi(this); parentUi=parent->ui; QWidget::setWindowTitle("Поиск и настройка"); qDebug()<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); } SetPribor::~SetPribor() { 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("Успешно настроен /n Подключитесь к прибору с новыми атрибутами"); // } QApplication::beep(); } void SetPribor::getProgressBar(uint a) { ui->progressBar->setValue(ui->progressBar->value()+a); }