Modbus tool: Create TCP connection pure virtual base class for generic connection handling
parent
90f954f198
commit
a0ed908811
|
|
@ -17,6 +17,7 @@ gcc {
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
modbusdatautils.h \
|
modbusdatautils.h \
|
||||||
|
modbustcpconnection.h \
|
||||||
modbustcpmaster.h \
|
modbustcpmaster.h \
|
||||||
queuedmodbusreply.h
|
queuedmodbusreply.h
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
#ifndef MODBUSTCPCONNECTION_H
|
||||||
|
#define MODBUSTCPCONNECTION_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class ModbusTcpMaster;
|
||||||
|
|
||||||
|
class ModbusTcpConnection : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit ModbusTcpConnection(QObject *parent = nullptr) : QObject{parent} { }
|
||||||
|
virtual ~ModbusTcpConnection() = default;
|
||||||
|
|
||||||
|
virtual ModbusTcpMaster *modbusTcpMaster() const = 0;
|
||||||
|
|
||||||
|
virtual bool reachable() const = 0;
|
||||||
|
virtual bool initializing() const = 0;
|
||||||
|
|
||||||
|
virtual bool initialize() = 0;
|
||||||
|
virtual bool update() = 0;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
virtual bool connectDevice() = 0;
|
||||||
|
virtual void disconnectDevice() = 0;
|
||||||
|
virtual bool reconnectDevice() = 0;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void reachableChanged(bool reachable);
|
||||||
|
void initializationFinished(bool success);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MODBUSTCPCONNECTION_H
|
||||||
|
|
@ -44,10 +44,11 @@ def writeTcpHeaderFile():
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
writeLine(headerFile, '#include <modbusdatautils.h>')
|
writeLine(headerFile, '#include <modbusdatautils.h>')
|
||||||
writeLine(headerFile, '#include <modbustcpmaster.h>')
|
writeLine(headerFile, '#include <modbustcpmaster.h>')
|
||||||
|
writeLine(headerFile, '#include <modbustcpconnection.h>')
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
|
|
||||||
# Begin of class
|
# Begin of class
|
||||||
writeLine(headerFile, 'class %s : public QObject' % className)
|
writeLine(headerFile, 'class %s : public ModbusTcpConnection' % className)
|
||||||
writeLine(headerFile, '{')
|
writeLine(headerFile, '{')
|
||||||
writeLine(headerFile, ' Q_OBJECT')
|
writeLine(headerFile, ' Q_OBJECT')
|
||||||
|
|
||||||
|
|
@ -69,18 +70,18 @@ def writeTcpHeaderFile():
|
||||||
# Constructor
|
# Constructor
|
||||||
writeLine(headerFile, ' explicit %s(const QHostAddress &hostAddress, uint port, quint16 slaveId, QObject *parent = nullptr);' % className)
|
writeLine(headerFile, ' explicit %s(const QHostAddress &hostAddress, uint port, quint16 slaveId, QObject *parent = nullptr);' % className)
|
||||||
writeLine(headerFile, ' explicit %s(ModbusTcpMaster *modbusTcpMaster, quint16 slaveId, QObject *parent = nullptr);' % className)
|
writeLine(headerFile, ' explicit %s(ModbusTcpMaster *modbusTcpMaster, quint16 slaveId, QObject *parent = nullptr);' % className)
|
||||||
writeLine(headerFile, ' ~%s() = default;' % className)
|
writeLine(headerFile, ' ~%s() override = default;' % className)
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
writeLine(headerFile, ' ModbusTcpMaster *modbusTcpMaster() const;')
|
writeLine(headerFile, ' ModbusTcpMaster *modbusTcpMaster() const override; ')
|
||||||
writeLine(headerFile, ' quint16 slaveId() const;')
|
writeLine(headerFile, ' quint16 slaveId() const;')
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
writeLine(headerFile, ' bool reachable() const;')
|
writeLine(headerFile, ' bool reachable() const override;')
|
||||||
writeLine(headerFile, ' bool initializing() const;')
|
writeLine(headerFile, ' bool initializing() const override;')
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
|
|
||||||
# Write init and update method declarations
|
# Write init and update method declarations
|
||||||
writeLine(headerFile, ' virtual bool initialize();')
|
writeLine(headerFile, ' virtual bool initialize() override;')
|
||||||
writeLine(headerFile, ' virtual bool update();')
|
writeLine(headerFile, ' virtual bool update() override;')
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
|
|
||||||
writeLine(headerFile, ' ModbusDataUtils::ByteOrder endianness() const;')
|
writeLine(headerFile, ' ModbusDataUtils::ByteOrder endianness() const;')
|
||||||
|
|
@ -137,18 +138,16 @@ def writeTcpHeaderFile():
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
|
|
||||||
writeLine(headerFile, 'public slots:')
|
writeLine(headerFile, 'public slots:')
|
||||||
writeLine(headerFile, ' bool connectDevice();')
|
writeLine(headerFile, ' bool connectDevice() override;')
|
||||||
writeLine(headerFile, ' void disconnectDevice();')
|
writeLine(headerFile, ' void disconnectDevice() override;')
|
||||||
writeLine(headerFile, ' bool reconnectDevice();')
|
writeLine(headerFile, ' bool reconnectDevice() override;')
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
|
|
||||||
# Write registers value changed signals
|
# Write registers value changed signals
|
||||||
writeLine(headerFile, 'signals:')
|
writeLine(headerFile, 'signals:')
|
||||||
writeLine(headerFile, ' void reachableChanged(bool reachable);')
|
|
||||||
writeLine(headerFile, ' void checkReachabilityFailed();')
|
writeLine(headerFile, ' void checkReachabilityFailed();')
|
||||||
writeLine(headerFile, ' void checkReachableRetriesChanged(uint checkReachableRetries);')
|
writeLine(headerFile, ' void checkReachableRetriesChanged(uint checkReachableRetries);')
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
writeLine(headerFile, ' void initializationFinished(bool success);')
|
|
||||||
writeLine(headerFile, ' void updateFinished();')
|
writeLine(headerFile, ' void updateFinished();')
|
||||||
writeLine(headerFile)
|
writeLine(headerFile)
|
||||||
writeLine(headerFile, ' void endiannessChanged(ModbusDataUtils::ByteOrder endianness);')
|
writeLine(headerFile, ' void endiannessChanged(ModbusDataUtils::ByteOrder endianness);')
|
||||||
|
|
@ -257,18 +256,18 @@ def writeTcpSourceFile():
|
||||||
|
|
||||||
# Constructor
|
# Constructor
|
||||||
writeLine(sourceFile, '%s::%s(const QHostAddress &hostAddress, uint port, quint16 slaveId, QObject *parent) :' % (className, className))
|
writeLine(sourceFile, '%s::%s(const QHostAddress &hostAddress, uint port, quint16 slaveId, QObject *parent) :' % (className, className))
|
||||||
writeLine(sourceFile, ' QObject(parent),')
|
writeLine(sourceFile, ' ModbusTcpConnection{parent},')
|
||||||
writeLine(sourceFile, ' m_modbusTcpMaster(new ModbusTcpMaster(hostAddress, port, this)),')
|
writeLine(sourceFile, ' m_modbusTcpMaster{new ModbusTcpMaster(hostAddress, port, this)},')
|
||||||
writeLine(sourceFile, ' m_slaveId(slaveId)')
|
writeLine(sourceFile, ' m_slaveId{slaveId}')
|
||||||
writeLine(sourceFile, '{')
|
writeLine(sourceFile, '{')
|
||||||
writeLine(sourceFile, ' setupConnection();')
|
writeLine(sourceFile, ' setupConnection();')
|
||||||
writeLine(sourceFile, '}')
|
writeLine(sourceFile, '}')
|
||||||
writeLine(sourceFile)
|
writeLine(sourceFile)
|
||||||
|
|
||||||
writeLine(sourceFile, '%s::%s(ModbusTcpMaster *modbusTcpMaster, quint16 slaveId, QObject *parent) :' % (className, className))
|
writeLine(sourceFile, '%s::%s(ModbusTcpMaster *modbusTcpMaster, quint16 slaveId, QObject *parent) :' % (className, className))
|
||||||
writeLine(sourceFile, ' QObject(parent),')
|
writeLine(sourceFile, ' ModbusTcpConnection{parent},')
|
||||||
writeLine(sourceFile, ' m_modbusTcpMaster(modbusTcpMaster),')
|
writeLine(sourceFile, ' m_modbusTcpMaster{modbusTcpMaster},')
|
||||||
writeLine(sourceFile, ' m_slaveId(slaveId)')
|
writeLine(sourceFile, ' m_slaveId{slaveId}')
|
||||||
writeLine(sourceFile, '{')
|
writeLine(sourceFile, '{')
|
||||||
writeLine(sourceFile, ' setupConnection();')
|
writeLine(sourceFile, ' setupConnection();')
|
||||||
writeLine(sourceFile, '}')
|
writeLine(sourceFile, '}')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue