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++)
0 commit comments