@@ -152,6 +152,78 @@ QString formatHexValue(QModbusDataUnit::RegisterType pointType, quint16 value, B
152152 return result.toUpper ();
153153}
154154
155+ // /
156+ // / \brief formatLongValue
157+ // / \param pointType
158+ // / \param value1
159+ // / \param value2
160+ // / \param order
161+ // / \param flag
162+ // / \param outValue
163+ // / \return
164+ // /
165+ QString formatLongValue (QModbusDataUnit::RegisterType pointType, quint16 value1, quint16 value2, ByteOrder order, bool flag, QVariant& outValue)
166+ {
167+ QString result;
168+ switch (pointType)
169+ {
170+ case QModbusDataUnit::Coils:
171+ case QModbusDataUnit::DiscreteInputs:
172+ outValue = value1;
173+ result = QString (" <%1>" ).arg (value1);
174+ break ;
175+ case QModbusDataUnit::HoldingRegisters:
176+ case QModbusDataUnit::InputRegisters:
177+ {
178+ if (flag) break ;
179+
180+ const qint32 value = makeLong (value1, value2, order);
181+ outValue = value;
182+ result = result = QString (" <%1>" ).arg (value, 10 , 10 , QLatin1Char (' ' ));
183+ }
184+ break ;
185+ default :
186+ break ;
187+ }
188+ return result;
189+ }
190+
191+ // /
192+ // / \brief formatUnsignedLongValue
193+ // / \param pointType
194+ // / \param value1
195+ // / \param value2
196+ // / \param order
197+ // / \param flag
198+ // / \param outValue
199+ // / \return
200+ // /
201+ QString formatUnsignedLongValue (QModbusDataUnit::RegisterType pointType, quint16 value1, quint16 value2, ByteOrder order, bool flag, QVariant& outValue)
202+ {
203+ QString result;
204+ switch (pointType)
205+ {
206+ case QModbusDataUnit::Coils:
207+ case QModbusDataUnit::DiscreteInputs:
208+ outValue = value1;
209+ result = QString (" <%1>" ).arg (value1);
210+ break ;
211+ case QModbusDataUnit::HoldingRegisters:
212+ case QModbusDataUnit::InputRegisters:
213+ {
214+ if (flag) break ;
215+
216+ const quint32 value = makeULong (value1, value2, order);
217+ outValue = value;
218+ result = result = QString (" <%1>" ).arg (value, 10 , 10 , QLatin1Char (' 0' ));
219+ }
220+ break ;
221+ default :
222+ break ;
223+ }
224+ return result;
225+ }
226+
155227// /
156228// / \brief formatFloatValue
157229// / \param pointType
@@ -456,6 +528,26 @@ void OutputListModel::updateData(const QModbusDataUnit& data)
456528 itemData.ValueStr = formatDoubleValue (pointType, _lastData.value (i+3 ), _lastData.value (i+2 ), _lastData.value (i+1 ), value,
457529 byteOrder, (i%4 ) || (i+3 >=rowCount ()), itemData.Value );
458530 break ;
531+
532+ case DataDisplayMode::LongInteger:
533+ itemData.ValueStr = formatLongValue (pointType, value, _lastData.value (i+1 ), byteOrder,
534+ (i%2 ) || (i+1 >=rowCount ()), itemData.Value );
535+ break ;
536+
537+ case DataDisplayMode::SwappedLI:
538+ itemData.ValueStr = formatLongValue (pointType, _lastData.value (i+1 ), value, byteOrder,
539+ (i%2 ) || (i+1 >=rowCount ()), itemData.Value );
540+ break ;
541+
542+ case DataDisplayMode::UnsignedLongInteger:
543+ itemData.ValueStr = formatUnsignedLongValue (pointType, value, _lastData.value (i+1 ), byteOrder,
544+ (i%2 ) || (i+1 >=rowCount ()), itemData.Value );
545+ break ;
546+
547+ case DataDisplayMode::SwappedUnsignedLI:
548+ itemData.ValueStr = formatUnsignedLongValue (pointType, _lastData.value (i+1 ), value, byteOrder,
549+ (i%2 ) || (i+1 >=rowCount ()), itemData.Value );
550+ break ;
459551 }
460552 }
461553
@@ -892,6 +984,10 @@ void OutputWidget::on_listView_doubleClicked(const QModelIndex& index)
892984 {
893985 case DataDisplayMode::FloatingPt:
894986 case DataDisplayMode::SwappedFP:
987+ case DataDisplayMode::LongInteger:
988+ case DataDisplayMode::SwappedLI:
989+ case DataDisplayMode::UnsignedLongInteger:
990+ case DataDisplayMode::SwappedUnsignedLI:
895991 if (index.row () % 2 )
896992 idx = _listModel->index (index.row () - 1 );
897993 break ;
0 commit comments