новый алг иправлен
+ исправлен нахождение плат с костылем + исправлен вылет приложения при опросе 4 платы (из-за того, что в ней 65, а не 85 регистров) сделал чтобы везде было 85, просто отображатся будет 65
This commit is contained in:
parent
c9b44e5dab
commit
726d8d24ef
@ -1,26 +1,23 @@
|
|||||||
#include "devicesettingsdialog.h"
|
#include "devicesettingsdialog.h"
|
||||||
#include "ui_devicesettingsdialog.h"
|
#include "ui_devicesettingsdialog.h"
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QProcess>
|
||||||
|
#include <QCoreApplication>
|
||||||
|
|
||||||
DeviceSettingsDialog::DeviceSettingsDialog(QWidget *parent) :
|
DeviceSettingsDialog::DeviceSettingsDialog(QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::DeviceSettingsDialog)
|
ui(new Ui::DeviceSettingsDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
on_buttonApplyChangeTimer_clicked();
|
||||||
_currentBoardTimers[0] = ui->spinTimerBoard_1->value();
|
{
|
||||||
_currentBoardTimers[1] = ui->spinTimerBoard_2->value();
|
_m_timer[0] = ui->spinTimerBoard_1;
|
||||||
_currentBoardTimers[2] = ui->spinTimerBoard_3->value();
|
_m_timer[1] = ui->spinTimerBoard_2;
|
||||||
_currentBoardTimers[3] = ui->spinTimerBoard_4->value();
|
_m_timer[2] = ui->spinTimerBoard_3;
|
||||||
|
_m_timer[3] = ui->spinTimerBoard_4;
|
||||||
_m_timer[0] = ui->spinTimerBoard_1;
|
}
|
||||||
_m_timer[1] = ui->spinTimerBoard_2;
|
|
||||||
_m_timer[2] = ui->spinTimerBoard_3;
|
|
||||||
_m_timer[3] = ui->spinTimerBoard_4;
|
|
||||||
|
|
||||||
_currentSpeed = ui->speedBox->currentText().toUInt();
|
_currentSpeed = ui->speedBox->currentText().toUInt();
|
||||||
|
|
||||||
_currentParity = ui->parityBox->currentIndex();
|
_currentParity = ui->parityBox->currentIndex();
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++) {
|
for(int i = 0; i < 4; i++) {
|
||||||
_currentAdrs[i] = i+1;
|
_currentAdrs[i] = i+1;
|
||||||
}
|
}
|
||||||
@ -105,17 +102,11 @@ void DeviceSettingsDialog::on_buttonBox_clicked(QAbstractButton *button)
|
|||||||
ui->spinTimerBoard_2->setValue(1000);
|
ui->spinTimerBoard_2->setValue(1000);
|
||||||
ui->spinTimerBoard_3->setValue(1000);
|
ui->spinTimerBoard_3->setValue(1000);
|
||||||
ui->spinTimerBoard_4->setValue(1000);
|
ui->spinTimerBoard_4->setValue(1000);
|
||||||
_currentBoardTimers[0] = ui->spinTimerBoard_1->value();
|
on_buttonApplyChangeTimer_clicked();
|
||||||
_currentBoardTimers[1] = ui->spinTimerBoard_2->value();
|
|
||||||
_currentBoardTimers[2] = ui->spinTimerBoard_3->value();
|
|
||||||
_currentBoardTimers[3] = ui->spinTimerBoard_4->value();
|
|
||||||
|
|
||||||
ui->speedBox->setCurrentText("31250");
|
ui->speedBox->setCurrentText("31250");
|
||||||
_currentSpeed = ui->speedBox->currentText().toUInt();
|
_currentSpeed = ui->speedBox->currentText().toUInt();
|
||||||
|
|
||||||
ui->parityBox->setCurrentIndex(0);
|
ui->parityBox->setCurrentIndex(0);
|
||||||
_currentParity = ui->parityBox->currentIndex();
|
_currentParity = ui->parityBox->currentIndex();
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++) {
|
for(int i = 0; i < 4; i++) {
|
||||||
_currentAdrs[i] = i+1;
|
_currentAdrs[i] = i+1;
|
||||||
}
|
}
|
||||||
@ -131,7 +122,7 @@ void DeviceSettingsDialog::on_buttonBox_clicked(QAbstractButton *button)
|
|||||||
|
|
||||||
void DeviceSettingsDialog::initPollForBoard(unsigned boardID, unsigned boardAdr)
|
void DeviceSettingsDialog::initPollForBoard(unsigned boardID, unsigned boardAdr)
|
||||||
{
|
{
|
||||||
ui->idPollComboBox->addItem(QString("Плата №%1 (ID %2)").arg(boardID).arg(boardAdr), QVariant(boardID));
|
ui->idPollComboBox->addItem(QString("Плата №%1 (ID %2)").arg(boardID+1).arg(boardAdr), QVariant(boardID));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceSettingsDialog::updatePollStatus(unsigned boardID, bool status)
|
void DeviceSettingsDialog::updatePollStatus(unsigned boardID, bool status)
|
||||||
|
@ -11,23 +11,25 @@ LineRinger::LineRinger(QWidget *parent) :
|
|||||||
for (const auto& port: listPorts) {
|
for (const auto& port: listPorts) {
|
||||||
ui->comBox->addItem(QString(port.portName() + ": " + port.manufacturer()), QVariant(port.portName()));
|
ui->comBox->addItem(QString(port.portName() + ": " + port.manufacturer()), QVariant(port.portName()));
|
||||||
}
|
}
|
||||||
|
{
|
||||||
ui->parityControlBox->addItem("No", QVariant(QSerialPort::NoParity));
|
ui->parityControlBox->addItem("No", QVariant(QSerialPort::NoParity));
|
||||||
ui->parityControlBox->addItem("Even", QVariant(QSerialPort::EvenParity));
|
ui->parityControlBox->addItem("Even", QVariant(QSerialPort::EvenParity));
|
||||||
ui->parityControlBox->addItem("Odd", QVariant(QSerialPort::OddParity));
|
ui->parityControlBox->addItem("Odd", QVariant(QSerialPort::OddParity));
|
||||||
ui->parityControlBox->addItem("Space", QVariant(QSerialPort::SpaceParity));
|
ui->parityControlBox->addItem("Space", QVariant(QSerialPort::SpaceParity));
|
||||||
ui->parityControlBox->addItem("Mark", QVariant(QSerialPort::MarkParity));
|
ui->parityControlBox->addItem("Mark", QVariant(QSerialPort::MarkParity));
|
||||||
|
}
|
||||||
ui->dataBox->addItem("Data5", QVariant(QSerialPort::Data5));
|
{
|
||||||
ui->dataBox->addItem("Data6", QVariant(QSerialPort::Data6));
|
ui->dataBox->addItem("Data5", QVariant(QSerialPort::Data5));
|
||||||
ui->dataBox->addItem("Data7", QVariant(QSerialPort::Data7));
|
ui->dataBox->addItem("Data6", QVariant(QSerialPort::Data6));
|
||||||
ui->dataBox->addItem("Data8", QVariant(QSerialPort::Data8));
|
ui->dataBox->addItem("Data7", QVariant(QSerialPort::Data7));
|
||||||
ui->dataBox->setCurrentIndex(3);
|
ui->dataBox->addItem("Data8", QVariant(QSerialPort::Data8));
|
||||||
|
ui->dataBox->setCurrentIndex(3);
|
||||||
ui->stopBox->addItem("One", QVariant(QSerialPort::OneStop));
|
}
|
||||||
ui->stopBox->addItem("OneAndHalf", QVariant(QSerialPort::OneAndHalfStop));
|
{
|
||||||
ui->stopBox->addItem("Two", QVariant(QSerialPort::TwoStop));
|
ui->stopBox->addItem("One", QVariant(QSerialPort::OneStop));
|
||||||
|
ui->stopBox->addItem("OneAndHalf", QVariant(QSerialPort::OneAndHalfStop));
|
||||||
|
ui->stopBox->addItem("Two", QVariant(QSerialPort::TwoStop));
|
||||||
|
}
|
||||||
ui->deviceOnlineView->horizontalHeader()->setVisible(true);
|
ui->deviceOnlineView->horizontalHeader()->setVisible(true);
|
||||||
syncColumnHeaders();
|
syncColumnHeaders();
|
||||||
ui->deviceOnlineView->setColumnHidden(1, true);
|
ui->deviceOnlineView->setColumnHidden(1, true);
|
||||||
@ -93,10 +95,10 @@ LineRinger::callStatus LineRinger::lineCall()
|
|||||||
bool *tmp_isRun = &isRun;
|
bool *tmp_isRun = &isRun;
|
||||||
uint tmp_adr = 1;
|
uint tmp_adr = 1;
|
||||||
auto bar = new QProgressDialog(this);
|
auto bar = new QProgressDialog(this);
|
||||||
connect(bar, &QProgressDialog::canceled, this, [this, tmp_isRun]() {
|
connect(bar, &QProgressDialog::canceled, this, [tmp_isRun]() {
|
||||||
*tmp_isRun = true;
|
*tmp_isRun = true;
|
||||||
});
|
});
|
||||||
connect(this, &LineRinger::stopLineCall, this, [this, tmp_isRun]() {
|
connect(this, &LineRinger::stopLineCall, this, [tmp_isRun]() {
|
||||||
*tmp_isRun = true;
|
*tmp_isRun = true;
|
||||||
});
|
});
|
||||||
bar->setLabelText(tr("Поиск устройств... Текущий адрес: %1").arg(tmp_adr));
|
bar->setLabelText(tr("Поиск устройств... Текущий адрес: %1").arg(tmp_adr));
|
||||||
@ -107,7 +109,6 @@ LineRinger::callStatus LineRinger::lineCall()
|
|||||||
bar->setValue(tmp_adr);
|
bar->setValue(tmp_adr);
|
||||||
bar->setLabelText(tr("Поиск устройств... Текущий адрес: %1/247").arg(tmp_adr));
|
bar->setLabelText(tr("Поиск устройств... Текущий адрес: %1/247").arg(tmp_adr));
|
||||||
auto *reply = modbusDevice->sendRawRequest(readDeviceBasicIdentification, tmp_adr);
|
auto *reply = modbusDevice->sendRawRequest(readDeviceBasicIdentification, tmp_adr);
|
||||||
//auto *reply = modbusDevice->sendReadRequest(*_unit, tmp_adr);
|
|
||||||
//Запрос типа устройства.
|
//Запрос типа устройства.
|
||||||
if(reply == nullptr) {
|
if(reply == nullptr) {
|
||||||
QMessageBox::warning(this, "Ошибка при сканировании.", QString("%1").arg(modbusDevice->errorString()));
|
QMessageBox::warning(this, "Ошибка при сканировании.", QString("%1").arg(modbusDevice->errorString()));
|
||||||
@ -171,10 +172,6 @@ LineRinger::callStatus LineRinger::lineCall()
|
|||||||
return callStatus::INTERRUPT;
|
return callStatus::INTERRUPT;
|
||||||
} else if(!isRun) {
|
} else if(!isRun) {
|
||||||
if(regularReply->error()!=QModbusDevice::NoError) {
|
if(regularReply->error()!=QModbusDevice::NoError) {
|
||||||
// QMessageBox::warning(this, "Ошибка при сканировании.", QString("%1: %2").arg(regularReply->error()).arg(regularReply->errorString()));
|
|
||||||
// bar->close();
|
|
||||||
// bar->deleteLater();
|
|
||||||
// return callStatus::ERROR;
|
|
||||||
regularReplyError = true;
|
regularReplyError = true;
|
||||||
regularReplyErrorString = QString("%1: %2").arg(regularReply->error()).arg(regularReply->errorString());
|
regularReplyErrorString = QString("%1: %2").arg(regularReply->error()).arg(regularReply->errorString());
|
||||||
}
|
}
|
||||||
@ -237,12 +234,10 @@ void LineRinger::on_ringButton_clicked()
|
|||||||
emit stopLineCall();
|
emit stopLineCall();
|
||||||
});
|
});
|
||||||
bar->setValue(0);
|
bar->setValue(0);
|
||||||
|
|
||||||
ui->deviceOnlineView->setColumnHidden(1, false);
|
ui->deviceOnlineView->setColumnHidden(1, false);
|
||||||
modbusDevice->disconnectDevice();
|
modbusDevice->disconnectDevice();
|
||||||
for (int i = 0; i < ui->baudRateBox->count(); i++) {
|
for (int i = 0; i < ui->baudRateBox->count(); i++) {
|
||||||
bar->setValue(i+1);
|
bar->setValue(i+1);
|
||||||
|
|
||||||
modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter,
|
modbusDevice->setConnectionParameter(QModbusDevice::SerialBaudRateParameter,
|
||||||
ui->baudRateBox->itemText(i).toInt(nullptr, 10));
|
ui->baudRateBox->itemText(i).toInt(nullptr, 10));
|
||||||
if (!modbusDevice->connectDevice()) {
|
if (!modbusDevice->connectDevice()) {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -56,52 +56,36 @@ private:
|
|||||||
void stopScanBoard();
|
void stopScanBoard();
|
||||||
void displayResultOfScan(QModbusReply *reply, int boardID);
|
void displayResultOfScan(QModbusReply *reply, int boardID);
|
||||||
void applySettingsFromScan(QModbusReply *reply);
|
void applySettingsFromScan(QModbusReply *reply);
|
||||||
|
|
||||||
void multipleRegWrite();
|
void multipleRegWrite();
|
||||||
void multipleRegSend();
|
void multipleRegSend();
|
||||||
|
|
||||||
bool autoBaudRateScan();
|
bool autoBaudRateScan();
|
||||||
|
|
||||||
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 logError(const QString &errorPlace, const QString &errorString, unsigned errorCount, const QString &description);
|
||||||
void slotmultipleRegWrite();
|
void slotmultipleRegWrite();
|
||||||
void slotmultipleRegWriteAndSend();
|
void slotmultipleRegWriteAndSend();
|
||||||
|
|
||||||
void onConnectClicked();
|
void onConnectClicked();
|
||||||
|
|
||||||
void onReadButtonClicked();
|
void onReadButtonClicked();
|
||||||
void onReadReady();
|
void onReadReady();
|
||||||
|
|
||||||
void checkAdrChange(QModbusReply *reply, unsigned boardNum);
|
void checkAdrChange(QModbusReply *reply, unsigned boardNum);
|
||||||
|
|
||||||
void onWriteButtonClicked();
|
void onWriteButtonClicked();
|
||||||
void onSelectedBoardChanged(int index);
|
void onSelectedBoardChanged(int index);
|
||||||
void onWriteTableChanged(int index);
|
void onWriteTableChanged(int index);
|
||||||
|
|
||||||
void checkBoards();
|
void checkBoards();
|
||||||
|
|
||||||
void onSpeedUpdate();
|
void onSpeedUpdate();
|
||||||
void revertToOldSpeedAndRestart();
|
void revertToOldSpeedAndRestart();
|
||||||
|
|
||||||
void onParityUpdate();
|
void onParityUpdate();
|
||||||
|
|
||||||
void boardScan(unsigned boardID);
|
void boardScan(unsigned boardID);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
M3KTE(QWidget *parent = nullptr);
|
M3KTE(QWidget *parent = nullptr);
|
||||||
~M3KTE();
|
~M3KTE();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::M3KTE *ui;
|
Ui::M3KTE *ui;
|
||||||
QTableWidget *loggerTable = nullptr;
|
QTableWidget *loggerTable = nullptr;
|
||||||
int CurrentConnectedDevice = 0;
|
int CurrentConnectedDevice = 0;
|
||||||
//int DeviceOnNetwork[4];
|
|
||||||
QProgressBar *m_ProgressBar[320];
|
QProgressBar *m_ProgressBar[320];
|
||||||
QPushButton *ThePhantomMenace[320];
|
QPushButton *ThePhantomMenace[320];
|
||||||
QModbusReply *lastRequest = nullptr;
|
QModbusReply *lastRequest = nullptr;
|
||||||
@ -110,28 +94,20 @@ private:
|
|||||||
SettingsDialog *m_settingsDialog = nullptr;
|
SettingsDialog *m_settingsDialog = nullptr;
|
||||||
MultipleSettings *m_regMultipleSettings = nullptr;
|
MultipleSettings *m_regMultipleSettings = nullptr;
|
||||||
ScanBoard *m_scanBoard = nullptr;
|
ScanBoard *m_scanBoard = nullptr;
|
||||||
|
|
||||||
LineRinger *m_lineRinger = nullptr;
|
LineRinger *m_lineRinger = nullptr;
|
||||||
QGroupBox *Boards_Fields[4];
|
QGroupBox *Boards_Fields[4];
|
||||||
//WriteRegisterModel *writeModel = nullptr;
|
|
||||||
|
|
||||||
struct StatusM3KTE{
|
struct StatusM3KTE{
|
||||||
bool Warnings[4];
|
bool Warnings[4];
|
||||||
bool Accidents[4];
|
bool Accidents[4];
|
||||||
}statusM3KTE;
|
}statusM3KTE;
|
||||||
|
|
||||||
unsigned error_terminal;
|
unsigned error_terminal;
|
||||||
|
|
||||||
struct BoardModbusRegisters {
|
struct BoardModbusRegisters {
|
||||||
bool isActive = false;
|
bool isActive = false;
|
||||||
bool pollIsActive = true;
|
bool pollIsActive = true;
|
||||||
|
|
||||||
int adr;
|
int adr;
|
||||||
int _tmp_adr;
|
int _tmp_adr;
|
||||||
|
|
||||||
bool coil[85];
|
bool coil[85];
|
||||||
unsigned HR[170];
|
unsigned HR[170];
|
||||||
|
|
||||||
unsigned error_W = 0;
|
unsigned error_W = 0;
|
||||||
unsigned error_A = 0;
|
unsigned error_A = 0;
|
||||||
unsigned error_modbus = 0;
|
unsigned error_modbus = 0;
|
||||||
@ -141,19 +117,15 @@ private:
|
|||||||
unsigned error_TX = 0;
|
unsigned error_TX = 0;
|
||||||
unsigned error_adr_change = 0;
|
unsigned error_adr_change = 0;
|
||||||
unsigned error_cmd_change = 0;
|
unsigned error_cmd_change = 0;
|
||||||
|
|
||||||
QLabel *timerData = nullptr;
|
QLabel *timerData = nullptr;
|
||||||
QLabel *timerStatus = nullptr;
|
QLabel *timerStatus = nullptr;
|
||||||
|
|
||||||
WriteRegisterModel *ModbusModelCoil;
|
WriteRegisterModel *ModbusModelCoil;
|
||||||
WriteRegisterModel *ModbusModelHoldingReg;
|
WriteRegisterModel *ModbusModelHoldingReg;
|
||||||
QTimer *boardScanners;
|
QTimer *boardScanners;
|
||||||
bool isScan = false;
|
bool isScan = false;
|
||||||
|
|
||||||
QElapsedTimer timerToStatusResponse;
|
QElapsedTimer timerToStatusResponse;
|
||||||
QElapsedTimer timerToDataResponse;
|
QElapsedTimer timerToDataResponse;
|
||||||
}Boards[4];
|
}Boards[4];
|
||||||
|
|
||||||
union statusreg {
|
union statusreg {
|
||||||
struct parsingFields {
|
struct parsingFields {
|
||||||
unsigned accident:1;
|
unsigned accident:1;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
qputenv("QT_FATAL_WARNINGS", "0"); // отключает падение от ASSERT
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
M3KTE w;
|
M3KTE w;
|
||||||
w.show();
|
w.show();
|
||||||
|
@ -6,7 +6,6 @@ MultipleSettings::MultipleSettings(QWidget *parent) :
|
|||||||
ui(new Ui::MultipleSettings)
|
ui(new Ui::MultipleSettings)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setText("Записать");
|
ui->buttonBox->button(QDialogButtonBox::Ok)->setText("Записать");
|
||||||
ui->buttonBox->button(QDialogButtonBox::SaveAll)->setText("Записать и установить");
|
ui->buttonBox->button(QDialogButtonBox::SaveAll)->setText("Записать и установить");
|
||||||
}
|
}
|
||||||
@ -58,7 +57,6 @@ void MultipleSettings::on_boardBox_currentIndexChanged(int index)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ui->countBox->setRange(1, 85-ui->adrBox->value()+85*ui->regTypeBox->currentIndex()/2);
|
ui->countBox->setRange(1, 85-ui->adrBox->value()+85*ui->regTypeBox->currentIndex()/2);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
|
|||||||
ui(new Ui::SettingsDialog)
|
ui(new Ui::SettingsDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
ui->parityCombo->setCurrentIndex(0);
|
ui->parityCombo->setCurrentIndex(0);
|
||||||
#if QT_CONFIG(modbus_serialport)
|
#if QT_CONFIG(modbus_serialport)
|
||||||
ui->baudCombo->setCurrentText(QString::number(m_settings.baud));
|
ui->baudCombo->setCurrentText(QString::number(m_settings.baud));
|
||||||
@ -16,8 +15,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
|
|||||||
#endif
|
#endif
|
||||||
ui->timeoutSpinner->setValue(m_settings.responseTime);
|
ui->timeoutSpinner->setValue(m_settings.responseTime);
|
||||||
ui->retriesSpinner->setValue(m_settings.numberOfRetries);
|
ui->retriesSpinner->setValue(m_settings.numberOfRetries);
|
||||||
|
|
||||||
|
|
||||||
connect(ui->AcceptOrRejectButtonBox, &QDialogButtonBox::accepted, [this]() {
|
connect(ui->AcceptOrRejectButtonBox, &QDialogButtonBox::accepted, [this]() {
|
||||||
#if QT_CONFIG(modbus_serialport)
|
#if QT_CONFIG(modbus_serialport)
|
||||||
m_settings.portName = ui->comBox->currentData().toString();
|
m_settings.portName = ui->comBox->currentData().toString();
|
||||||
@ -30,7 +27,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
|
|||||||
#endif
|
#endif
|
||||||
m_settings.responseTime = ui->timeoutSpinner->value();
|
m_settings.responseTime = ui->timeoutSpinner->value();
|
||||||
m_settings.numberOfRetries = ui->retriesSpinner->value();
|
m_settings.numberOfRetries = ui->retriesSpinner->value();
|
||||||
|
|
||||||
hide();
|
hide();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ public:
|
|||||||
int baud = 115200;
|
int baud = 115200;
|
||||||
int dataBits = QSerialPort::Data8;
|
int dataBits = QSerialPort::Data8;
|
||||||
int stopBits = QSerialPort::OneStop;
|
int stopBits = QSerialPort::OneStop;
|
||||||
int responseTime = 50;
|
int responseTime = 1000;
|
||||||
int numberOfRetries = 0;
|
int numberOfRetries = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -29,16 +29,12 @@ QVariant WriteRegisterModel::data(const QModelIndex &index, int role) const
|
|||||||
Q_ASSERT(m_holdingRegisters.count() == RowCount);
|
Q_ASSERT(m_holdingRegisters.count() == RowCount);
|
||||||
if (index.column() == NumColumn && role == Qt::DisplayRole)
|
if (index.column() == NumColumn && role == Qt::DisplayRole)
|
||||||
return QString::number(index.row());
|
return QString::number(index.row());
|
||||||
|
|
||||||
if (index.column() == NameColumn && role == Qt::DisplayRole)
|
if (index.column() == NameColumn && role == Qt::DisplayRole)
|
||||||
return QString("ТЭ%1").arg(index.row()%(RowCount/(1+isHR))+1);
|
return QString("ТЭ%1").arg(index.row()%(RowCount/(1+isHR))+1);
|
||||||
|
|
||||||
if (index.column() == CoilsColumn && role == Qt::CheckStateRole) // coils
|
if (index.column() == CoilsColumn && role == Qt::CheckStateRole) // coils
|
||||||
return m_coils.at(index.row()) ? Qt::Checked : Qt::Unchecked;
|
return m_coils.at(index.row()) ? Qt::Checked : Qt::Unchecked;
|
||||||
|
|
||||||
if (index.column() == HoldingColumn && role == Qt::DisplayRole) // holding registers
|
if (index.column() == HoldingColumn && role == Qt::DisplayRole) // holding registers
|
||||||
return QString("0x%1").arg(QString::number(m_holdingRegisters.at(index.row()), 16));
|
return QString("0x%1").arg(QString::number(m_holdingRegisters.at(index.row()), 16));
|
||||||
|
|
||||||
if(index.column() == CurrentUColumn && role == Qt::DisplayRole)
|
if(index.column() == CurrentUColumn && role == Qt::DisplayRole)
|
||||||
return QString("%1 В").arg(QString::number((double)((double)m_currentU.at(index.row())/(double)1000), 'f', 3));
|
return QString("%1 В").arg(QString::number((double)((double)m_currentU.at(index.row())/(double)1000), 'f', 3));
|
||||||
return QVariant();
|
return QVariant();
|
||||||
@ -73,7 +69,6 @@ bool WriteRegisterModel::setData(const QModelIndex &index, const QVariant &value
|
|||||||
return false;
|
return false;
|
||||||
Q_ASSERT(m_coils.count() == RowCount);
|
Q_ASSERT(m_coils.count() == RowCount);
|
||||||
Q_ASSERT(m_holdingRegisters.count() == RowCount);
|
Q_ASSERT(m_holdingRegisters.count() == RowCount);
|
||||||
|
|
||||||
if (index.column() == CoilsColumn && role == Qt::CheckStateRole) { // coils
|
if (index.column() == CoilsColumn && role == Qt::CheckStateRole) { // coils
|
||||||
auto s = static_cast<Qt::CheckState>(value.toUInt());
|
auto s = static_cast<Qt::CheckState>(value.toUInt());
|
||||||
s == Qt::Checked ? m_coils.setBit(index.row()) : m_coils.clearBit(index.row());
|
s == Qt::Checked ? m_coils.setBit(index.row()) : m_coils.clearBit(index.row());
|
||||||
@ -85,7 +80,6 @@ bool WriteRegisterModel::setData(const QModelIndex &index, const QVariant &value
|
|||||||
quint16 newValue = value.toString().toUShort(&result, 16);
|
quint16 newValue = value.toString().toUShort(&result, 16);
|
||||||
if (result)
|
if (result)
|
||||||
m_holdingRegisters[index.row()] = newValue;
|
m_holdingRegisters[index.row()] = newValue;
|
||||||
|
|
||||||
emit dataChanged(index, index);
|
emit dataChanged(index, index);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -96,16 +90,13 @@ Qt::ItemFlags WriteRegisterModel::flags(const QModelIndex &index) const
|
|||||||
{
|
{
|
||||||
if (!index.isValid() || index.row() >= RowCount || index.column() >= ColumnCount)
|
if (!index.isValid() || index.row() >= RowCount || index.column() >= ColumnCount)
|
||||||
return QAbstractTableModel::flags(index);
|
return QAbstractTableModel::flags(index);
|
||||||
|
|
||||||
Qt::ItemFlags flags = QAbstractTableModel::flags(index);
|
Qt::ItemFlags flags = QAbstractTableModel::flags(index);
|
||||||
if ((index.row() < m_address) || (index.row() >= (m_address + m_number)))
|
if ((index.row() < m_address) || (index.row() >= (m_address + m_number)))
|
||||||
flags &= ~Qt::ItemIsEnabled;
|
flags &= ~Qt::ItemIsEnabled;
|
||||||
|
|
||||||
if (index.column() == CoilsColumn) // coils
|
if (index.column() == CoilsColumn) // coils
|
||||||
return flags | Qt::ItemIsUserCheckable;
|
return flags | Qt::ItemIsUserCheckable;
|
||||||
if (index.column() == HoldingColumn) // holding registers
|
if (index.column() == HoldingColumn) // holding registers
|
||||||
return flags | Qt::ItemIsEditable;
|
return flags | Qt::ItemIsEditable;
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
MZKT_Test_Terminal.exe
Normal file
BIN
MZKT_Test_Terminal.exe
Normal file
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user