EgtMachKernel 1.6j5 :

- aggiunta gestione versione del DB utensili
- aggiunti 3 parametri agli utensili (coolant, maxAbsorption, minfeed).
This commit is contained in:
Dario Sassi
2015-10-31 19:12:17 +00:00
parent 8482af09c6
commit 05b5c993ac
5 changed files with 75 additions and 14 deletions
+28 -8
View File
@@ -7,7 +7,8 @@
//
//
// Modifiche : 01.06.15 DS Creazione modulo.
//
// 21.10.15 DS Aggiunti VERSION e TOOLSIZE in HEADER (default VERSION = 1000 e TOOLSIZE = 26).
// Ora VERSION = 1001 e TOOLSIZE = 29.
//
//----------------------------------------------------------------------------
@@ -27,7 +28,10 @@ using namespace std ;
//----------------------------------------------------------------------------
const string TF_HEADER = "[HEADER]" ;
const string TF_VERSION = "VERSION" ;
const string TF_TOOLSIZE = "TOOLSIZE" ;
const string TF_TOTAL = "TOTAL" ;
const int TF_CURR_VER = 1001 ;
//----------------------------------------------------------------------------
ToolsMgr::ToolsMgr( void)
@@ -75,12 +79,18 @@ ToolsMgr::Load( const string& sToolsFile)
bool bEnd = false ;
// leggo l'intestazione
int nVersion = 0 ;
int nToolSize = 0 ;
int nTotal = 0 ;
if ( ! LoadHeader( TheScanner, nTotal, bEnd)) {
if ( ! LoadHeader( TheScanner, nVersion, nToolSize, nTotal, bEnd)) {
bOk = false ;
string sOut = "LoadTools : Error on Header" ;
LOG_ERROR( GetEMkLogger(), sOut.c_str())
}
{
string sOut = "LoadTools : FileVer = " + ToString( nVersion) + " CurrVer = " + ToString( TF_CURR_VER) ;
LOG_INFO( GetEMkLogger(), sOut.c_str())
}
// dimensiono maps
const int MIN_BUCKETS = 53 ;
@@ -88,7 +98,7 @@ ToolsMgr::Load( const string& sToolsFile)
// ciclo di lettura degli utensili
do {
if ( ! LoadOneTool( TheScanner, bEnd)) {
if ( ! LoadOneTool( TheScanner, nToolSize, bEnd)) {
bOk = false ;
string sOut = "LoadTools : Error on line " + ToString( TheScanner.GetCurrLineNbr()) ;
LOG_ERROR( GetEMkLogger(), sOut.c_str())
@@ -109,7 +119,7 @@ ToolsMgr::Load( const string& sToolsFile)
//----------------------------------------------------------------------------
bool
ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
ToolsMgr::LoadHeader( Scanner& TheScanner, int& nVersion, int& nToolSize, int& nTotal, bool& bEnd)
{
// leggo la prossima linea
string sLine ;
@@ -124,6 +134,8 @@ ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
bool bOk = true ;
// leggo le linee successive
bEnd = true ;
nVersion = 1000 ;
nToolSize = 26 ;
nTotal = 0 ;
while ( bOk && TheScanner.GetLine( sLine)) {
// se utensile successivo
@@ -136,7 +148,11 @@ ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
string sKey, sVal ;
SplitFirst( sLine, "=", sKey, sVal) ;
// riconosco la chiave
if ( ToUpper( sKey) == TF_TOTAL)
if ( ToUpper( sKey) == TF_VERSION)
bOk = FromString( sVal, nVersion) ;
else if ( ToUpper( sKey) == TF_TOOLSIZE)
bOk = FromString( sVal, nToolSize) ;
else if ( ToUpper( sKey) == TF_TOTAL)
bOk = FromString( sVal, nTotal) ;
else
bOk = false ;
@@ -146,7 +162,7 @@ ToolsMgr::LoadHeader( Scanner& TheScanner, int& nTotal, bool& bEnd)
//----------------------------------------------------------------------------
bool
ToolsMgr::LoadOneTool( Scanner& TheScanner, bool& bEnd)
ToolsMgr::LoadOneTool( Scanner& TheScanner, int nToolSize, bool& bEnd)
{
ToolData tData ;
// leggo la prossima linea
@@ -166,7 +182,7 @@ ToolsMgr::LoadOneTool( Scanner& TheScanner, bool& bEnd)
bEnd = true ;
const int DIM_BS = 64 ;
bitset<DIM_BS> Flag ;
assert( tData.GetSize() <= DIM_BS) ;
assert( nToolSize <= DIM_BS) ;
while ( bOk && TheScanner.GetLine( sLine)) {
// se utensile successivo
if ( sLine.front() == '[' && sLine.back() == ']') {
@@ -182,7 +198,7 @@ ToolsMgr::LoadOneTool( Scanner& TheScanner, bool& bEnd)
Flag.set( nKey) ;
}
// verifico di aver letto tutti i campi
bOk = bOk && ( Flag.count() == tData.GetSize()) ;
bOk = bOk && ( Flag.count() == nToolSize) ;
// salvo i dati dell'utensile
bOk = bOk && m_utData.emplace( tData.m_Uuid, tData).second ;
bOk = bOk && m_suData.emplace( tData.m_sName, tData.m_Uuid).second ;
@@ -255,6 +271,10 @@ ToolsMgr::SaveHeader( Writer& TheWriter) const
string sOut ;
sOut = TF_HEADER ;
bOk = bOk && TheWriter.OutText( sOut) ;
sOut = TF_VERSION + "=" + ToString( TF_CURR_VER) ;
bOk = bOk && TheWriter.OutText( sOut) ;
sOut = TF_TOOLSIZE + "=" + ToString( ToolData::GetSize()) ;
bOk = bOk && TheWriter.OutText( sOut) ;
sOut = TF_TOTAL + "=" + ToString( int( m_utData.size())) ;
bOk = bOk && TheWriter.OutText( sOut) ;
return bOk ;