add float32 view

This commit is contained in:
Peter Poetzi
2024-08-18 21:22:37 +02:00
parent cd6d8c4361
commit 2187e4445f
2 changed files with 18 additions and 3 deletions

View File

@ -32,7 +32,7 @@
<item row="2" column="0">
<widget class="QLabel" name="labelFirstRegister">
<property name="text">
<string>First reister:</string>
<string>First register:</string>
</property>
<property name="buddy">
<cstring>spinBoxFirstRegister</cstring>
@ -42,7 +42,7 @@
<item row="2" column="1">
<widget class="QSpinBox" name="spinBoxFirstRegister">
<property name="maximum">
<number>9999</number>
<number>65535</number>
</property>
</widget>
</item>
@ -59,7 +59,7 @@
<item row="3" column="1">
<widget class="QSpinBox" name="spinBoxCount">
<property name="maximum">
<number>9999</number>
<number>65535</number>
</property>
</widget>
</item>

View File

@ -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;