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