|
UniSet
2.6.0
|
00001 // ------------------------------------------------------------------------- 00002 #ifndef ModbusRTUSlave_H_ 00003 #define ModbusRTUSlave_H_ 00004 // ------------------------------------------------------------------------- 00005 #include <string> 00006 #include <unordered_set> 00007 #include "Mutex.h" 00008 #include "Debug.h" 00009 #include "Configuration.h" 00010 #include "PassiveTimer.h" 00011 #include "ComPort.h" 00012 #include "ModbusTypes.h" 00013 #include "ModbusServer.h" 00014 // ------------------------------------------------------------------------- 00015 namespace uniset 00016 { 00026 class ModbusRTUSlave: 00027 public ModbusServer 00028 { 00029 public: 00030 ModbusRTUSlave( const std::string& dev, bool use485 = false, bool tr_ctl = false ); 00031 ModbusRTUSlave( ComPort* com ); 00032 virtual ~ModbusRTUSlave(); 00033 00034 void setSpeed( ComPort::Speed s ); 00035 void setSpeed( const std::string& s ); 00036 ComPort::Speed getSpeed(); 00037 00038 virtual void cleanupChannel() override 00039 { 00040 if(port) port->cleanupChannel(); 00041 } 00042 00043 virtual void terminate() override; 00044 virtual bool isActive() const override; 00045 00046 protected: 00047 00048 virtual ModbusRTU::mbErrCode realReceive( const std::unordered_set<ModbusRTU::ModbusAddr>& vmbaddr, timeout_t msecTimeout ) override; 00049 00050 // realisation (see ModbusServer.h) 00051 virtual size_t getNextData( unsigned char* buf, int len ) override; 00052 virtual void setChannelTimeout( timeout_t msec ) override; 00053 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override; 00054 00055 std::string dev; 00056 ComPort* port; 00057 bool myport; 00058 00059 private: 00060 00061 }; 00062 // ------------------------------------------------------------------------- 00063 } // end of namespace uniset 00064 // ------------------------------------------------------------------------- 00065 #endif // ModbusRTUSlave_H_ 00066 // -------------------------------------------------------------------------
1.7.6.1