UniSet 2.32.1
ModbusTCPMaster.h
1#ifndef ModbusTCPMaster_H_
2#define ModbusTCPMaster_H_
3// -------------------------------------------------------------------------
4#include <memory>
5#include <string>
6#include <queue>
7#include <Poco/Net/SocketStream.h>
8#include "UTCPStream.h"
9#include "ModbusTypes.h"
10#include "ModbusClient.h"
11// -------------------------------------------------------------------------
12namespace uniset
13{
14 // -------------------------------------------------------------------------
17 public ModbusClient
18 {
19 public:
20
22 virtual ~ModbusTCPMaster();
23
24 bool connect( const std::string& addr, int port, bool closeOldConnection = true ) noexcept;
25 bool connect( const Poco::Net::SocketAddress& addr, int _port, bool closeOldConnection = true ) noexcept;
26
27 void disconnect();
28 void forceDisconnect();
29 bool isConnection() const;
30
31 static bool checkConnection( const std::string& ip, int port, int timeout_msec = 100 );
32
33 void setForceDisconnect( bool s );
34
35 bool reconnect();
36 void cleanInputStream();
37
38 virtual void cleanupChannel() override;
39
40 std::string getAddress() const;
41 int getPort() const;
42
43 void setReadTimeout( timeout_t msec );
44 timeout_t getReadTimeout() const;
45
46 protected:
47
48 virtual size_t getNextData(unsigned char* buf, size_t len ) override;
49 virtual void setChannelTimeout( timeout_t msec ) override;
50 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, size_t len ) override;
51 virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg,
52 ModbusRTU::ModbusMessage& reply, timeout_t timeout ) override;
53
54 private:
55 //ost::TCPStream* tcp;
56 std::shared_ptr<UTCPStream> tcp;
57 ModbusRTU::ModbusData nTransaction;
58 std::queue<unsigned char> qrecv;
59 PassiveTimer ptTimeout;
60 std::string iaddr = { "" };
61 int port = { 0 };
62 bool force_disconnect = { false };
63 int keepAliveTimeout = { 1000 };
64
65 timeout_t readTimeout = { 50 }; // timeout на чтение очередной порции данных
66 };
67 // -------------------------------------------------------------------------
68} // end of namespace uniset
69// -------------------------------------------------------------------------
70#endif // ModbusTCPMaster_H_
71// -------------------------------------------------------------------------
Definition ModbusClient.h:19
Definition ModbusTCPMaster.h:18
virtual ModbusRTU::mbErrCode query(ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage &msg, ModbusRTU::ModbusMessage &reply, timeout_t timeout) override
Definition ModbusTCPMaster.cc:84
virtual size_t getNextData(unsigned char *buf, size_t len) override
Definition ModbusTCPMaster.cc:52
virtual void setChannelTimeout(timeout_t msec) override
Definition ModbusTCPMaster.cc:57
Пассивный таймер
Definition PassiveTimer.h:94
Definition Calibration.h:27
Definition ModbusTypes.h:211