Skip to content

Commit 395c838

Browse files
committed
refactoring an adding "set value to" to dialog force multiple registers
1 parent 89e2404 commit 395c838

14 files changed

Lines changed: 238 additions & 73 deletions

omodsim/controls/bytelisttextedit.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ void ByteListTextEdit::setValue(const QByteArray& value)
4949
{
5050
case DecMode:
5151
{
52-
const auto text = formatUInt8Array(DataDisplayMode::Decimal, value);
52+
const auto text = formatUInt8Array(DataDisplayMode::UInt16, value);
5353
if(text != toPlainText())
54-
setPlainText(formatUInt8Array(DataDisplayMode::Decimal, value));
54+
setPlainText(formatUInt8Array(DataDisplayMode::UInt16, value));
5555
}
5656
break;
5757

omodsim/controls/modbusmessagewidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ModbusMessageWidget::ModbusMessageWidget(QWidget *parent)
1212
: QListWidget(parent)
1313
,_statusClr(Qt::red)
1414
,_byteOrder(ByteOrder::LittleEndian)
15-
,_dataDisplayMode(DataDisplayMode::Decimal)
15+
,_dataDisplayMode(DataDisplayMode::UInt16)
1616
,_showTimestamp(true)
1717
,_mm(nullptr)
1818
{

omodsim/controls/outputwidget.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,11 @@ void OutputListModel::updateData(const QModbusDataUnit& data)
205205
itemData.ValueStr = formatBinaryValue(pointType, value, byteOrder, itemData.Value);
206206
break;
207207

208-
case DataDisplayMode::Decimal:
208+
case DataDisplayMode::UInt16:
209209
itemData.ValueStr = formatUInt16Value(pointType, value, byteOrder, itemData.Value);
210210
break;
211211

212-
case DataDisplayMode::Integer:
212+
case DataDisplayMode::Int16:
213213
itemData.ValueStr = formatInt16Value(pointType, value, byteOrder, itemData.Value);
214214
break;
215215

omodsim/datasimulator.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ void DataSimulator::randomSimulation(DataDisplayMode mode, QModbusDataUnit::Regi
200200
switch(mode)
201201
{
202202
case DataDisplayMode::Binary:
203-
case DataDisplayMode::Integer:
204-
case DataDisplayMode::Decimal:
203+
case DataDisplayMode::Int16:
204+
case DataDisplayMode::UInt16:
205205
case DataDisplayMode::Hex:
206206
value = generateRandom<quint16>(params.Range.from(), params.Range.to() + 1);
207207
break;
@@ -265,12 +265,12 @@ void DataSimulator::incrementSimulation(DataDisplayMode mode, QModbusDataUnit::R
265265
auto&& value = _simulationMap[{ type, addr}].CurrentValue;
266266
switch(mode)
267267
{
268-
case DataDisplayMode::Integer:
268+
case DataDisplayMode::Int16:
269269
value = incrementValue<qint16>(value.toInt(), params.Step, params.Range);
270270
break;
271271

272272
case DataDisplayMode::Binary:
273-
case DataDisplayMode::Decimal:
273+
case DataDisplayMode::UInt16:
274274
case DataDisplayMode::Hex:
275275
value = incrementValue<quint16>(value.toUInt(), params.Step, params.Range);
276276
break;
@@ -329,12 +329,12 @@ void DataSimulator::decrementSimailation(DataDisplayMode mode, QModbusDataUnit::
329329
auto&& value = _simulationMap[{ type, addr}].CurrentValue;
330330
switch(mode)
331331
{
332-
case DataDisplayMode::Integer:
332+
case DataDisplayMode::Int16:
333333
value = decrementValue<qint16>(value.toInt(), params.Step, params.Range);
334334
break;
335335

336336
case DataDisplayMode::Binary:
337-
case DataDisplayMode::Decimal:
337+
case DataDisplayMode::UInt16:
338338
case DataDisplayMode::Hex:
339339
value = decrementValue<quint16>(value.toUInt(), params.Step, params.Range);
340340
break;

omodsim/dialogs/dialogautosimulation.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ DialogAutoSimulation::DialogAutoSimulation(DataDisplayMode mode, ModbusSimulatio
3131
case DataDisplayMode::Binary:
3232
break;
3333

34-
case DataDisplayMode::Decimal:
34+
case DataDisplayMode::UInt16:
3535
ui->lineEditStepValue->setInputRange(1, USHRT_MAX - 1);
3636
ui->lineEditLowLimit->setInputRange(0, USHRT_MAX);
3737
ui->lineEditHighLimit->setInputRange(0, USHRT_MAX);
3838
break;
3939

40-
case DataDisplayMode::Integer:
40+
case DataDisplayMode::Int16:
4141
ui->lineEditStepValue->setInputRange(1, SHRT_MAX - 1);
4242
ui->lineEditLowLimit->setInputRange(SHRT_MIN, SHRT_MAX);
4343
ui->lineEditHighLimit->setInputRange(SHRT_MIN, SHRT_MAX);

omodsim/dialogs/dialogforcemultipleregisters.cpp

Lines changed: 145 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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));

omodsim/dialogs/dialogforcemultipleregisters.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class DialogForceMultipleRegisters : public QDialog
2727
private slots:
2828
void on_pushButton0_clicked();
2929
void on_pushButtonRandom_clicked();
30+
void on_pushButtonValue_clicked();
3031

3132
private:
3233
void updateTableWidget();

0 commit comments

Comments
 (0)