UniSet
1.4.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 // ------------------------------------------------------------------------- 00011 class ModbusTCPMaster: 00012 public ModbusClient 00013 { 00014 public: 00015 00016 ModbusTCPMaster(); 00017 virtual ~ModbusTCPMaster(); 00018 00019 void connect( const std::string addr, int port ); 00020 void connect( ost::InetAddress addr, int port ); 00021 void disconnect(); 00022 bool isConnection(); 00023 00024 inline void setForceDisconnect( bool s ) 00025 { 00026 force_disconnect = s; 00027 } 00028 00029 void reconnect(); 00030 void cleanInputStream(); 00031 00032 virtual void cleanupChannel(){ cleanInputStream(); } 00033 00034 protected: 00035 00036 virtual int getNextData( unsigned char* buf, int len ); 00037 virtual void setChannelTimeout( timeout_t msec ); 00038 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ); 00039 virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg, 00040 ModbusRTU::ModbusMessage& reply, timeout_t timeout ); 00041 00042 private: 00043 ost::TCPStream* tcp; 00044 ModbusRTU::ModbusData nTransaction; 00045 std::queue<unsigned char> qrecv; 00046 PassiveTimer ptTimeout; 00047 std::string iaddr; 00048 bool force_disconnect; 00049 }; 00050 // ------------------------------------------------------------------------- 00051 #endif // ModbusTCPMaster_H_ 00052 // -------------------------------------------------------------------------