Skip to content

Commit 923c6fa

Browse files
committed
Added displaying and input addresses in hex mode
1 parent 76c66ed commit 923c6fa

18 files changed

Lines changed: 97 additions & 52 deletions

omodsim/dialogs/dialogdisplaydefinition.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ DialogDisplayDefinition::DialogDisplayDefinition(DisplayDefinition dd, QWidget*
1414
, ui(new Ui::DialogDisplayDefinition)
1515
{
1616
ui->setupUi(this);
17+
ui->lineEditPointAddress->setInputMode(dd.HexAddress ? NumericLineEdit::HexMode : NumericLineEdit::Int32Mode);
1718
ui->lineEditPointAddress->setInputRange(ModbusLimits::addressRange(dd.ZeroBasedAddress));
1819
ui->lineEditLength->setInputRange(ModbusLimits::lengthRange());
1920
ui->lineEditSlaveAddress->setInputRange(ModbusLimits::slaveRange());

omodsim/dialogs/dialogforcemultiplecoils.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,22 @@
99
/// \param params
1010
/// \param type
1111
/// \param length
12+
/// \param hexAddress
1213
/// \param parent
1314
///
14-
DialogForceMultipleCoils::DialogForceMultipleCoils(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, QWidget *parent) :
15+
DialogForceMultipleCoils::DialogForceMultipleCoils(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, bool hexAddress, QWidget *parent) :
1516
QDialog(parent)
1617
, ui(new Ui::DialogForceMultipleCoils)
1718
,_writeParams(params)
1819
,_type(type)
20+
,_hexAddress(hexAddress)
1921
{
2022
ui->setupUi(this);
2123
setWindowFlags(Qt::Dialog |
2224
Qt::CustomizeWindowHint |
2325
Qt::WindowTitleHint);
2426

25-
ui->labelAddress->setText(QString(tr("Address: <b>%1</b>")).arg(formatAddress(type, params.Address, false)));
27+
ui->labelAddress->setText(QString(tr("Address: <b>%1</b>")).arg(formatAddress(type, params.Address, _hexAddress)));
2628
ui->labelLength->setText(QString(tr("Length: <b>%1</b>")).arg(length, 3, 10, QLatin1Char('0')));
2729

2830
_data = params.Value.value<QVector<quint16>>();
@@ -111,8 +113,8 @@ void DialogForceMultipleCoils::updateTableWidget()
111113

112114
for(int i = 0; i < ui->tableWidget->rowCount(); i++)
113115
{
114-
const auto addressFrom = formatAddress(_type, _writeParams.Address + i * columns, false);
115-
const auto addressTo = formatAddress(_type, _writeParams.Address + qMin(length - 1, (i + 1) * columns - 1), false);
116+
const auto addressFrom = formatAddress(_type, _writeParams.Address + i * columns, _hexAddress);
117+
const auto addressTo = formatAddress(_type, _writeParams.Address + qMin(length - 1, (i + 1) * columns - 1), _hexAddress);
116118
ui->tableWidget->setVerticalHeaderItem(i, new QTableWidgetItem(QString("%1-%2").arg(addressFrom, addressTo)));
117119

118120
for(int j = 0; j < columns; j++)
@@ -123,7 +125,7 @@ void DialogForceMultipleCoils::updateTableWidget()
123125
auto item = new QTableWidgetItem(QString::number(_data[idx]));
124126
item->setData(Qt::UserRole, idx);
125127
item->setTextAlignment(Qt::AlignCenter);
126-
item->setToolTip(formatAddress(_type,_writeParams.Address + idx, false));
128+
item->setToolTip(formatAddress(_type,_writeParams.Address + idx, _hexAddress));
127129
ui->tableWidget->setItem(i, j, item);
128130
}
129131
else

omodsim/dialogs/dialogforcemultiplecoils.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class DialogForceMultipleCoils : public QDialog
1515
Q_OBJECT
1616

1717
public:
18-
explicit DialogForceMultipleCoils(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, QWidget *parent = nullptr);
18+
explicit DialogForceMultipleCoils(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, bool hexAddress, QWidget *parent = nullptr);
1919
~DialogForceMultipleCoils();
2020

2121
void accept() override;
@@ -33,6 +33,7 @@ private slots:
3333
QVector<quint16> _data;
3434
ModbusWriteParams& _writeParams;
3535
QModbusDataUnit::RegisterType _type;
36+
bool _hexAddress;
3637
};
3738

3839
#endif // DIALOGFORCEMULTIPLECOILS_H

omodsim/dialogs/dialogforcemultipleregisters.cpp

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@
1111
/// \param params
1212
/// \param type
1313
/// \param length
14+
/// \param hexAddress
1415
/// \param parent
1516
///
16-
DialogForceMultipleRegisters::DialogForceMultipleRegisters(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, QWidget *parent) :
17+
DialogForceMultipleRegisters::DialogForceMultipleRegisters(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, bool hexAddress, QWidget *parent) :
1718
QDialog(parent)
1819
, ui(new Ui::DialogForceMultipleRegisters)
1920
,_writeParams(params)
2021
,_type(type)
22+
,_hexAddress(hexAddress)
2123
{
2224
ui->setupUi(this);
2325
setWindowFlags(Qt::Dialog |
2426
Qt::CustomizeWindowHint |
2527
Qt::WindowTitleHint);
2628

27-
ui->labelAddress->setText(QString(tr("Address: <b>%1</b>")).arg(formatAddress(type, params.Address, false)));
29+
ui->labelAddress->setText(QString(tr("Address: <b>%1</b>")).arg(formatAddress(type, params.Address, _hexAddress)));
2830
ui->labelLength->setText(QString(tr("Length: <b>%1</b>")).arg(length, 3, 10, QLatin1Char('0')));
2931

3032
switch(_writeParams.DisplayMode)
@@ -33,7 +35,13 @@ DialogForceMultipleRegisters::DialogForceMultipleRegisters(ModbusWriteParams& pa
3335
ui->lineEditValue->setPaddingZeroes(true);
3436
ui->lineEditValue->setInputMode(NumericLineEdit::HexMode);
3537
ui->lineEditValue->setInputRange(0, USHRT_MAX);
36-
break;
38+
break;
39+
40+
case DataDisplayMode::Ansi:
41+
ui->lineEditValue->setInputMode(NumericLineEdit::AnsiMode);
42+
ui->lineEditValue->setCodepage(params.Codepage);
43+
ui->lineEditValue->setInputRange(0, USHRT_MAX);
44+
break;
3745

3846
case DataDisplayMode::Int16:
3947
ui->lineEditValue->setInputMode(NumericLineEdit::Int32Mode);
@@ -110,6 +118,7 @@ void DialogForceMultipleRegisters::accept()
110118
{
111119
case DataDisplayMode::Binary:
112120
case DataDisplayMode::Hex:
121+
case DataDisplayMode::Ansi:
113122
case DataDisplayMode::UInt16:
114123
case DataDisplayMode::Int16:
115124
{
@@ -245,6 +254,7 @@ void DialogForceMultipleRegisters::on_pushButtonRandom_clicked()
245254
{
246255
case DataDisplayMode::Binary:
247256
case DataDisplayMode::Hex:
257+
case DataDisplayMode::Ansi:
248258
case DataDisplayMode::UInt16:
249259
_data[i] = QRandomGenerator::global()->bounded(0, USHRT_MAX);
250260
break;
@@ -328,6 +338,7 @@ void DialogForceMultipleRegisters::on_pushButtonValue_clicked()
328338
switch(_writeParams.DisplayMode)
329339
{
330340
case DataDisplayMode::Hex:
341+
case DataDisplayMode::Ansi:
331342
case DataDisplayMode::Binary:
332343
case DataDisplayMode::UInt16:
333344
_data[i] = ui->lineEditValue->value<quint16>();
@@ -420,6 +431,13 @@ NumericLineEdit* DialogForceMultipleRegisters::createNumEdit(int idx)
420431
numEdit->setValue(toByteOrderValue(_data[idx], _writeParams.Order));
421432
break;
422433

434+
case DataDisplayMode::Ansi:
435+
numEdit = new NumericLineEdit(NumericLineEdit::AnsiMode, ui->tableWidget);
436+
numEdit->setInputRange(0, USHRT_MAX);
437+
numEdit->setCodepage(_writeParams.Codepage);
438+
numEdit->setValue(toByteOrderValue(_data[idx], _writeParams.Order));
439+
break;
440+
423441
case DataDisplayMode::UInt16:
424442
numEdit = new NumericLineEdit(NumericLineEdit::Int32Mode, ui->tableWidget);
425443
numEdit->setInputRange(0, USHRT_MAX);
@@ -575,8 +593,8 @@ void DialogForceMultipleRegisters::updateTableWidget()
575593

576594
for(int i = 0; i < ui->tableWidget->rowCount(); i++)
577595
{
578-
const auto addressFrom = formatAddress(QModbusDataUnit::HoldingRegisters, _writeParams.Address + i * columns, _hexView);
579-
const auto addressTo = formatAddress(QModbusDataUnit::HoldingRegisters, _writeParams.Address + qMin(length - 1, (i + 1) * columns - 1), _hexView);
596+
const auto addressFrom = formatAddress(QModbusDataUnit::HoldingRegisters, _writeParams.Address + i * columns, _hexAddress);
597+
const auto addressTo = formatAddress(QModbusDataUnit::HoldingRegisters, _writeParams.Address + qMin(length - 1, (i + 1) * columns - 1), _hexAddress);
580598
ui->tableWidget->setVerticalHeaderItem(i, new QTableWidgetItem(QString("%1-%2").arg(addressFrom, addressTo)));
581599

582600
for(int j = 0; j < columns; j++)

omodsim/dialogs/dialogforcemultipleregisters.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class DialogForceMultipleRegisters : public QDialog
1919
Q_OBJECT
2020

2121
public:
22-
explicit DialogForceMultipleRegisters(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, QWidget *parent = nullptr);
22+
explicit DialogForceMultipleRegisters(ModbusWriteParams& params, QModbusDataUnit::RegisterType type, int length, bool hexAddress, QWidget *parent = nullptr);
2323
~DialogForceMultipleRegisters();
2424

2525
void accept() override;
@@ -39,7 +39,7 @@ private slots:
3939
QVector<quint16> _data;
4040
ModbusWriteParams& _writeParams;
4141
QModbusDataUnit::RegisterType _type;
42-
bool _hexView = false;
42+
bool _hexAddress = false;
4343
};
4444

4545
#endif // DIALOGFORCEMULTIPLEREGISTERS_H

omodsim/dialogs/dialogsetuppresetdata.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@
66
/// \brief DialogSetupPresetData::DialogSetupPresetData
77
/// \param params
88
/// \param pointType
9+
/// \param hexAddress
910
/// \param parent
1011
///
11-
DialogSetupPresetData::DialogSetupPresetData(SetupPresetParams& params, QModbusDataUnit::RegisterType pointType, QWidget *parent) :
12+
DialogSetupPresetData::DialogSetupPresetData(SetupPresetParams& params, QModbusDataUnit::RegisterType pointType, bool hexAddress, QWidget *parent) :
1213
QFixedSizeDialog(parent)
1314
, ui(new Ui::DialogSetupPresetData)
1415
,_params(params)
1516
{
1617
ui->setupUi(this);
1718
ui->lineEditAddress->setInputRange(ModbusLimits::addressRange(params.ZeroBasedAddress));
19+
ui->lineEditAddress->setInputMode(hexAddress ? NumericLineEdit::HexMode : NumericLineEdit::Int32Mode);
1820
ui->lineEditNumberOfPoints->setInputRange(ModbusLimits::lengthRange());
1921
ui->lineEditAddress->setValue(params.PointAddress);
2022
ui->lineEditNumberOfPoints->setValue(params.Length);

omodsim/dialogs/dialogsetuppresetdata.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class DialogSetupPresetData : public QFixedSizeDialog
2323
Q_OBJECT
2424

2525
public:
26-
explicit DialogSetupPresetData(SetupPresetParams& params, QModbusDataUnit::RegisterType pointType, QWidget *parent = nullptr);
26+
explicit DialogSetupPresetData(SetupPresetParams& params, QModbusDataUnit::RegisterType pointType, bool hexAddress, QWidget *parent = nullptr);
2727
~DialogSetupPresetData();
2828

2929
void accept() override;

omodsim/dialogs/dialogwritecoilregister.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,17 @@
77
/// \brief DialogWriteCoilRegister::DialogWriteCoilRegister
88
/// \param writeParams
99
/// \param simParams
10+
/// \param hexAddress
1011
/// \param parent
1112
///
12-
DialogWriteCoilRegister::DialogWriteCoilRegister(ModbusWriteParams& writeParams, ModbusSimulationParams& simParams, QWidget *parent)
13+
DialogWriteCoilRegister::DialogWriteCoilRegister(ModbusWriteParams& writeParams, ModbusSimulationParams& simParams, bool hexAddress, QWidget *parent)
1314
: QFixedSizeDialog(parent)
1415
, ui(new Ui::DialogWriteCoilRegister)
1516
,_writeParams(writeParams)
1617
,_simParams(simParams)
1718
{
1819
ui->setupUi(this);
20+
ui->lineEditAddress->setInputMode(hexAddress ? NumericLineEdit::HexMode : NumericLineEdit::Int32Mode);
1921
ui->lineEditAddress->setInputRange(ModbusLimits::addressRange(writeParams.ZeroBasedAddress));
2022
ui->lineEditAddress->setValue(_writeParams.Address);
2123
ui->radioButtonOn->setChecked(_writeParams.Value.toBool());

omodsim/dialogs/dialogwritecoilregister.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class DialogWriteCoilRegister : public QFixedSizeDialog
1717
Q_OBJECT
1818

1919
public:
20-
explicit DialogWriteCoilRegister(ModbusWriteParams& writeParams, ModbusSimulationParams& simParams, QWidget *parent = nullptr);
20+
explicit DialogWriteCoilRegister(ModbusWriteParams& writeParams, ModbusSimulationParams& simParams, bool hexAddress, QWidget *parent = nullptr);
2121
~DialogWriteCoilRegister();
2222

2323
void accept() override;

omodsim/dialogs/dialogwriteholdingregister.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,19 @@
66

77
///
88
/// \brief DialogWriteHoldingRegister::DialogWriteHoldingRegister
9-
/// \param params
10-
/// \param mode
9+
/// \param writeParams
10+
/// \param simParams
11+
/// \param hexAddress
1112
/// \param parent
1213
///
13-
DialogWriteHoldingRegister::DialogWriteHoldingRegister(ModbusWriteParams& writeParams, ModbusSimulationParams& simParams, QWidget* parent)
14+
DialogWriteHoldingRegister::DialogWriteHoldingRegister(ModbusWriteParams& writeParams, ModbusSimulationParams& simParams, bool hexAddress, QWidget* parent)
1415
: QFixedSizeDialog(parent)
1516
, ui(new Ui::DialogWriteHoldingRegister)
1617
,_writeParams(writeParams)
1718
,_simParams(simParams)
1819
{
1920
ui->setupUi(this);
21+
ui->lineEditAddress->setInputMode(hexAddress ? NumericLineEdit::HexMode : NumericLineEdit::Int32Mode);
2022
ui->lineEditAddress->setInputRange(ModbusLimits::addressRange(writeParams.ZeroBasedAddress));
2123
ui->lineEditAddress->setValue(_writeParams.Address);
2224

0 commit comments

Comments
 (0)