ModbusMaster/RTUStorage.h
00001
00002 #ifndef _RTUSTORAGE_H_
00003 #define _RTUSTORAGE_H_
00004
00005 #include <ostream>
00006 #include <string>
00007 #include "modbus/ModbusTypes.h"
00008 #include "UniSetTypes.h"
00009
00010 class ModbusRTUMaster;
00011
00012 class RTUStorage
00013 {
00014 public:
00015 RTUStorage( ModbusRTU::ModbusAddr addr );
00016 ~RTUStorage();
00017
00018 void poll( ModbusRTUMaster* mb )
00019 throw(ModbusRTU::mbException);
00020
00021 inline ModbusRTU::ModbusAddr getAddress(){ return addr; }
00022 inline bool ping(){ return pingOK; }
00023
00024 inline void setPollADC( bool set ){ pollADC = set; }
00025 inline void setPollDI( bool set ){ pollDI = set; }
00026 inline void setPollDIO( bool set ){ pollDIO = set; }
00027 inline void setPollUNIO( bool set ){ pollUNIO = set; }
00028
00029 enum RTUJack
00030 {
00031 nUnknown,
00032 nJ1,
00033 nJ2,
00034 nJ5,
00035 nX1,
00036 nX2,
00037 nX4,
00038 nX5
00039 };
00040
00041 static RTUJack s2j( const std::string jack );
00042 static std::string j2s( RTUJack j );
00043
00044 long getInt( RTUJack jack, unsigned short channel, UniversalIO::IOTypes t );
00045 float getFloat( RTUJack jack, unsigned short channel, UniversalIO::IOTypes t );
00046 bool getState( RTUJack jack, unsigned short channel, UniversalIO::IOTypes t );
00047
00048 static ModbusRTU::ModbusData getRegister( RTUJack jack, unsigned short channel, UniversalIO::IOTypes t );
00049
00050
00051 void print();
00052
00053 friend std::ostream& operator<<(std::ostream& os, RTUStorage& m );
00054 friend std::ostream& operator<<(std::ostream& os, RTUStorage* m );
00055
00056 protected:
00057 ModbusRTU::ModbusAddr addr;
00058 bool pingOK;
00059
00060 bool pollADC;
00061 bool pollDI;
00062 bool pollDIO;
00063 bool pollUNIO;
00064
00065
00066 float adc[8];
00067 bool di[16];
00068 bool dio_do[16];
00069 bool dio_di[16];
00070 float dio_ai[16];
00071 float dio_ao[16];
00072 bool unio_do[48];
00073 bool unio_di[48];
00074 float unio_ai[24];
00075 float unio_ao[24];
00076 };
00077
00078 #endif // _RTUSTORAGE_H_
00079