diff --git a/M3KTE_TERM/m3kte.cpp b/M3KTE_TERM/m3kte.cpp index 720d3bf..41cf804 100644 --- a/M3KTE_TERM/m3kte.cpp +++ b/M3KTE_TERM/m3kte.cpp @@ -720,7 +720,7 @@ void M3KTE::onReadReady() Boards[Adr].ModbusModelCoil->setData(ui->writeValueTable->model()->index(i + unit.startAddress(), 2), Qt::Unchecked, Qt::CheckStateRole); } else if(unit.registerType() == QModbusDataUnit::HoldingRegisters) { Boards[Adr].HR[i + unit.startAddress()] = unit.value(i); - Boards[Adr].ModbusModelHoldingReg->setData(ui->writeValueTable->model()->index(i + unit.startAddress(), 3), QString::number(unit.value(i), 16), Qt::EditRole); + Boards[Adr].ModbusModelHoldingReg->setData(ui->writeValueTable->model()->index(i + unit.startAddress(), 3), QString::number(unit.value(i), 10), Qt::EditRole); } } switch(unit.registerType()) { @@ -969,12 +969,10 @@ void M3KTE::checkAdrChange(QModbusReply *reply, unsigned boardNum) void M3KTE::checkBoards() { QModbusDataUnit unitCheck(QModbusDataUnit::InputRegisters, 85, 1); - // Используем shared pointers вместо ссылок на стековые переменные auto totalActiveBoards = QSharedPointer::create(0); auto confirmedBoards = QSharedPointer::create(0); auto pendingBoards = QSharedPointer>::create(); - for(int i = 0; i < 4; ++i) { if(!Boards[i].isActive) continue; @@ -986,7 +984,6 @@ void M3KTE::checkBoards() return; } pendingBoards->insert(slaveAddress); - connect(reply, &QModbusReply::finished, this, [this, i, reply, slaveAddress, totalActiveBoards, confirmedBoards, pendingBoards]() { if(reply->error() == QModbusDevice::NoError) { @@ -998,7 +995,6 @@ void M3KTE::checkBoards() } pendingBoards->remove(slaveAddress); reply->deleteLater(); - if(pendingBoards->isEmpty()) { if(*confirmedBoards != *totalActiveBoards) { emit errorAtCheckBoards(); @@ -1739,7 +1735,7 @@ void M3KTE::applySettingsFromScan(QModbusReply *reply) } } else if(unit.registerType() == QModbusDataUnit::HoldingRegisters) { Boards[Adr].HR[i + unit.startAddress()] = unit.value(i); - Boards[Adr].ModbusModelHoldingReg->setData(Boards[Adr].ModbusModelHoldingReg->index(i + unit.startAddress(), 3), QString::number(unit.value(i), 16), Qt::EditRole); + Boards[Adr].ModbusModelHoldingReg->setData(Boards[Adr].ModbusModelHoldingReg->index(i + unit.startAddress(), 3), QString::number(unit.value(i), 10), Qt::EditRole); } } } else if(reply->error() == QModbusDevice::ProtocolError) { @@ -1890,7 +1886,8 @@ QModbusReply* M3KTE::readSingleCoil(int boardID, int coilAddress) void M3KTE::selectPositionOnTree(unsigned int index) { ui->boardSelectBox->setCurrentIndex(index/85); - QModelIndex selected = ui->writeValueTable->model()->index(index%85, 0); + int maxReg = 85 - (ui->boardSelectBox->currentIndex()/3*20); + QModelIndex selected = ui->writeValueTable->model()->index(index%maxReg + maxReg*(ui->writeTable->currentIndex()/2), 0); ui->writeValueTable->selectionModel()->select(selected, QItemSelectionModel::ClearAndSelect |QItemSelectionModel::Rows); ui->writeValueTable->scrollTo(selected); } diff --git a/M3KTE_TERM/writeregistermodel.cpp b/M3KTE_TERM/writeregistermodel.cpp index 98103f5..d7e2907 100644 --- a/M3KTE_TERM/writeregistermodel.cpp +++ b/M3KTE_TERM/writeregistermodel.cpp @@ -34,7 +34,7 @@ QVariant WriteRegisterModel::data(const QModelIndex &index, int role) const if (index.column() == CoilsColumn && role == Qt::CheckStateRole) // coils return m_coils.at(index.row()) ? Qt::Checked : Qt::Unchecked; if (index.column() == HoldingColumn && role == Qt::DisplayRole) // holding registers - return QString("0x%1").arg(QString::number(m_holdingRegisters.at(index.row()), 16)); + return QString("%1 В").arg(QString::number((double)((double)m_holdingRegisters.at(index.row())/(double)1000), 'f', 3)); 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 QVariant(); @@ -77,7 +77,7 @@ bool WriteRegisterModel::setData(const QModelIndex &index, const QVariant &value } if (index.column() == HoldingColumn && role == Qt::EditRole) { // holding registers bool result = false; - quint16 newValue = value.toString().toUShort(&result, 16); + quint16 newValue = value.toString().toUShort(&result, 10); if (result) m_holdingRegisters[index.row()] = newValue; emit dataChanged(index, index);