Skip to content

Commit 72bd8e6

Browse files
committed
Add saving DataViewItem values for Client
1 parent b927bca commit 72bd8e6

File tree

7 files changed

+52
-24
lines changed

7 files changed

+52
-24
lines changed

changelog.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,5 @@
3838
* Add Modbus Scanner
3939
* Add new Modbus functions: MASK_WRITE_REGISTER, READ_WRITE_MULTIPLE_REGISTERS
4040
* Improve 'Send Message' dialog window
41-
* Add all encodings suppoted by Qt framework to the 'String' data format
41+
* Add all encodings suppoted by Qt framework to the 'String' data format
42+
* Add saving DataViewItem values for Client

src/client/project/client_builder.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,19 @@ mbCoreProject *mbClientBuilder::toProject(mbCoreDomProject *dom)
110110
setWorkingProjectCore(nullptr);
111111
return project;
112112
}
113+
114+
mbCoreDataViewItem *mbClientBuilder::toDataViewItem(mbCoreDomDataViewItem *dom)
115+
{
116+
mbCoreDataViewItem *item = mbCoreBuilder::toDataViewItem(dom);
117+
item->setValue(dom->settings().value(mbClientDataViewItem::Strings::instance().value));
118+
return item;
119+
}
120+
121+
mbCoreDomDataViewItem *mbClientBuilder::toDomDataViewItem(mbCoreDataViewItem *cfg)
122+
{
123+
mbCoreDomDataViewItem *dom = mbCoreBuilder::toDomDataViewItem(cfg);
124+
MBSETTINGS s = dom->settings();
125+
s[mbClientDataViewItem::Strings::instance().value] = cfg->value();
126+
dom->setSettings(s);
127+
return dom;
128+
}

src/client/project/client_builder.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ class mbClientBuilder : public mbCoreBuilder
7070
mbCoreDomDataViewItem *newDomDataViewItem() const override;
7171

7272
public:
73-
mbCoreProject *toProject(mbCoreDomProject *dom) override;
73+
mbCoreProject *toProject (mbCoreDomProject *dom) override;
74+
mbCoreDataViewItem *toDataViewItem (mbCoreDomDataViewItem *dom) override;
75+
mbCoreDomDataViewItem *toDomDataViewItem(mbCoreDataViewItem *cfg) override;
76+
7477
};
7578

7679
#endif // CLIENT_BUILDER_H

src/client/project/client_dataview.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,16 +169,20 @@ QVariant mbClientDataViewItem::value() const
169169

170170
void mbClientDataViewItem::setValue(const QVariant &value)
171171
{
172-
if (isReadOnly() || !m_device)
173-
return;
174172
m_lock.lockForRead();
175173
QByteArray data = toByteArray(value); // Note: m_format may change
176174
m_lock.unlock();
177175
if (data.length() > 0)
178176
{
179177
if (m_byteOrder == mb::MostSignifiedFirst)
180178
mb::changeByteOrder(data.data(), data.length());
181-
mbClient::global()->writeItemData(handle(), data);
179+
if (mbClient::global()->isRunning())
180+
{
181+
if (!isReadOnly() && m_device)
182+
mbClient::global()->writeItemData(handle(), data);
183+
}
184+
else
185+
update(data, mb::Status_MbStopped, mb::currentTimestamp());
182186
}
183187
}
184188

src/client/runtime/client_runmessage.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,12 @@ void mbClientRunMessageWrite::prepareToSend()
259259

260260
bool mbClientRunMessageReadCoils::getData(uint16_t innerOffset, uint16_t count, void *buff) const
261261
{
262-
return Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize());
262+
return Modbus::StatusIsGood(Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize()));
263263
}
264264

265265
bool mbClientRunMessageReadCoils::setData(uint16_t innerOffset, uint16_t count, const void *buff)
266266
{
267-
return Modbus::writeMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize());
267+
return Modbus::StatusIsGood(Modbus::writeMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize()));
268268
}
269269

270270

@@ -274,12 +274,12 @@ bool mbClientRunMessageReadCoils::setData(uint16_t innerOffset, uint16_t count,
274274

275275
bool mbClientRunMessageReadDiscreteInputs::getData(uint16_t innerOffset, uint16_t count, void *buff) const
276276
{
277-
return Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize());
277+
return Modbus::StatusIsGood(Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize()));
278278
}
279279

280280
bool mbClientRunMessageReadDiscreteInputs::setData(uint16_t innerOffset, uint16_t count, const void *buff)
281281
{
282-
return Modbus::writeMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize());
282+
return Modbus::StatusIsGood(Modbus::writeMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize()));
283283
}
284284

285285

