3535#include " client_devicerunnable.h"
3636#include " client_runmessage.h"
3737
38- mbClientPortRunnable::mbClientPortRunnable (const Modbus::Settings &settings, const QList<mbClientRunDevice*> &devices, QObject *parent)
38+ mbClientPortRunnable::mbClientPortRunnable (mbClientPort *clientPort, const Modbus::Settings &settings, const QList<mbClientRunDevice*> &devices, QObject *parent)
3939 : QObject(parent)
4040{
41+ m_clientPort = clientPort;
42+ m_stat = m_clientPort->statistic ();
4143 m_devices = devices;
42- m_port = Modbus::createClientPort (settings);
43- // Note: m_port can NOT be nullptr
44- if (m_port ->type () == Modbus::ASC)
44+ m_modbusPort = Modbus::createClientPort (settings);
45+ // Note: m_modbusPort can NOT be nullptr
46+ if (m_modbusPort ->type () == Modbus::ASC)
4547 {
46- m_port ->connect (&ModbusClientPort::signalTx, this , &mbClientPortRunnable::slotAsciiTx);
47- m_port ->connect (&ModbusClientPort::signalRx, this , &mbClientPortRunnable::slotAsciiRx);
48+ m_modbusPort ->connect (&ModbusClientPort::signalTx, this , &mbClientPortRunnable::slotAsciiTx);
49+ m_modbusPort ->connect (&ModbusClientPort::signalRx, this , &mbClientPortRunnable::slotAsciiRx);
4850 }
4951 else
5052 {
51- m_port ->connect (&ModbusClientPort::signalTx, this , &mbClientPortRunnable::slotBytesTx);
52- m_port ->connect (&ModbusClientPort::signalRx, this , &mbClientPortRunnable::slotBytesRx);
53+ m_modbusPort ->connect (&ModbusClientPort::signalTx, this , &mbClientPortRunnable::slotBytesTx);
54+ m_modbusPort ->connect (&ModbusClientPort::signalRx, this , &mbClientPortRunnable::slotBytesRx);
5355 }
5456
5557 Q_FOREACH (mbClientRunDevice *device, m_devices)
5658 {
57- mbClientDeviceRunnable *d = new mbClientDeviceRunnable (device, m_port );
59+ mbClientDeviceRunnable *d = new mbClientDeviceRunnable (device, m_modbusPort );
5860 m_runnables.append (d);
5961 m_hashRunnables.insert (d->modbusClient (), d);
6062 }
@@ -66,7 +68,7 @@ mbClientPortRunnable::~mbClientPortRunnable()
6668 m_hashRunnables.clear ();
6769 qDeleteAll (m_runnables);
6870 m_runnables.clear ();
69- delete m_port ;
71+ delete m_modbusPort ;
7072}
7173
7274void mbClientPortRunnable::run ()
@@ -77,12 +79,12 @@ void mbClientPortRunnable::run()
7779
7880void mbClientPortRunnable::close ()
7981{
80- m_port ->close ();
82+ m_modbusPort ->close ();
8183}
8284
8385void mbClientPortRunnable::slotBytesTx (const Modbus::Char */* source*/ , const uint8_t * buff, uint16_t size)
8486{
85- const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_port ->currentClient ());
87+ const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_modbusPort ->currentClient ());
8688 mbClientDeviceRunnable *r = deviceRunnable (c);
8789 QByteArray bytes (reinterpret_cast <const char *>(buff), size);
8890 if (r)
@@ -92,11 +94,13 @@ void mbClientPortRunnable::slotBytesTx(const Modbus::Char */*source*/, const uin
9294 }
9395 else
9496 mbClient::LogTxRx (name (), QStringLiteral (" Tx: " ) + Modbus::bytesToString (buff, size).data ());
97+ m_stat.countTx ++;
98+ m_clientPort->setStatCountTx (m_stat.countTx );
9599}
96100
97101void mbClientPortRunnable::slotBytesRx (const Modbus::Char */* source*/ , const uint8_t * buff, uint16_t size)
98102{
99- const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_port ->currentClient ());
103+ const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_modbusPort ->currentClient ());
100104 mbClientDeviceRunnable *r = deviceRunnable (c);
101105 QByteArray bytes (reinterpret_cast <const char *>(buff), size);
102106 if (r)
@@ -106,11 +110,13 @@ void mbClientPortRunnable::slotBytesRx(const Modbus::Char */*source*/, const uin
106110 }
107111 else
108112 mbClient::LogTxRx (name (), QStringLiteral (" Rx: " ) + Modbus::bytesToString (buff, size).data ());
113+ m_stat.countRx ++;
114+ m_clientPort->setStatCountRx (m_stat.countRx );
109115}
110116
111117void mbClientPortRunnable::slotAsciiTx (const Modbus::Char */* source*/ , const uint8_t * buff, uint16_t size)
112118{
113- const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_port ->currentClient ());
119+ const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_modbusPort ->currentClient ());
114120 mbClientDeviceRunnable *r = deviceRunnable (c);
115121 QByteArray bytes (reinterpret_cast <const char *>(buff), size);
116122 if (r)
@@ -120,11 +126,13 @@ void mbClientPortRunnable::slotAsciiTx(const Modbus::Char */*source*/, const uin
120126 }
121127 else
122128 mbClient::LogTxRx (name (), QStringLiteral (" Tx: " ) + Modbus::asciiToString (buff, size).data ());
129+ m_stat.countTx ++;
130+ m_clientPort->setStatCountTx (m_stat.countTx );
123131}
124132
125133void mbClientPortRunnable::slotAsciiRx (const Modbus::Char */* source*/ , const uint8_t * buff, uint16_t size)
126134{
127- const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_port ->currentClient ());
135+ const ModbusClient *c = reinterpret_cast <const ModbusClient*>(m_modbusPort ->currentClient ());
128136 mbClientDeviceRunnable *r = deviceRunnable (c);
129137 QByteArray bytes (reinterpret_cast <const char *>(buff), size);
130138 if (r)
@@ -134,4 +142,6 @@ void mbClientPortRunnable::slotAsciiRx(const Modbus::Char */*source*/, const uin
134142 }
135143 else
136144 mbClient::LogTxRx (name (), QStringLiteral (" Rx: " ) + Modbus::asciiToString (buff, size).data ());
145+ m_stat.countRx ++;
146+ m_clientPort->setStatCountRx (m_stat.countRx );
137147}
0 commit comments