@@ -27,6 +27,56 @@ DialogForceMultipleRegisters::DialogForceMultipleRegisters(ModbusWriteParams& pa
2727 ui->labelAddress ->setText (QString (tr (" Address: <b>%1</b>" )).arg (formatAddress (type, params.Address , false )));
2828 ui->labelLength ->setText (QString (tr (" Length: <b>%1</b>" )).arg (length, 3 , 10 , QLatin1Char (' 0' )));
2929
30+ switch (_writeParams.DisplayMode )
31+ {
32+ case DataDisplayMode::Hex:
33+ ui->lineEditValue ->setPaddingZeroes (true );
34+ ui->lineEditValue ->setInputMode (NumericLineEdit::HexMode);
35+ ui->lineEditValue ->setInputRange (0 , USHRT_MAX);
36+ break ;
37+
38+ case DataDisplayMode::Int16:
39+ ui->lineEditValue ->setInputMode (NumericLineEdit::Int32Mode);
40+ ui->lineEditValue ->setInputRange (SHRT_MIN, SHRT_MAX);
41+ break ;
42+
43+ case DataDisplayMode::Int32:
44+ case DataDisplayMode::SwappedInt32:
45+ ui->lineEditValue ->setInputMode (NumericLineEdit::Int32Mode);
46+ break ;
47+
48+ case DataDisplayMode::Binary:
49+ case DataDisplayMode::UInt16:
50+ ui->lineEditValue ->setInputMode (NumericLineEdit::UInt32Mode);
51+ ui->lineEditValue ->setInputRange (0 , USHRT_MAX);
52+ break ;
53+
54+ case DataDisplayMode::UInt32:
55+ case DataDisplayMode::SwappedUInt32:
56+ ui->lineEditValue ->setInputMode (NumericLineEdit::UInt32Mode);
57+ break ;
58+
59+ case DataDisplayMode::Int64:
60+ case DataDisplayMode::SwappedInt64:
61+ ui->lineEditValue ->setInputMode (NumericLineEdit::Int64Mode);
62+ break ;
63+
64+ case DataDisplayMode::UInt64:
65+ case DataDisplayMode::SwappedUInt64:
66+ ui->lineEditValue ->setInputMode (NumericLineEdit::UInt64Mode);
67+ break ;
68+
69+ case DataDisplayMode::FloatingPt:
70+ case DataDisplayMode::SwappedFP:
71+ ui->lineEditValue ->setInputMode (NumericLineEdit::FloatMode);
72+ break ;
73+
74+ case DataDisplayMode::DblFloat:
75+ case DataDisplayMode::SwappedDbl:
76+ ui->lineEditValue ->setInputMode (NumericLineEdit::DoubleMode);
77+ break ;
78+ }
79+
3080 _data = params.Value .value <QVector<quint16>>();
3181 if (_data.length () != length) _data.resize (length);
3282
@@ -60,8 +110,8 @@ void DialogForceMultipleRegisters::accept()
60110 {
61111 case DataDisplayMode::Binary:
62112 case DataDisplayMode::Hex:
63- case DataDisplayMode::Decimal :
64- case DataDisplayMode::Integer :
113+ case DataDisplayMode::UInt16 :
114+ case DataDisplayMode::Int16 :
65115 {
66116 auto numEdit = (NumericLineEdit*)ui->tableWidget ->cellWidget (i, j);
67117 _data[idx] = toByteOrderValue (numEdit->value <quint16>(), _writeParams.Order );
@@ -195,11 +245,11 @@ void DialogForceMultipleRegisters::on_pushButtonRandom_clicked()
195245 {
196246 case DataDisplayMode::Binary:
197247 case DataDisplayMode::Hex:
198- case DataDisplayMode::Decimal :
248+ case DataDisplayMode::UInt16 :
199249 _data[i] = QRandomGenerator::global ()->bounded (0 , USHRT_MAX);
200250 break ;
201251
202- case DataDisplayMode::Integer :
252+ case DataDisplayMode::Int16 :
203253 _data[i] = QRandomGenerator::global ()->bounded (SHRT_MIN, SHRT_MAX);
204254 break ;
205255
@@ -215,12 +265,12 @@ void DialogForceMultipleRegisters::on_pushButtonRandom_clicked()
215265
216266 case DataDisplayMode::UInt32:
217267 if (!(i % 2 ) && (i + 1 < _data.size ()))
218- breakUInt32 (QRandomGenerator::global ()->bounded (0U , UINT_MAX), _data[i], _data[i + 1 ], _writeParams.Order );
268+ breakUInt32 (QRandomGenerator::global ()->bounded (0U , UINT_MAX), _data[i], _data[i + 1 ], _writeParams.Order );
219269 break ;
220270
221271 case DataDisplayMode::SwappedUInt32:
222272 if (!(i % 2 ) && (i + 1 < _data.size ()))
223- breakUInt32 (QRandomGenerator::global ()->bounded (0U , UINT_MAX), _data[i + 1 ], _data[i], _writeParams.Order );
273+ breakUInt32 (QRandomGenerator::global ()->bounded (0U , UINT_MAX), _data[i + 1 ], _data[i], _writeParams.Order );
224274 break ;
225275
226276 case DataDisplayMode::FloatingPt:
@@ -246,17 +296,17 @@ void DialogForceMultipleRegisters::on_pushButtonRandom_clicked()
246296 case DataDisplayMode::Int64:
247297 if (!(i % 4 ) && (i + 3 < _data.size ()))
248298 breakInt64 ((qint64)QRandomGenerator::global ()->generate64 (), _data[i], _data[i + 1 ], _data[i + 2 ], _data[i + 3 ], _writeParams.Order );
249- break ;
299+ break ;
250300
251301 case DataDisplayMode::SwappedInt64:
252302 if (!(i % 4 ) && (i + 3 < _data.size ()))
253303 breakInt64 ((qint64)QRandomGenerator::global ()->generate64 (), _data[i + 3 ], _data[i + 2 ], _data[i + 1 ], _data[i], _writeParams.Order );
254- break ;
304+ break ;
255305
256306 case DataDisplayMode::UInt64:
257307 if (!(i % 4 ) && (i + 3 < _data.size ()))
258308 breakUInt64 (QRandomGenerator::global ()->generate64 (), _data[i], _data[i + 1 ], _data[i + 2 ], _data[i + 3 ], _writeParams.Order );
259- break ;
309+ break ;
260310
261311 case DataDisplayMode::SwappedUInt64:
262312 if (!(i % 4 ) && (i + 3 < _data.size ()))
@@ -268,6 +318,90 @@ void DialogForceMultipleRegisters::on_pushButtonRandom_clicked()
268318 updateTableWidget ();
269319}
270320
321+ // /
322+ // / \brief DialogForceMultipleRegisters::on_pushButtonValue_clicked
323+ // /
324+ void DialogForceMultipleRegisters::on_pushButtonValue_clicked ()
325+ {
326+ for (int i = 0 ; i < _data.size (); i++)
327+ {
328+ switch (_writeParams.DisplayMode )
329+ {
330+ case DataDisplayMode::Hex:
331+ case DataDisplayMode::Binary:
332+ case DataDisplayMode::UInt16:
333+ _data[i] = ui->lineEditValue ->value <quint16>();
334+ break ;
335+
336+ case DataDisplayMode::Int16:
337+ _data[i] = ui->lineEditValue ->value <qint16>();
338+ break ;
339+
340+ case DataDisplayMode::Int32:
341+ if (!(i % 2 ) && (i + 1 < _data.size ()))
342+ breakInt32 (ui->lineEditValue ->value <qint32>(), _data[i], _data[i + 1 ], _writeParams.Order );
343+ break ;
344+
345+ case DataDisplayMode::SwappedInt32:
346+ if (!(i % 2 ) && (i + 1 < _data.size ()))
347+ breakInt32 (ui->lineEditValue ->value <qint32>(), _data[i + 1 ], _data[i], _writeParams.Order );
348+ break ;
349+
350+ case DataDisplayMode::UInt32:
351+ if (!(i % 2 ) && (i + 1 < _data.size ()))
352+ breakUInt32 (ui->lineEditValue ->value <quint32>(), _data[i], _data[i + 1 ], _writeParams.Order );
353+ break ;
354+
355+ case DataDisplayMode::SwappedUInt32:
356+ if (!(i % 2 ) && (i + 1 < _data.size ()))
357+ breakUInt32 (ui->lineEditValue ->value <quint32>(), _data[i + 1 ], _data[i], _writeParams.Order );
358+ break ;
359+
360+ case DataDisplayMode::Int64:
361+ if (!(i % 4 ) && (i + 3 < _data.size ()))
362+ breakInt64 (ui->lineEditValue ->value <qint64>(), _data[i], _data[i + 1 ], _data[i + 2 ], _data[i + 3 ], _writeParams.Order );
363+ break ;
364+
365+ case DataDisplayMode::SwappedInt64:
366+ if (!(i % 4 ) && (i + 3 < _data.size ()))
367+ breakInt64 (ui->lineEditValue ->value <qint64>(), _data[i + 3 ], _data[i + 2 ], _data[i + 1 ], _data[i], _writeParams.Order );
368+ break ;
369+
370+ case DataDisplayMode::UInt64:
371+ if (!(i % 4 ) && (i + 3 < _data.size ()))
372+ breakUInt64 (ui->lineEditValue ->value <quint64>(), _data[i], _data[i + 1 ], _data[i + 2 ], _data[i + 3 ], _writeParams.Order );
373+ break ;
374+
375+ case DataDisplayMode::SwappedUInt64:
376+ if (!(i % 4 ) && (i + 3 < _data.size ()))
377+ breakUInt64 (ui->lineEditValue ->value <quint64>(), _data[i + 3 ], _data[i + 2 ], _data[i + 1 ], _data[i], _writeParams.Order );
378+ break ;
379+
380+ case DataDisplayMode::FloatingPt:
381+ if (!(i % 2 ) && (i + 1 < _data.size ()))
382+ breakFloat (ui->lineEditValue ->value <float >(), _data[i], _data[i + 1 ], _writeParams.Order );
383+ break ;
384+
385+ case DataDisplayMode::SwappedFP:
386+ if (!(i % 2 ) && (i + 1 < _data.size ()))
387+ breakFloat (ui->lineEditValue ->value <float >(), _data[i + 1 ], _data[i], _writeParams.Order );
388+ break ;
389+
390+ case DataDisplayMode::DblFloat:
391+ if (!(i % 4 ) && (i + 3 < _data.size ()))
392+ breakDouble (ui->lineEditValue ->value <double >(), _data[i], _data[i + 1 ], _data[i + 2 ], _data[i + 3 ], _writeParams.Order );
393+ break ;
394+
395+ case DataDisplayMode::SwappedDbl:
396+ if (!(i % 4 ) && (i + 3 < _data.size ()))
397+ breakDouble (ui->lineEditValue ->value <double >(), _data[i + 3 ], _data[i + 2 ], _data[i + 1 ], _data[i], _writeParams.Order );
398+ break ;
399+ }
400+ }
401+
402+ updateTableWidget ();
403+ }
404+
271405// /
272406// / \brief DialogForceMultipleRegisters::createNumEdit
273407// / \param idx
@@ -286,13 +420,13 @@ NumericLineEdit* DialogForceMultipleRegisters::createNumEdit(int idx)
286420 numEdit->setValue (toByteOrderValue (_data[idx], _writeParams.Order ));
287421 break ;
288422
289- case DataDisplayMode::Decimal :
423+ case DataDisplayMode::UInt16 :
290424 numEdit = new NumericLineEdit (NumericLineEdit::Int32Mode, ui->tableWidget );
291425 numEdit->setInputRange (0 , USHRT_MAX);
292426 numEdit->setValue (toByteOrderValue (_data[idx], _writeParams.Order ));
293427 break ;
294428
295- case DataDisplayMode::Integer :
429+ case DataDisplayMode::Int16 :
296430 numEdit = new NumericLineEdit (NumericLineEdit::Int32Mode, ui->tableWidget );
297431 numEdit->setInputRange (SHRT_MIN, SHRT_MAX);
298432 numEdit->setValue ((qint16)toByteOrderValue (_data[idx], _writeParams.Order ));
0 commit comments