@@ -289,12 +289,12 @@ bool mbClientRunMessageReadDiscreteInputs::setData(uint16_t innerOffset, uint16_
289289

290290
bool mbClientRunMessageReadHoldingRegisters::getData(uint16_t innerOffset, uint16_t count, void *buff) const
291291
{
292-
return Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
292+
return Modbus::StatusIsGood(Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
293293
}
294294

295295
bool mbClientRunMessageReadHoldingRegisters::setData(uint16_t innerOffset, uint16_t count, const void *buff)
296296
{
297-
return Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
297+
return Modbus::StatusIsGood(Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
298298
}
299299

300300

@@ -304,12 +304,12 @@ bool mbClientRunMessageReadHoldingRegisters::setData(uint16_t innerOffset, uint1
304304

305305
bool mbClientRunMessageReadInputRegisters::getData(uint16_t innerOffset, uint16_t count, void *buff) const
306306
{
307-
return Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
307+
return Modbus::StatusIsGood(Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
308308
}
309309

310310
bool mbClientRunMessageReadInputRegisters::setData(uint16_t innerOffset, uint16_t count, const void *buff)
311311
{
312-
return Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
312+
return Modbus::StatusIsGood(Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
313313
}
314314

315315

@@ -356,7 +356,7 @@ bool mbClientRunMessageWriteSingleRegister::setData(uint16_t /*innerOffset*/, ui
356356

357357
bool mbClientRunMessageReadExceptionStatus::getData(uint16_t innerOffset, uint16_t count, void *buff) const
358358
{
359-
return Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize());
359+
return Modbus::StatusIsGood(Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize()));
360360
}
361361

362362
// --------------------------------------------------------------------------------------------------------
@@ -365,12 +365,12 @@ bool mbClientRunMessageReadExceptionStatus::getData(uint16_t innerOffset, uint16
365365

366366
bool mbClientRunMessageWriteMultipleCoils::getData(uint16_t innerOffset, uint16_t count, void *buff) const
367367
{
368-
return Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize());
368+
return Modbus::StatusIsGood(Modbus::readMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize()));
369369
}
370370

371371
bool mbClientRunMessageWriteMultipleCoils::setData(uint16_t innerOffset, uint16_t count, const void *buff)
372372
{
373-
return Modbus::writeMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize());
373+
return Modbus::StatusIsGood(Modbus::writeMemBits(innerOffset, count, buff, m_buff, innerBufferBitSize()));
374374
}
375375

376376

@@ -380,12 +380,12 @@ bool mbClientRunMessageWriteMultipleCoils::setData(uint16_t innerOffset, uint16_
380380

381381
bool mbClientRunMessageWriteMultipleRegisters::getData(uint16_t innerOffset, uint16_t count, void *buff) const
382382
{
383-
return Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
383+
return Modbus::StatusIsGood(Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
384384
}
385385

386386
bool mbClientRunMessageWriteMultipleRegisters::setData(uint16_t innerOffset, uint16_t count, const void *buff)
387387
{
388-
return Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
388+
return Modbus::StatusIsGood(Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
389389
}
390390

391391

@@ -399,12 +399,12 @@ mbClientRunMessageMaskWriteRegister::mbClientRunMessageMaskWriteRegister(uint16_
399399

400400
bool mbClientRunMessageMaskWriteRegister::getData(uint16_t innerOffset, uint16_t count, void *buff) const
401401
{
402-
return Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
402+
return Modbus::StatusIsGood(Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
403403
}
404404

405405
bool mbClientRunMessageMaskWriteRegister::setData(uint16_t innerOffset, uint16_t count, const void *buff)
406406
{
407-
return Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
407+
return Modbus::StatusIsGood(Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
408408
}
409409

410410

@@ -425,10 +425,10 @@ mbClientRunMessageReadWriteMultipleRegisters::mbClientRunMessageReadWriteMultipl
425425

426426
bool mbClientRunMessageReadWriteMultipleRegisters::getData(uint16_t innerOffset, uint16_t count, void *buff) const
427427
{
428-
return Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
428+
return Modbus::StatusIsGood(Modbus::readMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
429429
}
430430

431431
bool mbClientRunMessageReadWriteMultipleRegisters::setData(uint16_t innerOffset, uint16_t count, const void *buff)
432432
{
433-
return Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize());
433+
return Modbus::StatusIsGood(Modbus::writeMemRegs(innerOffset, count, buff, m_buff, innerBufferRegSize()));
434434
}

src/core/project/core_dataview.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ mbCoreDataViewItem::Strings::Strings() :
3737
byteArrayFormat (QStringLiteral("byteArrayFormat")),
3838
byteArraySeparator(QStringLiteral("byteArraySeparator")),
3939
stringLengthType (QStringLiteral("stringLengthType")),
40-
stringEncoding (QStringLiteral("stringEncoding"))
40+
stringEncoding (QStringLiteral("stringEncoding")),
41+
value (QStringLiteral("value"))
4142
{
4243
}
4344

@@ -58,7 +59,8 @@ mbCoreDataViewItem::Defaults::Defaults() :
5859
byteArraySeparator (QStringLiteral(" ")),
5960
isDefaultByteArraySeparator (true),
6061
stringLengthType (mb::ZerroEnded),
61-
stringEncoding (mb::Defaults::instance().stringEncoding)
62+
stringEncoding (mb::Defaults::instance().stringEncoding),
63+
value (QVariant())
6264
{
6365
}
6466

src/core/project/core_dataview.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class MB_EXPORT mbCoreDataViewItem : public QObject
4949
const QString byteArraySeparator;
5050
const QString stringLengthType ;
5151
const QString stringEncoding ;
52+
const QString value ;
5253

5354
Strings();
5455
static const Strings &instance();
@@ -67,6 +68,7 @@ class MB_EXPORT mbCoreDataViewItem : public QObject
6768
const bool isDefaultByteArraySeparator ;
6869
const mb::StringLengthType stringLengthType ;
6970
const mb::StringEncoding stringEncoding ;
71+
const QVariant value ;
7072

7173
Defaults();
7274
static const Defaults &instance();

0 commit comments

Comments
 (0)