Commit 1fabb89d authored by Pavel Vainerman's avatar Pavel Vainerman

(MTR): добавил коды ошибок (close eterbug #8659)

parent 242176c1
...@@ -89,8 +89,17 @@ namespace MTR ...@@ -89,8 +89,17 @@ namespace MTR
ComPort::Parity get_parity( ModbusRTU::ModbusData data ); ComPort::Parity get_parity( ModbusRTU::ModbusData data );
ComPort::Speed get_speed( ModbusRTU::ModbusData data ); ComPort::Speed get_speed( ModbusRTU::ModbusData data );
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
enum MTRError
{
mtrNoError,
mtrBadDeviceType,
mtrDontReadConfile,
mtrSendParamFailed,
mtrUnknownError
};
std::ostream& operator<<(std::ostream& os, MTRError& e );
// Настройка из конф. файла // Настройка из конф. файла
bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr, MTRError update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr addr,
const std::string mtrconfile, int verbose=0 ); const std::string mtrconfile, int verbose=0 );
// --------------------------- // ---------------------------
// вспомогательные функции и типы данных // вспомогательные функции и типы данных
...@@ -99,7 +108,6 @@ namespace MTR ...@@ -99,7 +108,6 @@ namespace MTR
const int attempts = 3; // const int attempts = 3; //
static const ModbusRTU::ModbusData skip[] = {48, 49, 59}; // registers which should not write static const ModbusRTU::ModbusData skip[] = {48, 49, 59}; // registers which should not write
bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr, int verb ); bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr, int verb );
bool read_param( const std::string str, std::string& str1, std::string& str2 ); bool read_param( const std::string str, std::string& str1, std::string& str2 );
DataMap read_confile( const std::string f ); DataMap read_confile( const std::string f );
......
...@@ -435,27 +435,48 @@ bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr, ...@@ -435,27 +435,48 @@ bool send_param( ModbusRTUMaster* mb, DataMap& dmap, ModbusRTU::ModbusAddr addr,
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
bool update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr slaveaddr, MTR::MTRError update_configuration( ModbusRTUMaster* mb, ModbusRTU::ModbusAddr slaveaddr,
const std::string mtrconfile, int verb ) const std::string mtrconfile, int verb )
{ {
std::string m = MTR::getModelNumber(mb, slaveaddr); std::string m = MTR::getModelNumber(mb, slaveaddr);
if( m != "MTR315Transducer" ) if( m != "MTR315Transducer" )
{ {
cerr << "(mtr-setup): model number != 'MTR315Transducer' (read: " << m << ")" << endl; cerr << "(mtr-setup): model number != 'MTR315Transducer' (read: " << m << ")" << endl;
return false; return mtrBadDeviceType;
} }
DataMap dmap = MTR::read_confile(mtrconfile); DataMap dmap = MTR::read_confile(mtrconfile);
if( dmap.empty() ) if( dmap.empty() )
{ {
cerr << "(mtr-setup): error read confile=" << mtrconfile << endl; cerr << "(mtr-setup): error read confile=" << mtrconfile << endl;
return false; return mtrDontReadConfile;
} }
if( send_param(mb,dmap,slaveaddr,verb) ) return send_param(mb,dmap,slaveaddr,verb) ? mtrNoError : mtrSendParamFailed;
return true; }
// ------------------------------------------------------------------------------------------
std::ostream& operator<<(std::ostream& os, MTR::MTRError& e )
{
switch(e)
{
case mtrNoError:
os << "mtrNoError";
break;
case mtrBadDeviceType:
os << "mtrBadDeviceType";
break;
case mtrDontReadConfile:
os << "mtrDontReadConfile";
break;
case mtrSendParamFailed:
os << "mtrSendParamFailed";
break;
default:
os << "Unknown error";
break;
}
return false; return os;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
std::ostream& operator<<(std::ostream& os, MTR::T1& t ) std::ostream& operator<<(std::ostream& os, MTR::T1& t )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment