Изменение обработки ошибок и вывода записи в лог
This commit is contained in:
parent
14d7907d92
commit
c9b44e5dab
@ -395,6 +395,7 @@ M3KTE::M3KTE(QWidget *parent)
|
|||||||
ui->BSM_Accident->setEnabled(false);
|
ui->BSM_Accident->setEnabled(false);
|
||||||
ui->BSM_WorkInProgress->setEnabled(false);
|
ui->BSM_WorkInProgress->setEnabled(false);
|
||||||
initActions();
|
initActions();
|
||||||
|
ui->BST_On->setCheckable(false);
|
||||||
ui->BST_Off->setChecked(true);
|
ui->BST_Off->setChecked(true);
|
||||||
ui->boardSelectBox->setCurrentIndex(0);
|
ui->boardSelectBox->setCurrentIndex(0);
|
||||||
ui->writeTable->setCurrentIndex(0);
|
ui->writeTable->setCurrentIndex(0);
|
||||||
@ -488,6 +489,20 @@ void M3KTE::initActions()
|
|||||||
connect(ui->M3kteMenuSettings, &QAction::triggered, m_deviceSettingsDialog, &QDialog::show);
|
connect(ui->M3kteMenuSettings, &QAction::triggered, m_deviceSettingsDialog, &QDialog::show);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void M3KTE::logError(const QString &errorPlace, const QString &errorString, unsigned errorCount, const QString &description)
|
||||||
|
{
|
||||||
|
unsigned newRow = loggerTable->rowCount();
|
||||||
|
loggerTable->insertRow(newRow);
|
||||||
|
loggerTable->setItem(newRow, 0, new QTableWidgetItem(QTime::currentTime().toString("HH:mm:ss")));
|
||||||
|
loggerTable->setItem(newRow, 1, new QTableWidgetItem(errorPlace));
|
||||||
|
loggerTable->setItem(newRow, 2, new QTableWidgetItem(errorString));
|
||||||
|
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(errorCount)));
|
||||||
|
loggerTable->setItem(newRow, 4, new QTableWidgetItem(description));
|
||||||
|
loggerTable->resizeColumnsToContents();
|
||||||
|
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
||||||
|
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
||||||
|
}
|
||||||
|
|
||||||
void M3KTE::onConnectClicked()
|
void M3KTE::onConnectClicked()
|
||||||
{
|
{
|
||||||
if(!modbusDevice)
|
if(!modbusDevice)
|
||||||
@ -527,7 +542,9 @@ void M3KTE::onConnectClicked()
|
|||||||
changeTable(0, 0);
|
changeTable(0, 0);
|
||||||
ui->M3kteMenuSettings->setEnabled(true);
|
ui->M3kteMenuSettings->setEnabled(true);
|
||||||
ui->M3kteRegSettings->setEnabled(true);
|
ui->M3kteRegSettings->setEnabled(true);
|
||||||
|
ui->BST_Off->setCheckable(false);
|
||||||
ui->BST_Off->setChecked(false);
|
ui->BST_Off->setChecked(false);
|
||||||
|
ui->BST_On->setCheckable(true);
|
||||||
ui->BST_On->setChecked(true);
|
ui->BST_On->setChecked(true);
|
||||||
ui->BSM_Warning->setEnabled(true);
|
ui->BSM_Warning->setEnabled(true);
|
||||||
ui->BSM_Accident->setEnabled(true);
|
ui->BSM_Accident->setEnabled(true);
|
||||||
@ -563,7 +580,9 @@ void M3KTE::onConnectClicked()
|
|||||||
ui->M3kteRegSettings->setEnabled(false);
|
ui->M3kteRegSettings->setEnabled(false);
|
||||||
ui->ConnectionMenuConnect->setEnabled(true);
|
ui->ConnectionMenuConnect->setEnabled(true);
|
||||||
ui->ConnectionMenuDisconnect->setEnabled(false);
|
ui->ConnectionMenuDisconnect->setEnabled(false);
|
||||||
|
ui->BST_Off->setCheckable(true);
|
||||||
ui->BST_Off->setChecked(true);
|
ui->BST_Off->setChecked(true);
|
||||||
|
ui->BST_On->setCheckable(false);
|
||||||
ui->BST_On->setChecked(false);
|
ui->BST_On->setChecked(false);
|
||||||
ui->BSM_Warning->setChecked(false);
|
ui->BSM_Warning->setChecked(false);
|
||||||
ui->BSM_Accident->setChecked(false);
|
ui->BSM_Accident->setChecked(false);
|
||||||
@ -633,30 +652,16 @@ void M3KTE::onReadReady()
|
|||||||
statusBar()->showMessage(tr("Read response error: %1 (Mobus exception: 0x%2)").
|
statusBar()->showMessage(tr("Read response error: %1 (Mobus exception: 0x%2)").
|
||||||
arg(reply->errorString()).
|
arg(reply->errorString()).
|
||||||
arg(reply->rawResult().exceptionCode(), -1, 16), 5000);
|
arg(reply->rawResult().exceptionCode(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[Adr].error_RX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString::number(reply->rawResult().exceptionCode()));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[Adr].error_RX, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString::number(reply->rawResult().exceptionCode(), 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
} else {
|
} else {
|
||||||
statusBar()->showMessage(tr("Read response error: %1 (code: 0x%2)").
|
statusBar()->showMessage(tr("Read response error: %1 (code: 0x%2)").
|
||||||
arg(reply->errorString()).
|
arg(reply->errorString()).
|
||||||
arg(reply->error(), -1, 16), 5000);
|
arg(reply->error(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[Adr].error_RX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString::number(reply->error(), 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[Adr].error_RX, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString::number(reply->error(), 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
@ -686,29 +691,15 @@ void M3KTE::onWriteButtonClicked()
|
|||||||
statusBar()->showMessage(tr("Write response error: %1 (Mobus exception: 0x%2)")
|
statusBar()->showMessage(tr("Write response error: %1 (Mobus exception: 0x%2)")
|
||||||
.arg(reply->errorString()).arg(reply->rawResult().exceptionCode(), -1, 16),
|
.arg(reply->errorString()).arg(reply->rawResult().exceptionCode(), -1, 16),
|
||||||
5000);
|
5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(tmp_id+1).arg(Boards[tmp_id].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[tmp_id].error_TX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString::number(reply->rawResult().exceptionCode(), 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(tmp_id+1).arg(Boards[tmp_id].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[tmp_id].error_TX, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString::number(reply->rawResult().exceptionCode(), 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
} else if(reply->error() != QModbusDevice::NoError) {
|
} else if(reply->error() != QModbusDevice::NoError) {
|
||||||
statusBar()->showMessage(tr("Write response error: %1 (code: 0x%2)").
|
statusBar()->showMessage(tr("Write response error: %1 (code: 0x%2)").
|
||||||
arg(reply->errorString()).arg(reply->error(), -1, 16), 5000);
|
arg(reply->errorString()).arg(reply->error(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(tmp_id+1).arg(Boards[tmp_id].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[tmp_id].error_TX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString::number(reply->error()));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(tmp_id+1).arg(Boards[tmp_id].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[tmp_id].error_TX, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString::number(reply->error(), 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
});
|
});
|
||||||
@ -718,14 +709,7 @@ void M3KTE::onWriteButtonClicked()
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
statusBar()->showMessage(tr("Write error: ") + modbusDevice->errorString(), 5000);
|
statusBar()->showMessage(tr("Write error: ") + modbusDevice->errorString(), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Терминал"), modbusDevice->errorString(), 0, "");
|
||||||
loggerTable->insertRow(newRow);
|
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Терминал")));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -815,71 +799,36 @@ bool M3KTE::event(QEvent *event)
|
|||||||
checkAdrChange(subreply, _event->BoardNum());
|
checkAdrChange(subreply, _event->BoardNum());
|
||||||
});
|
});
|
||||||
else {
|
else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr),
|
||||||
loggerTable->insertRow(newRow);
|
subreply->errorString(), ++Boards[_event->BoardNum()].error_adr_change,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
"Не удалось изменить адрес устройства. [1]");
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(subreply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[_event->BoardNum()].error_adr_change, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Не удалось изменить адрес устройства. [1]"));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
delete subreply; // broadcast replies return immediately
|
delete subreply; // broadcast replies return immediately
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[_event->BoardNum()].error_adr_change,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
"Не удалось изменить адрес устройства. [2]");
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[_event->BoardNum()].error_adr_change, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Не удалось изменить адрес устройства. [2]"));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[_event->BoardNum()].error_adr_change,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
"Не удалось изменить адрес устройства. [3]");
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[_event->BoardNum()].error_adr_change, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Не удалось изменить адрес устройства. [3]"));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
else {
|
else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[_event->BoardNum()].error_adr_change,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
"Не удалось изменить адрес устройства. [4]");
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[_event->BoardNum()].error_adr_change, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Не удалось изменить адрес устройства. [4]"));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
delete reply;
|
delete reply;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[_event->BoardNum()].error_adr_change,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
"Не удалось изменить адрес устройства. [5]");
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(_event->BoardNum()+1).arg(Boards[_event->BoardNum()].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[_event->BoardNum()].error_adr_change, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Не удалось изменить адрес устройства. [5]"));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
m_deviceSettingsDialog->show();
|
m_deviceSettingsDialog->show();
|
||||||
@ -892,28 +841,14 @@ bool M3KTE::event(QEvent *event)
|
|||||||
if(!reply->isFinished())
|
if(!reply->isFinished())
|
||||||
connect(reply, &QModbusReply::finished, this, [reply, this, _event]() {
|
connect(reply, &QModbusReply::finished, this, [reply, this, _event]() {
|
||||||
if(reply->error()!=QModbusDevice::NoError) {
|
if(reply->error()!=QModbusDevice::NoError) {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(_event->BoardID()+1).arg(Boards[_event->BoardID()].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[_event->BoardID()].error_cmd_change, "");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(_event->BoardID()+1).arg(Boards[_event->BoardID()].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[_event->BoardID()].error_cmd_change, 10)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(_event->BoardID()+1).arg(Boards[_event->BoardID()].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[_event->BoardID()].error_cmd_change, "");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(_event->BoardID()+1).arg(Boards[_event->BoardID()].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[_event->BoardID()].error_cmd_change, 10)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -924,16 +859,9 @@ bool M3KTE::event(QEvent *event)
|
|||||||
void M3KTE::checkAdrChange(QModbusReply *reply, unsigned boardNum)
|
void M3KTE::checkAdrChange(QModbusReply *reply, unsigned boardNum)
|
||||||
{
|
{
|
||||||
if(!reply) {
|
if(!reply) {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardNum+1).arg(Boards[boardNum].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[boardNum].error_adr_change,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
"Не удалось проверить изменение адреса устройства.");
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardNum+1).arg(Boards[boardNum].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardNum].error_adr_change, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Не удалось проверить изменение адреса устройства."));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -943,16 +871,10 @@ void M3KTE::checkAdrChange(QModbusReply *reply, unsigned boardNum)
|
|||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardNum+1).arg(Boards[boardNum].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(),
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
++Boards[boardNum].error_adr_change,
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardNum+1).arg(Boards[boardNum].adr)));
|
"Ошибка при подтверждении изменения адреса устройства.");
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardNum].error_adr_change, 10)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при подтверждении изменения адреса устройства."));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1103,17 +1025,13 @@ void M3KTE::checkBoards()
|
|||||||
|
|
||||||
pendingBoards.insert(slaveAddress);
|
pendingBoards.insert(slaveAddress);
|
||||||
|
|
||||||
connect(reply, &QModbusReply::finished, this, [this, reply, slaveAddress, &confirmedBoards, &pendingBoards, totalActiveBoards]() mutable {
|
connect(reply, &QModbusReply::finished, this, [this, i, reply, slaveAddress, &confirmedBoards, &pendingBoards, totalActiveBoards]() mutable {
|
||||||
if(reply->error() == QModbusDevice::NoError) {
|
if(reply->error() == QModbusDevice::NoError) {
|
||||||
// Проверяем что пришел валидный ответ
|
|
||||||
QModbusDataUnit unit = reply->result();
|
|
||||||
if(unit.valueCount() > 0) {
|
|
||||||
confirmedBoards++;
|
confirmedBoards++;
|
||||||
} else {
|
} else {
|
||||||
|
logError(tr("Плата %1 (ID %2)").arg(i+1).arg(slaveAddress),
|
||||||
}
|
reply->errorString(), ++Boards[i].error_baud_change,
|
||||||
} else {
|
"Ошибка при подтверждении изменения скорости обмена.");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pendingBoards.remove(slaveAddress);
|
pendingBoards.remove(slaveAddress);
|
||||||
@ -1167,16 +1085,8 @@ void M3KTE::onSpeedUpdate()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(tmp_speed == 0) {
|
if(tmp_speed == 0) {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Программная ошибка"), "Неожиданное значение скорости", 0,
|
||||||
loggerTable->insertRow(newRow);
|
"Ошибка при изменении скорости обмена.");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Программная ошибка")));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem("Неожиданное значение скорости"));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(0));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении скорости обмена."));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
beginScanBoards();
|
beginScanBoards();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1199,9 +1109,17 @@ void M3KTE::onSpeedUpdate()
|
|||||||
if(reply) {
|
if(reply) {
|
||||||
totalActiveBoards++;
|
totalActiveBoards++;
|
||||||
pendingBoards.insert(slaveAdress);
|
pendingBoards.insert(slaveAdress);
|
||||||
connect(reply, &QModbusReply::finished, this, [this, reply, slaveAdress, &confirmedBoards, &pendingBoards, totalActiveBoards, tmp_speed]() mutable {
|
connect(reply, &QModbusReply::finished, this, [this, i, reply, slaveAdress, &confirmedBoards, &pendingBoards, totalActiveBoards, tmp_speed]() mutable {
|
||||||
if(reply->error() == QModbusDevice::TimeoutError) {
|
if(reply->error() == QModbusDevice::TimeoutError) {
|
||||||
confirmedBoards++;
|
confirmedBoards++;
|
||||||
|
} else if (reply->error() == QModbusDevice::NoError) {
|
||||||
|
logError(tr("Плата %1 (ID %2)").arg(i+1).arg(slaveAdress),
|
||||||
|
tr("Неожиданный ответ."), ++Boards[i].error_baud_change,
|
||||||
|
"Ошибка при изменении скорости обмена.");
|
||||||
|
} else {
|
||||||
|
logError(tr("Плата %1 (ID %2)").arg(i+1).arg(slaveAdress),
|
||||||
|
reply->errorString(), ++Boards[i].error_baud_change,
|
||||||
|
"Ошибка при изменении скорости обмена.");
|
||||||
}
|
}
|
||||||
pendingBoards.remove(slaveAdress);
|
pendingBoards.remove(slaveAdress);
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
@ -1211,18 +1129,18 @@ void M3KTE::onSpeedUpdate()
|
|||||||
revertToOldSpeedAndRestart();
|
revertToOldSpeedAndRestart();
|
||||||
beginScanBoards();
|
beginScanBoards();
|
||||||
} else {
|
} else {
|
||||||
// Переключаемся на tmp_speed
|
|
||||||
modbusDevice->disconnectDevice();
|
modbusDevice->disconnectDevice();
|
||||||
modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter, tmp_speed);
|
modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter, tmp_speed);
|
||||||
modbusDevice->connectDevice();
|
modbusDevice->connectDevice();
|
||||||
connect(this, &M3KTE::errorAtCheckBoards, this, [this](){
|
connect(this, &M3KTE::errorAtCheckBoards, this, [this]() {
|
||||||
disconnect(this, &M3KTE::errorAtCheckBoards, this, nullptr);
|
disconnect(this, &M3KTE::errorAtCheckBoards, this, nullptr);
|
||||||
modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);
|
modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);
|
||||||
revertToOldSpeedAndRestart();
|
revertToOldSpeedAndRestart();
|
||||||
beginScanBoards();
|
beginScanBoards();
|
||||||
});
|
});
|
||||||
connect(this, &M3KTE::successAtCheckBoards, this, [this](){
|
connect(this, &M3KTE::successAtCheckBoards, this, [this]() {
|
||||||
disconnect(this, &M3KTE::successAtCheckBoards, this, nullptr);
|
disconnect(this, &M3KTE::successAtCheckBoards, this, nullptr);
|
||||||
|
m_settingsDialog->UpdateBaud(m_deviceSettingsDialog->currentSpeed());
|
||||||
modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);
|
modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);
|
||||||
beginScanBoards();
|
beginScanBoards();
|
||||||
});
|
});
|
||||||
@ -1244,98 +1162,177 @@ void M3KTE::revertToOldSpeedAndRestart()
|
|||||||
modbusDevice->connectDevice();
|
modbusDevice->connectDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//void M3KTE::onParityUpdate()
|
||||||
|
//{
|
||||||
|
// stopScanBoard();
|
||||||
|
// QModbusDataUnit* _unit = new QModbusDataUnit(QModbusDataUnit::HoldingRegisters, 174, 1);
|
||||||
|
// switch(m_deviceSettingsDialog->currentParity()) {
|
||||||
|
// case 0: //Нет контроля
|
||||||
|
// _unit->setValue(0, 0x000);
|
||||||
|
// break;
|
||||||
|
// case 1: //Четный
|
||||||
|
// _unit->setValue(0, 0x0400);
|
||||||
|
// break;
|
||||||
|
// case 2: //Нечетный
|
||||||
|
// _unit->setValue(0, 0x0600);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// for(int i = 0; i < 4; i++) {
|
||||||
|
// if(!Boards[i].isActive) {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// if(auto *reply = modbusDevice->sendWriteRequest(*_unit, Boards[i].adr)) {
|
||||||
|
// QEventLoop loop;
|
||||||
|
// connect(reply, &QModbusReply::finished, &loop, &QEventLoop::quit);
|
||||||
|
// loop.exec(); // Ожидает завершения reply без блокировки интерфейса
|
||||||
|
// if(reply->error()==QModbusDevice::TimeoutError) {
|
||||||
|
// modbusDevice->disconnectDevice();
|
||||||
|
// modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
||||||
|
// m_deviceSettingsDialog->currentParity());
|
||||||
|
// modbusDevice->connectDevice();
|
||||||
|
// QModbusDataUnit* _unit = new QModbusDataUnit(QModbusDataUnit::InputRegisters, 85, 1);
|
||||||
|
// if(auto *subreply = modbusDevice->sendReadRequest(*_unit, Boards[i].adr)) {
|
||||||
|
// QEventLoop subloop;
|
||||||
|
// connect(subreply, &QModbusReply::finished, &subloop, &QEventLoop::quit);
|
||||||
|
// subloop.exec(); // Ожидает завершения subreply без блокировки интерфейса
|
||||||
|
// if(subreply->error() != QModbusDevice::NoError) {
|
||||||
|
// unsigned newRow = loggerTable->rowCount();
|
||||||
|
// loggerTable->insertRow(newRow);
|
||||||
|
// loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
||||||
|
// loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
||||||
|
// loggerTable->setItem(newRow, 2, new QTableWidgetItem(subreply->errorString()));
|
||||||
|
// loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
||||||
|
// loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
||||||
|
// loggerTable->resizeColumnsToContents();
|
||||||
|
// if(!loggerTable->verticalScrollBar()->isSliderDown())
|
||||||
|
// loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// unsigned newRow = loggerTable->rowCount();
|
||||||
|
// loggerTable->insertRow(newRow);
|
||||||
|
// loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
||||||
|
// loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
||||||
|
// loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
||||||
|
// loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
||||||
|
// loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
||||||
|
// loggerTable->resizeColumnsToContents();
|
||||||
|
// if(!loggerTable->verticalScrollBar()->isSliderDown())
|
||||||
|
// loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
||||||
|
// }
|
||||||
|
// modbusDevice->disconnectDevice();
|
||||||
|
// modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
||||||
|
// m_settingsDialog->curParity());
|
||||||
|
// modbusDevice->connectDevice();
|
||||||
|
// } else {
|
||||||
|
// unsigned newRow = loggerTable->rowCount();
|
||||||
|
// loggerTable->insertRow(newRow);
|
||||||
|
// loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
||||||
|
// loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
||||||
|
// loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
||||||
|
// loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
||||||
|
// loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
||||||
|
// loggerTable->resizeColumnsToContents();
|
||||||
|
// if(!loggerTable->verticalScrollBar()->isSliderDown())
|
||||||
|
// loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// unsigned newRow = loggerTable->rowCount();
|
||||||
|
// loggerTable->insertRow(newRow);
|
||||||
|
// loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
||||||
|
// loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
||||||
|
// loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
||||||
|
// loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
||||||
|
// loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
||||||
|
// loggerTable->resizeColumnsToContents();
|
||||||
|
// if(!loggerTable->verticalScrollBar()->isSliderDown())
|
||||||
|
// loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
||||||
|
// delete reply; // broadcast replies return immediately
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// modbusDevice->disconnectDevice();
|
||||||
|
// modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
||||||
|
// m_settingsDialog->UpdateParity(m_deviceSettingsDialog->currentParity()));
|
||||||
|
// modbusDevice->connectDevice();
|
||||||
|
// beginScanBoards();
|
||||||
|
//}
|
||||||
|
|
||||||
void M3KTE::onParityUpdate()
|
void M3KTE::onParityUpdate()
|
||||||
{
|
{
|
||||||
stopScanBoard();
|
stopScanBoard();
|
||||||
QModbusDataUnit* _unit = new QModbusDataUnit(QModbusDataUnit::HoldingRegisters, 174, 1);
|
modbusDevice->setTimeout(500);
|
||||||
|
|
||||||
|
QModbusDataUnit unit(QModbusDataUnit::HoldingRegisters, 174, 1);
|
||||||
switch(m_deviceSettingsDialog->currentParity()) {
|
switch(m_deviceSettingsDialog->currentParity()) {
|
||||||
case 0: //Нет контроля
|
case 0: //Нет контроля
|
||||||
_unit->setValue(0, 0x000);
|
unit.setValue(0, 0x000);
|
||||||
break;
|
break;
|
||||||
case 1: //Четный
|
case 1: //Четный
|
||||||
_unit->setValue(0, 0x0400);
|
unit.setValue(0, 0x0400);
|
||||||
break;
|
break;
|
||||||
case 2: //Нечетный
|
case 2: //Нечетный
|
||||||
_unit->setValue(0, 0x0600);
|
unit.setValue(0, 0x0600);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int totalActiveBoards = 0;
|
||||||
|
int confirmedBoards = 0;
|
||||||
|
|
||||||
|
QSet<int> pendingBoards;
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++) {
|
for(int i = 0; i < 4; i++) {
|
||||||
if(!Boards[i].isActive) {
|
if(!Boards[i].isActive)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
int slaveAdress = Boards[i].adr;
|
||||||
|
|
||||||
|
auto *reply = modbusDevice->sendWriteRequest(unit, slaveAdress);
|
||||||
|
if(reply) {
|
||||||
|
totalActiveBoards++;
|
||||||
|
pendingBoards.insert(slaveAdress);
|
||||||
|
connect(reply, &QModbusReply::finished, this, [this, i, reply, slaveAdress, &confirmedBoards, &pendingBoards, totalActiveBoards]() mutable {
|
||||||
|
if(reply->error() == QModbusDevice::TimeoutError) {
|
||||||
|
confirmedBoards++;
|
||||||
|
} else if (reply->error() == QModbusDevice::NoError) {
|
||||||
|
logError(tr("Плата %1 (ID %2)").arg(i+1).arg(slaveAdress),
|
||||||
|
tr("Неожиданный ответ."), ++Boards[i].error_baud_change,
|
||||||
|
"Ошибка при изменении чётности.");
|
||||||
|
} else {
|
||||||
|
logError(tr("Плата %1 (ID %2)").arg(i+1).arg(slaveAdress),
|
||||||
|
reply->errorString(), ++Boards[i].error_baud_change,
|
||||||
|
"Ошибка при изменении чётности.");
|
||||||
}
|
}
|
||||||
if(auto *reply = modbusDevice->sendWriteRequest(*_unit, Boards[i].adr)) {
|
pendingBoards.remove(slaveAdress);
|
||||||
QEventLoop loop;
|
reply->deleteLater();
|
||||||
connect(reply, &QModbusReply::finished, &loop, &QEventLoop::quit);
|
if(pendingBoards.isEmpty()) {
|
||||||
loop.exec(); // Ожидает завершения reply без блокировки интерфейса
|
if(confirmedBoards != totalActiveBoards) {
|
||||||
if(reply->error()==QModbusDevice::TimeoutError) {
|
modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);
|
||||||
|
beginScanBoards();
|
||||||
|
} else {
|
||||||
modbusDevice->disconnectDevice();
|
modbusDevice->disconnectDevice();
|
||||||
modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
||||||
m_deviceSettingsDialog->currentParity());
|
m_deviceSettingsDialog->currentParity());
|
||||||
modbusDevice->connectDevice();
|
modbusDevice->connectDevice();
|
||||||
QModbusDataUnit* _unit = new QModbusDataUnit(QModbusDataUnit::InputRegisters, 85, 1);
|
connect(this, &M3KTE::errorAtCheckBoards, this, [this](){
|
||||||
if(auto *subreply = modbusDevice->sendReadRequest(*_unit, Boards[i].adr)) {
|
disconnect(this, &M3KTE::errorAtCheckBoards, this, nullptr);
|
||||||
QEventLoop subloop;
|
modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);
|
||||||
connect(subreply, &QModbusReply::finished, &subloop, &QEventLoop::quit);
|
|
||||||
subloop.exec(); // Ожидает завершения subreply без блокировки интерфейса
|
|
||||||
if(subreply->error() != QModbusDevice::NoError) {
|
|
||||||
unsigned newRow = loggerTable->rowCount();
|
|
||||||
loggerTable->insertRow(newRow);
|
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(subreply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unsigned newRow = loggerTable->rowCount();
|
|
||||||
loggerTable->insertRow(newRow);
|
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
|
||||||
modbusDevice->disconnectDevice();
|
modbusDevice->disconnectDevice();
|
||||||
modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
||||||
m_settingsDialog->curParity());
|
m_settingsDialog->curParity());
|
||||||
modbusDevice->connectDevice();
|
modbusDevice->connectDevice();
|
||||||
} else {
|
|
||||||
unsigned newRow = loggerTable->rowCount();
|
|
||||||
loggerTable->insertRow(newRow);
|
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unsigned newRow = loggerTable->rowCount();
|
|
||||||
loggerTable->insertRow(newRow);
|
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(i+1).arg(Boards[i].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[i].error_parity_change)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem("Ошибка при изменении чётности платы."));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
delete reply; // broadcast replies return immediately
|
|
||||||
}
|
|
||||||
}
|
|
||||||
modbusDevice->disconnectDevice();
|
|
||||||
modbusDevice->setConnectionParameter(QModbusDevice::SerialParityParameter,
|
|
||||||
m_settingsDialog->UpdateParity(m_deviceSettingsDialog->currentParity()));
|
|
||||||
modbusDevice->connectDevice();
|
|
||||||
beginScanBoards();
|
beginScanBoards();
|
||||||
|
});
|
||||||
|
connect(this, &M3KTE::successAtCheckBoards, this, [this](){
|
||||||
|
disconnect(this, &M3KTE::successAtCheckBoards, this, nullptr);
|
||||||
|
m_settingsDialog->UpdateParity(m_deviceSettingsDialog->currentParity());
|
||||||
|
modbusDevice->setTimeout(m_settingsDialog->settings().responseTime);
|
||||||
|
beginScanBoards();
|
||||||
|
});
|
||||||
|
checkBoards();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool M3KTE::pingNetworkDevices()
|
bool M3KTE::pingNetworkDevices()
|
||||||
@ -1375,8 +1372,7 @@ bool M3KTE::pingNetworkDevices()
|
|||||||
bar->close();
|
bar->close();
|
||||||
bar->deleteLater();
|
bar->deleteLater();
|
||||||
return false;
|
return false;
|
||||||
}
|
} else if(isRun) {
|
||||||
else if(isRun) {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
@ -1578,69 +1574,34 @@ void M3KTE::boardScan(unsigned boardID)
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Boards[boardID].timerToDataResponse.elapsed();
|
Boards[boardID].timerToDataResponse.elapsed();
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[boardID].error_TX, "");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_TX)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
Boards[boardID].boardScanners->start(m_deviceSettingsDialog->currentBoardTimer(boardID));
|
Boards[boardID].boardScanners->start(m_deviceSettingsDialog->currentBoardTimer(boardID));
|
||||||
delete subreply;
|
delete subreply;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[boardID].error_TX, "");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_TX)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
Boards[boardID].boardScanners->start(m_deviceSettingsDialog->currentBoardTimer(boardID));
|
Boards[boardID].boardScanners->start(m_deviceSettingsDialog->currentBoardTimer(boardID));
|
||||||
delete subreply;
|
delete subreply;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[boardID].error_TX, "");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_TX)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
else {
|
else {
|
||||||
Boards[boardID].timerToStatusResponse.elapsed();
|
Boards[boardID].timerToStatusResponse.elapsed();
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[boardID].error_TX, "");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_TX)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
Boards[boardID].boardScanners->start(m_deviceSettingsDialog->currentBoardTimer(boardID));
|
Boards[boardID].boardScanners->start(m_deviceSettingsDialog->currentBoardTimer(boardID));
|
||||||
delete reply; // broadcast replies return immediately
|
delete reply; // broadcast replies return immediately
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// QMessageBox::warning(this, QString("Ошибка при опросе платы #%1").arg(boardID+1), QString(tr("Read error: ") + modbusDevice->errorString()));
|
// QMessageBox::warning(this, QString("Ошибка при опросе платы #%1").arg(boardID+1), QString(tr("Read error: ") + modbusDevice->errorString()));
|
||||||
// statusBar()->showMessage(tr("Read error: ") + modbusDevice->errorString(), 5000);
|
// statusBar()->showMessage(tr("Read error: ") + modbusDevice->errorString(), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
modbusDevice->errorString(), ++Boards[boardID].error_TX, "");
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(modbusDevice->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_TX)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1655,16 +1616,9 @@ void M3KTE::displayResultOfScan(QModbusReply *reply, int boardID)
|
|||||||
if(unit.startAddress() != 0 || unit.valueCount() != 85) {
|
if(unit.startAddress() != 0 || unit.valueCount() != 85) {
|
||||||
//ERROR
|
//ERROR
|
||||||
//QMessageBox::warning(this, QString("Ошибка при опросе платы #%1").arg(boardID), QString("Принятый ответ: Стартовый адрес %1, Количество элементов %2").arg(unit.startAddress()).arg(unit.valueCount()));
|
//QMessageBox::warning(this, QString("Ошибка при опросе платы #%1").arg(boardID), QString("Принятый ответ: Стартовый адрес %1, Количество элементов %2").arg(unit.startAddress()).arg(unit.valueCount()));
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
"Ошибка при приёме.", ++Boards[boardID].error_RX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
tr("Принятый ответ: Стартовый адрес %1, Количество элементов %2").arg(unit.startAddress()).arg(unit.valueCount()));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem("Ошибка при приёме."));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_RX)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString("Принятый ответ: Стартовый адрес %1, Количество элементов %2").arg(unit.startAddress()).arg(unit.valueCount())));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1715,30 +1669,14 @@ void M3KTE::displayResultOfScan(QModbusReply *reply, int boardID)
|
|||||||
ui->writeValueTable->model()->index(unit.startAddress() + unit.valueCount() -1, 3));
|
ui->writeValueTable->model()->index(unit.startAddress() + unit.valueCount() -1, 3));
|
||||||
if(A_Flag) {
|
if(A_Flag) {
|
||||||
statusM3KTE.Accidents[boardID] = true;
|
statusM3KTE.Accidents[boardID] = true;
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
"Авария", Boards[boardID].error_A, A_Adr);
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem("Авария"));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(Boards[boardID].error_A)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(A_Adr));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
} else
|
} else
|
||||||
statusM3KTE.Accidents[boardID] = false;
|
statusM3KTE.Accidents[boardID] = false;
|
||||||
if(W_Flag) {
|
if(W_Flag) {
|
||||||
statusM3KTE.Warnings[boardID] = true;
|
statusM3KTE.Warnings[boardID] = true;
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
"Предупреждение", Boards[boardID].error_W, W_Adr);
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem("Предупреждение"));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(Boards[boardID].error_W)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(W_Adr));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
} else
|
} else
|
||||||
statusM3KTE.Warnings[boardID] = false;
|
statusM3KTE.Warnings[boardID] = false;
|
||||||
ui->BSM_Warning->setChecked(false);
|
ui->BSM_Warning->setChecked(false);
|
||||||
@ -1761,30 +1699,16 @@ void M3KTE::displayResultOfScan(QModbusReply *reply, int boardID)
|
|||||||
statusBar()->showMessage(tr("Read response error: %1 (Mobus exception: 0x%2)").
|
statusBar()->showMessage(tr("Read response error: %1 (Mobus exception: 0x%2)").
|
||||||
arg(reply->errorString()).
|
arg(reply->errorString()).
|
||||||
arg(reply->rawResult().exceptionCode(), -1, 16), 5000);
|
arg(reply->rawResult().exceptionCode(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[boardID].error_RX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString("Mobus exception: 0x%1").arg(reply->rawResult().exceptionCode(), -1, 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_RX)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString("Mobus exception: 0x%1").arg(reply->rawResult().exceptionCode(), -1, 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
} else {
|
} else {
|
||||||
statusBar()->showMessage(tr("Read response error: %1 (code: 0x%2)").
|
statusBar()->showMessage(tr("Read response error: %1 (code: 0x%2)").
|
||||||
arg(reply->errorString()).
|
arg(reply->errorString()).
|
||||||
arg(reply->error(), -1, 16), 5000);
|
arg(reply->error(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[boardID].error_RX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString::number(reply->error(), 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(boardID+1).arg(Boards[boardID].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[boardID].error_RX)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString::number(reply->error(), 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
@ -1817,30 +1741,16 @@ void M3KTE::applySettingsFromScan(QModbusReply *reply)
|
|||||||
statusBar()->showMessage(tr("Read response error: %1 (Mobus exception: 0x%2)").
|
statusBar()->showMessage(tr("Read response error: %1 (Mobus exception: 0x%2)").
|
||||||
arg(reply->errorString()).
|
arg(reply->errorString()).
|
||||||
arg(reply->rawResult().exceptionCode(), -1, 16), 5000);
|
arg(reply->rawResult().exceptionCode(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[Adr].error_RX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString("Mobus exception: 0x%1").arg(reply->rawResult().exceptionCode(), -1, 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[Adr].error_RX)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString("Mobus exception: 0x%1").arg(reply->rawResult().exceptionCode(), -1, 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
} else {
|
} else {
|
||||||
statusBar()->showMessage(tr("Read response error: %1 (code: 0x%2)").
|
statusBar()->showMessage(tr("Read response error: %1 (code: 0x%2)").
|
||||||
arg(reply->errorString()).
|
arg(reply->errorString()).
|
||||||
arg(reply->error(), -1, 16), 5000);
|
arg(reply->error(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[Adr].error_RX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString::number(reply->error(), 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[Adr].error_RX)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString::number(reply->error(), 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
@ -1884,29 +1794,15 @@ void M3KTE::multipleRegSend()
|
|||||||
statusBar()->showMessage(tr("Write response error: %1 (Mobus exception: 0x%2)")
|
statusBar()->showMessage(tr("Write response error: %1 (Mobus exception: 0x%2)")
|
||||||
.arg(reply->errorString()).arg(reply->rawResult().exceptionCode(), -1, 16),
|
.arg(reply->errorString()).arg(reply->rawResult().exceptionCode(), -1, 16),
|
||||||
5000);
|
5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[Adr].error_TX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString("Mobus exception: 0x%1").arg(reply->rawResult().exceptionCode(), -1, 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[Adr].error_TX)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString("Mobus exception: 0x%1").arg(reply->rawResult().exceptionCode(), -1, 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
} else if(reply->error() != QModbusDevice::NoError) {
|
} else if(reply->error() != QModbusDevice::NoError) {
|
||||||
statusBar()->showMessage(tr("Write response error: %1 (code: 0x%2)").
|
statusBar()->showMessage(tr("Write response error: %1 (code: 0x%2)").
|
||||||
arg(reply->errorString()).arg(reply->error(), -1, 16), 5000);
|
arg(reply->errorString()).arg(reply->error(), -1, 16), 5000);
|
||||||
unsigned newRow = loggerTable->rowCount();
|
logError(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr),
|
||||||
loggerTable->insertRow(newRow);
|
reply->errorString(), ++Boards[Adr].error_TX,
|
||||||
loggerTable->setItem(newRow, 0, new QTableWidgetItem((QTime::currentTime().toString("HH:mm:ss"))));
|
QString::number(reply->error(), 16));
|
||||||
loggerTable->setItem(newRow, 1, new QTableWidgetItem(tr("Плата %1 (ID %2)").arg(Adr+1).arg(Boards[Adr].adr)));
|
|
||||||
loggerTable->setItem(newRow, 2, new QTableWidgetItem(reply->errorString()));
|
|
||||||
loggerTable->setItem(newRow, 3, new QTableWidgetItem(QString::number(++Boards[Adr].error_TX)));
|
|
||||||
loggerTable->setItem(newRow, 4, new QTableWidgetItem(QString::number(reply->error(), 16)));
|
|
||||||
loggerTable->resizeColumnsToContents();
|
|
||||||
if(!loggerTable->verticalScrollBar()->isSliderDown())
|
|
||||||
loggerTable->verticalScrollBar()->setSliderPosition(loggerTable->verticalScrollBar()->maximum());
|
|
||||||
}
|
}
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
});
|
});
|
||||||
|
@ -65,12 +65,11 @@ private:
|
|||||||
void selectPositionOnTree(unsigned index);
|
void selectPositionOnTree(unsigned index);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void successAtCheckBoards();
|
void successAtCheckBoards();
|
||||||
void errorAtCheckBoards();
|
void errorAtCheckBoards();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void logError(const QString &errorPlace, const QString &errorString, unsigned errorCount, const QString &description);
|
||||||
void slotmultipleRegWrite();
|
void slotmultipleRegWrite();
|
||||||
void slotmultipleRegWriteAndSend();
|
void slotmultipleRegWriteAndSend();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user