UniSet  2.6.0
ModbusRTUMaster.h
00001 // -------------------------------------------------------------------------
00002 #ifndef ModbusRTUMaster_H_
00003 #define ModbusRTUMaster_H_
00004 // -------------------------------------------------------------------------
00005 #include <string>
00006 #include "Mutex.h"
00007 #include "Debug.h"
00008 #include "Configuration.h"
00009 #include "PassiveTimer.h"
00010 #include "ComPort.h"
00011 #include "ModbusTypes.h"
00012 #include "ModbusClient.h"
00013 //-----------------------------------------------------------------------------
00014 namespace uniset
00015 {
00016 // -------------------------------------------------------------------------
00020 class ModbusRTUMaster:
00021     public ModbusClient
00022 {
00023     public:
00024 
00025         ModbusRTUMaster( ComPort* com );
00026         ModbusRTUMaster( const std::string& dev, bool use485 = false, bool tr_ctl = false );
00027         virtual ~ModbusRTUMaster();
00028 
00029         virtual void cleanupChannel() override
00030         {
00031             if( port ) port->cleanupChannel();
00032         }
00033 
00034         void setSpeed( ComPort::Speed s );
00035         void setSpeed( const std::string& s );
00036         ComPort::Speed getSpeed();
00037 
00038         void setParity( ComPort::Parity parity );
00039         void setCharacterSize( ComPort::CharacterSize csize );
00040         void setStopBits( ComPort::StopBits sBit );
00041 
00042         int getTimeout();
00043 
00044     protected:
00045 
00052         virtual size_t getNextData( unsigned char* buf, size_t len ) override;
00053 
00055         virtual void setChannelTimeout( timeout_t msec ) override;
00056 
00057         virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, size_t len ) override;
00058 
00060         virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg,
00061                                             ModbusRTU::ModbusMessage& reply, timeout_t timeout ) override;
00062 
00063 
00064         std::string dev;         
00065         ComPort* port;            
00066         bool myport;
00067 
00068     private:
00069 };
00070 // -------------------------------------------------------------------------
00071 } // end of namespace uniset
00072 // -------------------------------------------------------------------------
00073 #endif // ModbusRTUMaster_H_
00074 // -------------------------------------------------------------------------