UniSet  2.2.1
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 // -------------------------------------------------------------------------
00017 class ModbusRTUMaster:
00018     public ModbusClient
00019 {
00020     public:
00021 
00022         ModbusRTUMaster( ComPort* com );
00023         ModbusRTUMaster( const std::string& dev, bool use485 = false, bool tr_ctl = false );
00024         virtual ~ModbusRTUMaster();
00025 
00026         virtual void cleanupChannel() override
00027         {
00028             if( port ) port->cleanupChannel();
00029         }
00030 
00031         void setSpeed( ComPort::Speed s );
00032         void setSpeed( const std::string& s );
00033         ComPort::Speed getSpeed();
00034 
00035         void setParity( ComPort::Parity parity );
00036         void setCharacterSize( ComPort::CharacterSize csize );
00037         void setStopBits( ComPort::StopBits sBit );
00038 
00039         int getTimeout();
00040 
00041     protected:
00042 
00049         virtual size_t getNextData( unsigned char* buf, int len ) override;
00050 
00052         virtual void setChannelTimeout( timeout_t msec ) override;
00053 
00054         virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override;
00055 
00057         virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg,
00058                                             ModbusRTU::ModbusMessage& reply, timeout_t timeout ) override;
00059 
00060 
00061         std::string dev;         
00062         ComPort* port;            
00063         bool myport;
00064 
00065     private:
00066 };
00067 // -------------------------------------------------------------------------
00068 #endif // ModbusRTUMaster_H_
00069 // -------------------------------------------------------------------------