|
UniSet
2.6.0
|
00001 #ifndef ModbusRTUErrors_H_ 00002 #define ModbusRTUErrors_H_ 00003 // ------------------------------------------------------------------------- 00004 #include <string> 00005 #include <iostream> 00006 #include "Exceptions.h" 00007 // ------------------------------------------------------------------------- 00008 namespace uniset 00009 { 00010 // ------------------------------------------------------------------------- 00011 namespace ModbusRTU 00012 { 00016 enum mbErrCode 00017 { 00018 erNoError = 0, 00019 erUnExpectedPacketType = 1, 00020 erBadDataAddress = 2, 00021 erBadDataValue = 3, 00022 erHardwareError = 4, 00023 erAnknowledge = 5, 00024 erSlaveBusy = 6, 00025 erOperationFailed = 7, 00026 erMemoryParityError = 8, 00028 erInternalErrorCode = 10, 00029 erInvalidFormat = 11, 00030 erBadCheckSum = 12, 00031 erBadReplyNodeAddress = 13, 00032 erTimeOut = 14, 00033 erPacketTooLong = 15, 00034 erSessionClosed = 16 00035 }; 00036 00037 // --------------------------------------------------------------------- 00038 std::string mbErr2Str( mbErrCode e ); 00039 // --------------------------------------------------------------------- 00040 class mbException: 00041 public uniset::Exception 00042 { 00043 public: 00044 mbException(): 00045 uniset::Exception("mbException"), err(ModbusRTU::erNoError) {} 00046 mbException( ModbusRTU::mbErrCode err ): 00047 uniset::Exception(mbErr2Str(err)), err(err) {} 00048 00049 00050 ModbusRTU::mbErrCode err; 00051 00052 friend std::ostream& operator<<(std::ostream& os, mbException& ex ) 00053 { 00054 return os << "(" << ex.err << ") " << mbErr2Str(ex.err); 00055 } 00056 }; 00057 // --------------------------------------------------------------------- 00058 } // end of namespace ModbusRTU 00059 // ------------------------------------------------------------------------- 00060 } // end of namespace uniset 00061 // ------------------------------------------------------------------------- 00062 #endif // ModbusRTUErrors_H_ 00063 // -------------------------------------------------------------------------
1.7.6.1