correct read, change reg

This commit is contained in:
2025-07-04 02:09:52 +07:00
parent d482560e7b
commit 63cc2ac448
2 changed files with 13 additions and 17 deletions

View File

@@ -139,19 +139,6 @@ void Mainwindows::onPollTimer() {
}
}
void Mainwindows::writeRegister(int index) {
if (!m_connected) return;
QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, m_buttonRegisters[index], 1);
if (auto *reply = m_modbusClient->sendWriteRequest(writeUnit, 1)) {
if (!reply->isFinished())
connect(reply, &QModbusReply::finished, reply, &QModbusReply::deleteLater);
else
delete reply;
}
}
void Mainwindows::readRegisters() {
if (!m_connected) return;
@@ -199,7 +186,6 @@ void Mainwindows::onReadReady() {
static const QColor colors[] = {Qt::gray, Qt::black, Qt::green};
m_colorIndices[i] = value % 3;
m_squares[i]->setColor(colors[m_colorIndices[i]]);
qDebug() << "Indicator" << i << "address:" << address << "value:" << value;
break;
}
}
@@ -207,9 +193,9 @@ void Mainwindows::onReadReady() {
// Handle buttons
for (int i = 0; i < m_buttonRegisters.size(); ++i) {
if (address == m_buttonRegisters[i]) {
m_buttonValues[i] = value & 1; // Update stored button value
QStringList bName = {"Открыть", "Закрыть"};
m_buttons[i]->setText(bName[value & 1]);
qDebug() << "Button" << i << "address:" << address << "value:" << value;
m_buttons[i]->setText(bName[m_buttonValues[i]]);
break;
}
}
@@ -241,9 +227,18 @@ void Mainwindows::createUIElements() {
if (i < m_buttonCount) {
auto* button = new QPushButton(QString("Register %1").arg(m_buttonRegisters[i]), this);
m_buttons.append(button);
m_buttonValues.append(0); // Initialize button values
m_table->setCellWidget(i, 0, button);
connect(button, &QPushButton::clicked, [this, i]() {
writeRegister(i);
m_buttonValues[i] = !m_buttonValues[i]; // Toggle value
QModbusDataUnit writeUnit(QModbusDataUnit::HoldingRegisters, m_buttonRegisters[i], 1);
writeUnit.setValue(0, m_buttonValues[i]);
if (auto *reply = m_modbusClient->sendWriteRequest(writeUnit, 1)) {
if (!reply->isFinished())
connect(reply, &QModbusReply::finished, reply, &QModbusReply::deleteLater);
else
delete reply;
}
});
}