|
UniSet
2.2.1
|
00001 #ifndef ModbusTCPMaster_H_ 00002 #define ModbusTCPMaster_H_ 00003 // ------------------------------------------------------------------------- 00004 #include <memory> 00005 #include <string> 00006 #include <queue> 00007 #include <cc++/socket.h> 00008 #include "ModbusTypes.h" 00009 #include "ModbusClient.h" 00010 #include "UTCPStream.h" 00011 // ------------------------------------------------------------------------- 00013 class ModbusTCPMaster: 00014 public ModbusClient 00015 { 00016 public: 00017 00018 ModbusTCPMaster(); 00019 virtual ~ModbusTCPMaster(); 00020 00021 void connect( const std::string& addr, int port ); 00022 void connect( ost::InetAddress addr, int port ); 00023 void disconnect(); 00024 bool isConnection(); 00025 00026 static bool checkConnection( const std::string& ip, int port, int timeout_msec = 100 ); 00027 00028 inline void setForceDisconnect( bool s ) 00029 { 00030 force_disconnect = s; 00031 } 00032 00033 void reconnect(); 00034 void cleanInputStream(); 00035 00036 virtual void cleanupChannel() override 00037 { 00038 cleanInputStream(); 00039 } 00040 00041 inline std::string getAddress() 00042 { 00043 return iaddr; 00044 } 00045 inline int getPort() 00046 { 00047 return port; 00048 } 00049 00050 protected: 00051 00052 virtual size_t getNextData( unsigned char* buf, int len ) override; 00053 virtual void setChannelTimeout( timeout_t msec ) override; 00054 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override; 00055 virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg, 00056 ModbusRTU::ModbusMessage& reply, timeout_t timeout ) override; 00057 00058 private: 00059 //ost::TCPStream* tcp; 00060 std::shared_ptr<UTCPStream> tcp; 00061 ModbusRTU::ModbusData nTransaction; 00062 std::queue<unsigned char> qrecv; 00063 PassiveTimer ptTimeout; 00064 std::string iaddr = { "" }; 00065 int port = { 0 }; 00066 bool force_disconnect = { false }; 00067 }; 00068 // ------------------------------------------------------------------------- 00069 #endif // ModbusTCPMaster_H_ 00070 // -------------------------------------------------------------------------
1.7.6.1