|
UniSet
2.2.1
|
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 // ------------------------------------------------------------------------- 00023 class ModbusRTUSlave: 00024 public ModbusServer 00025 { 00026 public: 00027 ModbusRTUSlave( const std::string& dev, bool use485 = false, bool tr_ctl = false ); 00028 ModbusRTUSlave( ComPort* com ); 00029 virtual ~ModbusRTUSlave(); 00030 00031 void setSpeed( ComPort::Speed s ); 00032 void setSpeed( const std::string& s ); 00033 ComPort::Speed getSpeed(); 00034 00035 virtual ModbusRTU::mbErrCode receive( const std::unordered_set<ModbusRTU::ModbusAddr>& vmbaddr, timeout_t msecTimeout ) override; 00036 00037 virtual void cleanupChannel() override 00038 { 00039 if(port) port->cleanupChannel(); 00040 } 00041 00042 virtual void terminate() override; 00043 00044 protected: 00045 00046 // realisation (see ModbusServer.h) 00047 virtual int getNextData( unsigned char* buf, int len ) override; 00048 virtual void setChannelTimeout( timeout_t msec ) override; 00049 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override; 00050 00051 std::string dev; 00052 ComPort* port; 00053 bool myport; 00054 00055 private: 00056 00057 }; 00058 // ------------------------------------------------------------------------- 00059 #endif // ModbusRTUSlave_H_ 00060 // -------------------------------------------------------------------------
1.7.6.1