diff --git a/changevaluesdialog.ui b/changevaluesdialog.ui index 9028d40..5005e73 100644 --- a/changevaluesdialog.ui +++ b/changevaluesdialog.ui @@ -32,7 +32,7 @@ - First reister: + First register: spinBoxFirstRegister @@ -42,7 +42,7 @@ - 9999 + 65535 @@ -59,7 +59,7 @@ - 9999 + 65535 diff --git a/modbustablemodel.cpp b/modbustablemodel.cpp index 8ea7b79..838c1f0 100644 --- a/modbustablemodel.cpp +++ b/modbustablemodel.cpp @@ -6,6 +6,7 @@ enum { ColumnHex, ColumnBinary, ColumnAscii, + ColumnFloat32, ColumnCount }; } @@ -54,6 +55,17 @@ QVariant ModbusTableModel::data(const QModelIndex &index, int role) const Q_ASSERT(index.row() < values.size()); const auto &value = values[index.row()]; + const bool hasNext = index.row() < values.size()-1; + + union { + float valueAsFloat32; + quint16 arr [2]; + }; + if(hasNext){ + arr[1]=value; + arr[0]=values[index.row()+1]; + } + switch (role) { @@ -64,6 +76,7 @@ QVariant ModbusTableModel::data(const QModelIndex &index, int role) const case ColumnHex: return QString::number(value, 16).rightJustified(4, '0').insert(2, ' '); case ColumnBinary: return QString::number(value, 2) .rightJustified(16, '0').insert(8, ' '); case ColumnAscii: return QString{QChar{(value&0xFF00)>>8}} + QChar{value&0x00FF}; + case ColumnFloat32: return hasNext ? QString::number(valueAsFloat32,'f'): ""; } __builtin_unreachable(); break; @@ -74,6 +87,7 @@ QVariant ModbusTableModel::data(const QModelIndex &index, int role) const case ColumnHex: case ColumnBinary: case ColumnAscii: + case ColumnFloat32: return value; } __builtin_unreachable(); @@ -101,6 +115,7 @@ QVariant ModbusTableModel::headerData(int section, Qt::Orientation orientation, case ColumnHex: return tr("Hex"); case ColumnBinary: return tr("Binary"); case ColumnAscii: return tr("Ascii"); + case ColumnFloat32: return tr("Float32"); } __builtin_unreachable(); break;