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(){ if( port ) port->cleanupChannel(); }
00027
00028 void setSpeed( ComPort::Speed s );
00029 void setSpeed( const std::string s );
00030 ComPort::Speed getSpeed();
00031
00032 void setParity( ComPort::Parity parity );
00033 void setCharacterSize( ComPort::CharacterSize csize );
00034 void setStopBits( ComPort::StopBits sBit );
00035
00036 int getTimeout();
00037
00038 protected:
00039
00046 virtual int getNextData( unsigned char* buf, int len );
00047
00049 virtual void setChannelTimeout( timeout_t msec );
00050
00051 virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len );
00052
00054 virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg,
00055 ModbusRTU::ModbusMessage& reply, timeout_t timeout );
00056
00057
00058 std::string dev;
00059 ComPort* port;
00060 bool myport;
00061
00062 private:
00063 };
00064
00065 #endif // ModbusRTUMaster_H_
00066