A1210_Desktop/setpribor.cpp

134 lines
5.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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);
}