|
UniSet
1.7.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(){ cleanInputStream(); } 00036 00037 protected: 00038 00039 virtual int getNextData( unsigned char* buf, int len ); 00040 virtual void setChannelTimeout( timeout_t msec ); 00041 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ); 00042 virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg, 00043 ModbusRTU::ModbusMessage& reply, timeout_t timeout ); 00044 00045 private: 00046 UTCPStream* tcp; 00047 ModbusRTU::ModbusData nTransaction; 00048 std::queue<unsigned char> qrecv; 00049 PassiveTimer ptTimeout; 00050 std::string iaddr; 00051 int port; 00052 bool force_disconnect; 00053 }; 00054 // ------------------------------------------------------------------------- 00055 #endif // ModbusTCPMaster_H_ 00056 // -------------------------------------------------------------------------
1.7.6.1