Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

450 wiersze
11 KiB

  1. /*******************************************************************************
  2. * *
  3. * Société de Transports de Montréal. *
  4. * 2012 *
  5. * *
  6. * Projet Zones Tests *
  7. * *
  8. * *
  9. * *
  10. *******************************************************************************/
  11. /*
  12. Description:
  13. Classe fourre-tout qui contient les différentes structures données utilisées
  14. un peu partout dans le programme.
  15. */
  16. /* ************************************************************************** */
  17. /* Revision:
  18. ### YYYMMDD JFM
  19. Verision d'origine.
  20. ### YYYYMMDD Description du besoin ou du bug
  21. Description du changement.
  22. */
  23. /* ************************************************************************** */
  24. #include "ZTData.h"
  25. const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10"};
  26. CZTData::CZTData()
  27. {
  28. }
  29. const char * CZTData::ErrorString[] = {"Erreur de comptage S1-S2",
  30. "Déclenchement frotteur négatif",
  31. "Déclenchement pneu de guidage",
  32. "Déclenchement pneu porteur intérieur",
  33. "Déclenchement pneu porteur extérieur",
  34. "Erreur de comptage ZT2",
  35. "Déclenchement pneu porteur intérieur ZT2",
  36. "Déclenchement pneu porteur extérieur ZT2",
  37. "Panne équipement ZT1",
  38. "Panne équipement ZT2",
  39. };
  40. const char * CZTData::ShortErrorString[] = {"V00",
  41. "DFN",
  42. "DPG",
  43. "DPPI",
  44. "DPPE",
  45. "V002",
  46. "DPPI2",
  47. "DPPE2",
  48. "PEQ1",
  49. "PEQ2"};
  50. const char* CZTData::GetErrorString(unsigned int ErrorID)
  51. {
  52. if(ErrorID >= DETECTION_MAX_DETECTION_ID)
  53. ErrorID = 0;
  54. return ErrorString[ErrorID];
  55. }
  56. const char* CZTData::GetShortErrorString(unsigned int ErrorID)
  57. {
  58. if(ErrorID >= DETECTION_MAX_DETECTION_ID)
  59. ErrorID = 0;
  60. return ShortErrorString[ErrorID];
  61. }
  62. const char* CZTData::GetTrainTypeString(unsigned int TrainType)
  63. {
  64. if(TrainType >= TRAIN_TYPE_MAX_ID)
  65. TrainType = TRAIN_TYPE_UNKNOWN;
  66. return TrainTypeString[TrainType];
  67. }
  68. const char* CZTData::GetModbusTrainTypeString(unsigned int TrainType)
  69. {
  70. switch(TrainType)
  71. {
  72. case MODBUS_CC_TRAIN_TYPE_MR63:
  73. {
  74. return "MR63";
  75. break;
  76. }
  77. case MODBUS_CC_TRAIN_TYPE_MR73:
  78. {
  79. return "MR73";
  80. break;
  81. }
  82. case MODBUS_CC_TRAIN_TYPE_MPM10:
  83. {
  84. return "MPM10";
  85. break;
  86. }
  87. case MODBUS_CC_TRAIN_TYPE_MAINTENANCE:
  88. {
  89. return "Vehicule Travaux";
  90. break;
  91. }
  92. case MODBUS_CC_TRAIN_TYPE_INVALID_ATS_OFFLINE:
  93. case MODBUS_CC_TRAIN_TYPE_INVALID_SERVICE_REBOOT:
  94. case MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED:
  95. case MODBUS_CC_TRAIN_TYPE_INVALID_SACL_OFFLINE:
  96. default:
  97. {
  98. return "Inconnu";
  99. break;
  100. }
  101. }
  102. }
  103. CZT1LogData::CZT1LogData(CZT1ThreadData *ThreadData):
  104. mZT1ThreadData(ThreadData)
  105. {
  106. }
  107. CZT1LogData::~CZT1LogData()
  108. {
  109. if(mZT1ThreadData != 0)
  110. delete mZT1ThreadData;
  111. }
  112. CZT1ThreadData::~CZT1ThreadData()
  113. {
  114. }
  115. void CZT1ThreadData::operator =(CZT1ThreadData& TD)
  116. {
  117. mTimeStamp = TD.mTimeStamp;
  118. mDateTime = TD.mDateTime;
  119. mS1 = TD.mS1;
  120. mS2 = TD.mS2;
  121. mPInt = TD.mPInt;
  122. mPExt = TD.mPExt;
  123. mFN = TD.mFN;
  124. mPG = TD.mPG;
  125. mBogie = TD.mBogie;
  126. mRank = TD.mRank;
  127. mS1Count = TD.mS1Count;
  128. mS2Count = TD.mS2Count;
  129. mFNCount = TD.mFNCount;
  130. mPGExtValue = TD.mPGExtValue;
  131. mPGIntValue = TD.mPGIntValue;
  132. mTrainSpeed = TD.mTrainSpeed;
  133. mTrainType = TD.mTrainType;
  134. }
  135. QDataStream &operator<<(QDataStream &out, const CZT1FlagsData &source)
  136. {
  137. out << source.mExtPGOffset
  138. << source.mIntPGOffset
  139. << source.mPGCalibrationON
  140. << source.mPGTresholdValue
  141. << source.mAnalogTracePresent
  142. << source.mIsProblematicPassage
  143. << source.mTrainCompo1
  144. << source.mTrainCompo2
  145. << source.mTrainCompo3
  146. << source.mModbusTrainType
  147. << source.mZT1ITI
  148. << source.mUnusedFlag13
  149. << source.mUnusedFlag14
  150. << source.mUnusedFlag15
  151. << source.mUnusedFlag16
  152. << source.mUnusedFlag17
  153. << source.mUnusedFlag18
  154. << source.mUnusedFlag19
  155. << source.mUnusedFlag20;
  156. return out;
  157. }
  158. QDataStream &operator>>(QDataStream &in, CZT1FlagsData &dest)
  159. {
  160. in >> dest.mExtPGOffset
  161. >> dest.mIntPGOffset
  162. >> dest.mPGCalibrationON
  163. >> dest.mPGTresholdValue
  164. >> dest.mAnalogTracePresent
  165. >> dest.mIsProblematicPassage
  166. >> dest.mTrainCompo1
  167. >> dest.mTrainCompo2
  168. >> dest.mTrainCompo3
  169. >> dest.mModbusTrainType
  170. >> dest.mZT1ITI
  171. >> dest.mUnusedFlag13
  172. >> dest.mUnusedFlag14
  173. >> dest.mUnusedFlag15
  174. >> dest.mUnusedFlag16
  175. >> dest.mUnusedFlag17
  176. >> dest.mUnusedFlag18
  177. >> dest.mUnusedFlag19
  178. >> dest.mUnusedFlag20;
  179. return in;
  180. }
  181. QDataStream& operator<<(QDataStream &out, const CZT1LogData &source)
  182. {
  183. quint32 ThreadDataValid = 0;
  184. if(source.mZT1ThreadData != 0)
  185. ThreadDataValid = 1;
  186. out << source.mDateTime
  187. << source.mTimestamp
  188. << source.mCIZT1
  189. << source.mCDVApproach_ZT1
  190. << source.mCDVARM_ZT1
  191. << ThreadDataValid;
  192. if(ThreadDataValid == 1)
  193. {
  194. out << source.mZT1ThreadData->mS1
  195. << source.mZT1ThreadData->mS2
  196. << source.mZT1ThreadData->mFN
  197. << source.mZT1ThreadData->mPInt
  198. << source.mZT1ThreadData->mPExt
  199. << source.mZT1ThreadData->mPG
  200. << source.mZT1ThreadData->mTrainSpeed
  201. << source.mZT1ThreadData->mBogie
  202. << source.mZT1ThreadData->mRank
  203. << source.mZT1ThreadData->mPGExtValue
  204. << source.mZT1ThreadData->mPGIntValue
  205. << source.mZT1ThreadData->mTrainType
  206. << source.mZT1ThreadData->mS1Count
  207. << source.mZT1ThreadData->mS2Count;
  208. }
  209. return out;
  210. }
  211. QDataStream &operator>>(QDataStream &in, CZT1LogData &dest)
  212. {
  213. quint32 ThreadValid;
  214. in >> dest.mDateTime
  215. >> dest.mTimestamp
  216. >> dest.mCIZT1
  217. >> dest.mCDVApproach_ZT1
  218. >> dest.mCDVARM_ZT1
  219. >> ThreadValid;
  220. if(ThreadValid == 1)
  221. {
  222. dest.mZT1ThreadData = new CZT1ThreadData();
  223. in >> dest.mZT1ThreadData->mS1
  224. >> dest.mZT1ThreadData->mS2
  225. >> dest.mZT1ThreadData->mFN
  226. >> dest.mZT1ThreadData->mPInt
  227. >> dest.mZT1ThreadData->mPExt
  228. >> dest.mZT1ThreadData->mPG
  229. >> dest.mZT1ThreadData->mTrainSpeed
  230. >> dest.mZT1ThreadData->mBogie
  231. >> dest.mZT1ThreadData->mRank
  232. >> dest.mZT1ThreadData->mPGExtValue
  233. >> dest.mZT1ThreadData->mPGIntValue
  234. >> dest.mZT1ThreadData->mTrainType
  235. >>dest.mZT1ThreadData->mS1Count
  236. >>dest.mZT1ThreadData->mS2Count;
  237. }
  238. return in;
  239. }
  240. QDataStream &operator<<(QDataStream &out, const CZTDetectionData &source)
  241. {
  242. out << source.mTimeStamp
  243. << source.mRank
  244. << source.mDetectionID;
  245. return out;
  246. }
  247. QDataStream &operator>>(QDataStream &in, CZTDetectionData &dest)
  248. {
  249. in >> dest.mTimeStamp
  250. >> dest.mRank
  251. >> dest.mDetectionID;
  252. return in;
  253. }
  254. CZT2LogData::CZT2LogData(CZT2ThreadData *ThreadData):
  255. mZT2ThreadData(ThreadData)
  256. {
  257. }
  258. CZT2LogData::~CZT2LogData()
  259. {
  260. if(mZT2ThreadData != 0)
  261. delete mZT2ThreadData;
  262. }
  263. QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source)
  264. {
  265. out << source.mIsProblematicPassage
  266. << source.mTrainCompo1
  267. << source.mTrainCompo2
  268. << source.mTrainCompo3
  269. << source.mModbusTrainType
  270. << source.mUnusedFlag6
  271. << source.mUnusedFlag7
  272. << source.mUnusedFlag8
  273. << source.mUnusedFlag9
  274. << source.mUnusedFlag10;
  275. return out;
  276. }
  277. QDataStream &operator>>(QDataStream &in, CZT2FlagsData &dest)
  278. {
  279. in >> dest.mIsProblematicPassage
  280. >> dest.mTrainCompo1
  281. >> dest.mTrainCompo2
  282. >> dest.mTrainCompo3
  283. >> dest.mModbusTrainType
  284. >> dest.mUnusedFlag6
  285. >> dest.mUnusedFlag7
  286. >> dest.mUnusedFlag8
  287. >> dest.mUnusedFlag9
  288. >> dest.mUnusedFlag10;;
  289. return in;
  290. }
  291. QDataStream& operator<<(QDataStream &out, const CZT2LogData &source)
  292. {
  293. quint32 ThreadDataValid = 0;
  294. if(source.mZT2ThreadData != 0)
  295. ThreadDataValid = 1;
  296. out << source.mDateTime
  297. << source.mTimestamp
  298. << source.mCIZT2
  299. << source.mCDVARM_ZT2
  300. << source.mCDVApproach_ZT2
  301. << ThreadDataValid;
  302. if(ThreadDataValid == 1)
  303. {
  304. out << source.mZT2ThreadData->mS1
  305. << source.mZT2ThreadData->mPPInt
  306. << source.mZT2ThreadData->mPPExt
  307. << source.mZT2ThreadData->mBogie
  308. << source.mZT2ThreadData->mRank
  309. << source.mZT2ThreadData->mS1Count;
  310. }
  311. return out;
  312. }
  313. QDataStream &operator>>(QDataStream &in, CZT2LogData &dest)
  314. {
  315. quint32 ThreadValid;
  316. in >> dest.mDateTime
  317. >> dest.mTimestamp
  318. >> dest.mCIZT2
  319. >> dest.mCDVARM_ZT2
  320. >> dest.mCDVApproach_ZT2
  321. >> ThreadValid;
  322. if(ThreadValid == 1)
  323. {
  324. dest.mZT2ThreadData = new CZT2ThreadData();
  325. in >> dest.mZT2ThreadData->mS1
  326. >> dest.mZT2ThreadData->mPPInt
  327. >> dest.mZT2ThreadData->mPPExt
  328. >> dest.mZT2ThreadData->mBogie
  329. >> dest.mZT2ThreadData->mRank
  330. >> dest.mZT2ThreadData->mS1Count;
  331. }
  332. return in;
  333. }
  334. CZTDetectionFunctionConfig::CZTDetectionFunctionConfig()
  335. {
  336. for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++)
  337. {
  338. mZTDetectionConfig[i].AnalysisActive = false;
  339. mZTDetectionConfig[i].TKActive = false;
  340. }
  341. }
  342. void CZTDetectionFunctionConfig::operator =(CZTDetectionFunctionConfig& DF)
  343. {
  344. for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++)
  345. {
  346. mZTDetectionConfig[i].AnalysisActive = DF.mZTDetectionConfig[i].AnalysisActive;
  347. mZTDetectionConfig[i].TKActive = DF.mZTDetectionConfig[i].TKActive;
  348. }
  349. }
  350. QDataStream &operator<<(QDataStream &out, const CZTDetectionFunctionConfig &source)
  351. {
  352. for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++)
  353. {
  354. out << source.mZTDetectionConfig[i].AnalysisActive
  355. << source.mZTDetectionConfig[i].TKActive;
  356. }
  357. return out;
  358. }
  359. QDataStream &operator>>(QDataStream &in, CZTDetectionFunctionConfig &dest)
  360. {
  361. for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++)
  362. {
  363. in >> dest.mZTDetectionConfig[i].AnalysisActive
  364. >> dest.mZTDetectionConfig[i].TKActive;
  365. }
  366. return in;
  367. }
  368. CSettingsData::CSettingsData()
  369. {
  370. }
  371. CZTSettingsData::CZTSettingsData()
  372. {
  373. mDetectionFunctionSettings = new CZTDetectionFunctionConfig();
  374. mAutoExportZT1CSV = false;
  375. mAutoExportZT2CSV = false;
  376. }
  377. QDataStream &operator<<(QDataStream &out, const CZTNetworkConfig &source)
  378. {
  379. out << source.mZTID
  380. << source.mIPAdress;
  381. return out;
  382. }
  383. QDataStream &operator>>(QDataStream &in, CZTNetworkConfig &dest)
  384. {
  385. in >> dest.mZTID
  386. >> dest.mIPAdress;
  387. return in;
  388. }