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

View File

@ -6,6 +6,7 @@ enum {
ColumnHex, ColumnHex,
ColumnBinary, ColumnBinary,
ColumnAscii, ColumnAscii,
ColumnFloat32,
ColumnCount ColumnCount
}; };
} }
@ -54,6 +55,17 @@ QVariant ModbusTableModel::data(const QModelIndex &index, int role) const
Q_ASSERT(index.row() < values.size()); Q_ASSERT(index.row() < values.size());
const auto &value = values[index.row()]; 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) 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 ColumnHex: return QString::number(value, 16).rightJustified(4, '0').insert(2, ' ');
case ColumnBinary: return QString::number(value, 2) .rightJustified(16, '0').insert(8, ' '); case ColumnBinary: return QString::number(value, 2) .rightJustified(16, '0').insert(8, ' ');
case ColumnAscii: return QString{QChar{(value&0xFF00)>>8}} + QChar{value&0x00FF}; case ColumnAscii: return QString{QChar{(value&0xFF00)>>8}} + QChar{value&0x00FF};
case ColumnFloat32: return hasNext ? QString::number(valueAsFloat32,'f'): "";
} }
__builtin_unreachable(); __builtin_unreachable();
break; break;
@ -74,6 +87,7 @@ QVariant ModbusTableModel::data(const QModelIndex &index, int role) const
case ColumnHex: case ColumnHex:
case ColumnBinary: case ColumnBinary:
case ColumnAscii: case ColumnAscii:
case ColumnFloat32:
return value; return value;
} }
__builtin_unreachable(); __builtin_unreachable();
@ -101,6 +115,7 @@ QVariant ModbusTableModel::headerData(int section, Qt::Orientation orientation,
case ColumnHex: return tr("Hex"); case ColumnHex: return tr("Hex");
case ColumnBinary: return tr("Binary"); case ColumnBinary: return tr("Binary");
case ColumnAscii: return tr("Ascii"); case ColumnAscii: return tr("Ascii");
case ColumnFloat32: return tr("Float32");
} }
__builtin_unreachable(); __builtin_unreachable();
break; break;