|
UniSet
1.7.0
|
00001 #ifndef UModbus_H_ 00002 #define UModbus_H_ 00003 // -------------------------------------------------------------------------- 00004 #include <Configuration.h> 00005 #include <UniversalInterface.h> 00006 #include <modbus/ModbusTCPMaster.h> 00007 #include <modbus/ModbusTypes.h> 00008 #include <extensions/VTypes.h> 00009 #include <Debug.h> 00010 #include "UTypes.h" 00011 #include "UExceptions.h" 00012 // -------------------------------------------------------------------------- 00013 class UModbus 00014 { 00015 public: 00016 // UModbus( int argc, char** argv )throw(UException); 00017 // UModbus( UTypes::Params* p )throw(UException); 00018 UModbus(); 00019 ~UModbus(); 00020 00021 inline const char* getUIType(){ return "modbus"; } 00022 00023 inline bool isWriteFunction( int mbfunc ){ return ModbusRTU::isWriteFunction((ModbusRTU::SlaveFunctionCode)mbfunc); } 00024 00025 // выставление паметров связи, без установления соединения (!) 00026 void prepare( const char* ip, int port )throw(UException); 00027 00028 void connect( const char* ip, int port )throw(UException); 00029 inline int conn_port(){ return port; } 00030 inline std::string conn_ip(){ return ip; } 00031 inline bool isConnection(){ return (mb && mb->isConnection()); } 00032 00033 inline void setTimeout( int msec ){ tout_msec = msec; } 00034 00040 long mbread( int addr, int mbreg, int mbfunc, 00041 const char* vtype, int nbit=-1, 00042 const char* ip=0, int port=-1 )throw(UException); 00043 00044 long getWord( int addr, int mbreg, int mbfunc=0x4 )throw(UException); 00045 long getByte( int addr, int mbreg, int mbfunc=0x4 )throw(UException); 00046 bool getBit( int addr, int mbreg, int mbfunc=0x2 )throw(UException); 00047 00053 void mbwrite( int addr, int mbreg, int val, int mbfunc, const char* ip=0, int port=-1 )throw(UException); 00054 00055 protected: 00056 long data2value( VTypes::VType vt, ModbusRTU::ModbusData* data ); 00057 00058 private: 00059 // DebugStream dlog; 00060 ModbusTCPMaster* mb; 00061 int port; 00062 string ip; 00063 int tout_msec; 00064 }; 00065 //--------------------------------------------------------------------------- 00066 #endif 00067 //---------------------------------------------------------------------------
1.7.6.1