134 lines
5.1 KiB
C++
134 lines
5.1 KiB
C++
#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()<<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);
|
||
|
||
|
||
}
|
||
|
||
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("Успшно настроен"); //
|
||
}
|
||
|
||
QApplication::beep();
|
||
}
|
||
|
||
void SetPribor::getProgressBar(uint a)
|
||
{
|
||
ui->progressBar->setValue(ui->progressBar->value()+a);
|
||
|
||
}
|