Gestion des nouveaux fichiers avec info du Modbus

This commit is contained in:
JF
2018-02-07 11:46:14 -05:00
parent 15a3f9abaa
commit db917394e0
10 changed files with 713 additions and 456 deletions
+1 -1
View File
@@ -89,7 +89,7 @@ int CDirParserThread::ParseDir(QDir dir, bool KeepData)
void CDirParserThread::SetParsingInfo(QDir dir, QString Filter, bool KeepData)
{
qDebug("DirParserThread parsing info: dir: %s, Filter: ",dir.dirName().toAscii().data(),Filter.toAscii().data());
qDebug("DirParserThread parsing info: dir: %s, Filter: %s",dir.dirName().toAscii().data(),Filter.toAscii().data());
mRootDir = dir;
mKeepData = KeepData;
mFilter = Filter;
+2
View File
@@ -731,6 +731,8 @@ int CDatabaseImporterThread::ArchiveDB()
}
delete m7zipProcess;
int IgnoredFiles = 0;
+51 -11
View File
@@ -514,12 +514,34 @@ void CLogsListPage::LogsTableCellClicked(int row, int column)
Problem = "NON";
}
MeanSpeed = ZT1LogElement->mMeanSpeed;
Summary.sprintf("Passage:\n\nDate: %s\nHeure: %s\nZone Test : ZT1\nTrain : %s\nNombre d'éléments: %d\nProblématique: %s\n\n\nDéclenchements: \n",
ZT1LogElement->mPassageDateTime.toString("yyyy/MM/dd").toAscii().data(),
ZT1LogElement->mPassageDateTime.toString("hh:mm:ss").toAscii().data(),
CZTData::GetTrainTypeString(ZT1LogElement->mTrainType),
ZT1LogElement->mNbElements,
Problem.toAscii().data());
QString TrainType = CZTData::GetModbusTrainTypeString(ZT1LogElement->mFlags.mModbusTrainType);
if(TrainType == "Inconnu")
{
TrainType = CZTData::GetTrainTypeString(ZT1LogElement->mTrainType);
}
QString TrainCompo = "Non Disponible";
if(ZT1LogElement->mFlags.mTrainCompo1 != 0)
{
TrainCompo = QString("%1-%2-%3").arg(ZT1LogElement->mFlags.mTrainCompo1)\
.arg(ZT1LogElement->mFlags.mTrainCompo2)
.arg(ZT1LogElement->mFlags.mTrainCompo3);
}
Summary = QString("Passage:\n\nDate: %1\nHeure: %2\nZone Test : ZT1\nTrain : %3\nCompo: %6\nNombre d'éléments: %4\nProblématique: %5\n\n\nDéclenchements: \n")\
.arg(ZT1LogElement->mPassageDateTime.toString("yyyy/MM/dd"))\
.arg(ZT1LogElement->mPassageDateTime.toString("hh:mm:ss"))\
.arg(TrainType)\
.arg(ZT1LogElement->mNbElements)\
.arg(Problem)
.arg(TrainCompo);
// Summary.sprintf("Passage:\n\nDate: %s\nHeure: %s\nZone Test : ZT1\nTrain : %s\nNombre d'éléments: %d\nProblématique: %s\n\n\nDéclenchements: \n",
// ZT1LogElement->mPassageDateTime.toString("yyyy/MM/dd").toAscii().data(),
// ZT1LogElement->mPassageDateTime.toString("hh:mm:ss").toAscii().data(),
// CZTData::GetTrainTypeString(ZT1LogElement->mTrainType),
// ZT1LogElement->mNbElements,
// Problem.toAscii().data());
if(ZT1LogElement->mZTDetections.size() > 0)
{
@@ -570,11 +592,29 @@ void CLogsListPage::LogsTableCellClicked(int row, int column)
{
Problem = "NON";
}
Summary.sprintf("Statistiques du passage:\n\nDate: %s\nHeure: %s\nZone Test: ZT2\nNombre d'éléments: %d\nProblématique: %s\n\n\n\nDéclenchements: \n",
ZT2LogElement->mPassageDateTime.toString("yyyy/MM/dd").toAscii().data(),
ZT2LogElement->mPassageDateTime.toString("hh:mm:ss").toAscii().data(),
ZT2LogElement->mNbElements,
Problem.toAscii().data());
// Summary.sprintf("Statistiques du passage:\n\nDate: %s\nHeure: %s\nZone Test: ZT2\nNombre d'éléments: %d\nProblématique: %s\n\n\n\nDéclenchements: \n",
// ZT2LogElement->mPassageDateTime.toString("yyyy/MM/dd").toAscii().data(),
// ZT2LogElement->mPassageDateTime.toString("hh:mm:ss").toAscii().data(),
// ZT2LogElement->mNbElements,
// Problem.toAscii().data());
QString TrainType = CZTData::GetModbusTrainTypeString(ZT2LogElement->mFlags.mModbusTrainType);
QString TrainCompo = "Non Disponible";
if(ZT2LogElement->mFlags.mTrainCompo1 != 0)
{
TrainCompo = QString("%1-%2-%3").arg(ZT2LogElement->mFlags.mTrainCompo1)\
.arg(ZT2LogElement->mFlags.mTrainCompo2)
.arg(ZT2LogElement->mFlags.mTrainCompo3);
}
Summary = QString("Passage:\n\nDate: %1\nHeure: %2\nZone Test : ZT2\nTrain : %3\nCompo: %6\nNombre d'éléments: %4\nProblématique: %5\n\n\nDéclenchements: \n")\
.arg(ZT2LogElement->mPassageDateTime.toString("yyyy/MM/dd"))\
.arg(ZT2LogElement->mPassageDateTime.toString("hh:mm:ss"))\
.arg(TrainType)\
.arg(ZT2LogElement->mNbElements)\
.arg(Problem)
.arg(TrainCompo);
if(ZT2LogElement->mZTDetections.size() > 0)
{
+1
View File
@@ -61,6 +61,7 @@ public:
CZT1FlagsData mFlags;
QString mStationName;
bool mFileProtected;
int mFileVersion;
};
//QDataStream &operator<<(QDataStream &out, const CZT1LogElement &source);
//QDataStream &operator>>(QDataStream &in, CZT1LogElement &dest);
+89 -5
View File
@@ -292,9 +292,27 @@ CLogElement* CTrainLogFileMgr::OpenTrainLog(QString LogFilePathName,unsigned int
LogFileVersion = 2;
FileProtected = true;
}
else if(MagicNbr == 0xDEADBEEF+15)
{
LogFileVersion = 3;
qint32 OutilZTFlags[10];
for(int i = 0; i < 10; i++)
{
*InputStream >> OutilZTFlags[i];
}
if(OutilZTFlags[OUTILZT_FILE_PROTECTED_FLAG] == 1)
{
FileProtected = true;
}
else
{
FileProtected = false;
}
}
else
{
qDebug(QString().sprintf("Fichier de passage invalide (Magic number) %s",LogFilePathName.toAscii().data()).toAscii().data());
BinaryLogFile->close();
delete BinaryLogFile;
@@ -331,8 +349,27 @@ CLogElement* CTrainLogFileMgr::OpenTrainLog(QString LogFilePathName,unsigned int
>> PassageLog->mFlags.mPGCalibrationON
>> PassageLog->mFlags.mPGTresholdValue
>> PassageLog->mFlags.mAnalogTracePresent;
PassageLog->mFlags.mTrainCompo1 = 0;
PassageLog->mFlags.mTrainCompo2 = 0;
PassageLog->mFlags.mTrainCompo3 = 0;
PassageLog->mFlags.mModbusTrainType = MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED;
}
else if(LogFileVersion == 2)
{
*InputStream >> PassageLog->mFlags.mExtPGOffset
>> PassageLog->mFlags.mIntPGOffset
>> PassageLog->mFlags.mPGCalibrationON
>> PassageLog->mFlags.mPGTresholdValue
>> PassageLog->mFlags.mAnalogTracePresent
>> PassageLog->mFlags.mIsProblematicPassage;
PassageLog->mFlags.mTrainCompo1 = 0;
PassageLog->mFlags.mTrainCompo2 = 0;
PassageLog->mFlags.mTrainCompo3 = 0;
PassageLog->mFlags.mModbusTrainType = MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED;
}
else if(LogFileVersion == 3)
{
*InputStream >> PassageLog->mFlags;
}
@@ -371,9 +408,6 @@ CLogElement* CTrainLogFileMgr::OpenTrainLog(QString LogFilePathName,unsigned int
#endif
}
BinaryLogFile->close();
delete BinaryLogFile;
delete InputStream;
@@ -400,12 +434,24 @@ CLogElement* CTrainLogFileMgr::OpenTrainLog(QString LogFilePathName,unsigned int
*InputStream >> NbDetections;
*InputStream >> PassageLog->mStationName;
if(LogFileVersion == 2)
{
*InputStream >> PassageLog->mFlags.mIsProblematicPassage;
PassageLog->mFlags.mModbusTrainType = MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED;
PassageLog->mFlags.mTrainCompo1 = 0;
PassageLog->mFlags.mTrainCompo2 = 0;
PassageLog->mFlags.mTrainCompo3 = 0;
}
else if(LogFileVersion == 3)
{
*InputStream >> PassageLog->mFlags;
}
else
{
PassageLog->mFlags.mIsProblematicPassage = 2;
PassageLog->mFlags.mModbusTrainType = MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED;
PassageLog->mFlags.mTrainCompo1 = 0;
PassageLog->mFlags.mTrainCompo2 = 0;
PassageLog->mFlags.mTrainCompo3 = 0;
}
*InputStream >> NbElements;
*InputStream >> DateTime;
@@ -475,7 +521,7 @@ unsigned int CTrainLogFileMgr::SetTrainLogProtected(bool IsProtected, QString Lo
*Stream >> MagicNbr;
BinaryLogFile->seek(0);
if(IsProtected == true)
{
@@ -487,8 +533,27 @@ unsigned int CTrainLogFileMgr::SetTrainLogProtected(bool IsProtected, QString Lo
else if(MagicNbr == 0xDEADBEEF || MagicNbr == 0xDEADBEEF + 1)
{
MagicNbr += 2;
BinaryLogFile->seek(0);
*Stream << MagicNbr;
}
else if(MagicNbr == 0xDEADBEEF + 15)
{
//Use the reserved registers inside the file...
qint32 Flags[10];
for(int i = 0; i < 10; i++)
{
*Stream >> Flags[i];
}
Flags[OUTILZT_FILE_PROTECTED_FLAG] = 1;
BinaryLogFile->seek(0);
*Stream >> MagicNbr; //Dummy read;
for(int i = 0; i < 10; i++)
{
*Stream << Flags[i];
}
}
else
{
//Log File Error
@@ -504,6 +569,7 @@ unsigned int CTrainLogFileMgr::SetTrainLogProtected(bool IsProtected, QString Lo
{
//file is already protected
MagicNbr -= 2;
BinaryLogFile->seek(0);
*Stream << MagicNbr;
}
@@ -511,6 +577,24 @@ unsigned int CTrainLogFileMgr::SetTrainLogProtected(bool IsProtected, QString Lo
{
//file is already unprotected
}
else if(MagicNbr == 0xDEADBEEF + 15)
{
//Use the reserved registers inside the file...
qint32 Flags[10];
for(int i = 0; i < 10; i++)
{
*Stream >> Flags[i];
}
Flags[OUTILZT_FILE_PROTECTED_FLAG] = 0;
BinaryLogFile->seek(0);
*Stream >> MagicNbr; //Dummy read;
for(int i = 0; i < 10; i++)
{
*Stream << Flags[i];
}
}
else
{
//Log File Error
+80 -4
View File
@@ -82,6 +82,42 @@ const char* CZTData::GetTrainTypeString(unsigned int TrainType)
return TrainTypeString[TrainType];
}
const char* CZTData::GetModbusTrainTypeString(unsigned int TrainType)
{
switch(TrainType)
{
case MODBUS_CC_TRAIN_TYPE_MR63:
{
return "MR63";
break;
}
case MODBUS_CC_TRAIN_TYPE_MR73:
{
return "MR73";
break;
}
case MODBUS_CC_TRAIN_TYPE_MPM10:
{
return "MPM10";
break;
}
case MODBUS_CC_TRAIN_TYPE_MAINTENANCE:
{
return "Vehicule Travaux";
break;
}
case MODBUS_CC_TRAIN_TYPE_INVALID_ATS_OFFLINE:
case MODBUS_CC_TRAIN_TYPE_INVALID_SERVICE_REBOOT:
case MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED:
case MODBUS_CC_TRAIN_TYPE_INVALID_SACL_OFFLINE:
default:
{
return "Inconnu";
break;
}
}
}
CZT1LogData::CZT1LogData(CZT1ThreadData *ThreadData):
mZT1ThreadData(ThreadData)
@@ -130,7 +166,19 @@ QDataStream &operator<<(QDataStream &out, const CZT1FlagsData &source)
<< source.mPGTresholdValue
<< source.mAnalogTracePresent
<< source.mIsProblematicPassage
;
<< source.mTrainCompo1
<< source.mTrainCompo2
<< source.mTrainCompo3
<< source.mModbusTrainType
<< source.mUnusedFlag12
<< source.mUnusedFlag13
<< source.mUnusedFlag14
<< source.mUnusedFlag15
<< source.mUnusedFlag16
<< source.mUnusedFlag17
<< source.mUnusedFlag18
<< source.mUnusedFlag19
<< source.mUnusedFlag20;
return out;
}
@@ -143,7 +191,19 @@ QDataStream &operator>>(QDataStream &in, CZT1FlagsData &dest)
>> dest.mPGTresholdValue
>> dest.mAnalogTracePresent
>> dest.mIsProblematicPassage
;
>> dest.mTrainCompo1
>> dest.mTrainCompo2
>> dest.mTrainCompo3
>> dest.mModbusTrainType
>> dest.mUnusedFlag12
>> dest.mUnusedFlag13
>> dest.mUnusedFlag14
>> dest.mUnusedFlag15
>> dest.mUnusedFlag16
>> dest.mUnusedFlag17
>> dest.mUnusedFlag18
>> dest.mUnusedFlag19
>> dest.mUnusedFlag20;
return in;
}
@@ -245,7 +305,15 @@ CZT2LogData::~CZT2LogData()
QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source)
{
out << source.mIsProblematicPassage
;
<< source.mTrainCompo1
<< source.mTrainCompo2
<< source.mTrainCompo3
<< source.mModbusTrainType
<< source.mUnusedFlag6
<< source.mUnusedFlag7
<< source.mUnusedFlag8
<< source.mUnusedFlag9
<< source.mUnusedFlag10;
return out;
}
@@ -253,7 +321,15 @@ QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source)
QDataStream &operator>>(QDataStream &in, CZT2FlagsData &dest)
{
in >> dest.mIsProblematicPassage
;
>> dest.mTrainCompo1
>> dest.mTrainCompo2
>> dest.mTrainCompo3
>> dest.mModbusTrainType
>> dest.mUnusedFlag6
>> dest.mUnusedFlag7
>> dest.mUnusedFlag8
>> dest.mUnusedFlag9
>> dest.mUnusedFlag10;;
return in;
}
+52
View File
@@ -102,6 +102,35 @@ enum eTrainTypeID
TRAIN_TYPE_MAX_ID
};
enum eOutilZTFlagsIndex
{
OUTILZT_FILE_PROTECTED_FLAG,
OUTILSZT_UNUSED_FLAG_2,
OUTILSZT_UNUSED_FLAG_3,
OUTILSZT_UNUSED_FLAG_4,
OUTILSZT_UNUSED_FLAG_5,
OUTILSZT_UNUSED_FLAG_6,
OUTILSZT_UNUSED_FLAG_7,
OUTILSZT_UNUSED_FLAG_8,
OUTILSZT_UNUSED_FLAG_9,
OUTILSZT_UNUSED_FLAG_10
};
enum eModbusCCTrainTypes
{
MODBUS_CC_TRAIN_TYPE_MR63 = 63,
MODBUS_CC_TRAIN_TYPE_MR73 = 73,
MODBUS_CC_TRAIN_TYPE_MPM10 = 10,
MODBUS_CC_TRAIN_TYPE_MAINTENANCE = 0,
MODBUS_CC_TRAIN_TYPE_INVALID_ATS_OFFLINE = 98,
MODBUS_CC_TRAIN_TYPE_INVALID_SERVICE_REBOOT = 97,
MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED = 99,
MODBUS_CC_TRAIN_TYPE_INVALID_SACL_OFFLINE = 96,
MODBUS_CC_TRAIN_TYPE_MAX_VALUE
};
enum eZT1FlagsID
{
ZT1_INT_PG_OFFSET_FLAG_ID,
@@ -138,6 +167,7 @@ public:
static const char *TrainTypeString[];
static const char *GetTrainTypeString(unsigned int TrainType);
static const char *GetModbusTrainTypeString(unsigned int TrainType);
};
@@ -180,6 +210,19 @@ public:
qint32 mPGCalibrationON;
qint32 mAnalogTracePresent;
qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
qint32 mTrainCompo1;
qint32 mTrainCompo2;
qint32 mTrainCompo3;
qint32 mModbusTrainType;
qint32 mUnusedFlag12;
qint32 mUnusedFlag13;
qint32 mUnusedFlag14;
qint32 mUnusedFlag15;
qint32 mUnusedFlag16;
qint32 mUnusedFlag17;
qint32 mUnusedFlag18;
qint32 mUnusedFlag19;
qint32 mUnusedFlag20;
};
QDataStream &operator<<(QDataStream &out, const CZT1FlagsData &source);
@@ -245,6 +288,15 @@ class CZT2FlagsData
{
public:
qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
qint32 mTrainCompo1;
qint32 mTrainCompo2;
qint32 mTrainCompo3;
qint32 mModbusTrainType;
qint32 mUnusedFlag6;
qint32 mUnusedFlag7;
qint32 mUnusedFlag8;
qint32 mUnusedFlag9;
qint32 mUnusedFlag10;
};
QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source);