Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

349 lignes
9.0 KiB

  1. #include "CableTestBench.h"
  2. #include <QDateTime>
  3. #include "CableTestBenchDefs.h"
  4. #include <QFileInfo>
  5. #include <QProcess>
  6. #include "TestBenchVersion.h"
  7. #include <QMessageBox>
  8. CCableTestBench::CCableTestBench(QObject *parent) :
  9. QObject(parent),
  10. mActualCable(CConnectorDefs::UNKNOWN_CONNECTOR_TYPE,&mIOInterface)
  11. {
  12. w = new MainWindow(0,this);
  13. w->setWindowTitle(QString("Cablotron %1").arg(TEST_BENCH_VERSION));
  14. }
  15. CCableTestBench::~CCableTestBench()
  16. {
  17. delete w;
  18. //mIOInterface.CloseIOModules();
  19. }
  20. int CCableTestBench::Start()
  21. {
  22. // w->showMaximized();
  23. w->show();
  24. mMainPageHandle = w->mMainPage;
  25. mVisualInspPageHandle = w->mVisualInspPage;
  26. mCableTestPageHandle = w->mCableTestPage;
  27. mOptionsPageHandle = w->mOptionsPage;
  28. if(mTestBenchOptions.LoadSettingFromFile() == RET_OK)
  29. {
  30. mOptionsPageHandle->SetCurrentOptions(&mTestBenchOptions);
  31. }
  32. {
  33. mOptionsPageHandle->GetCurrentOptions(&mTestBenchOptions);
  34. }
  35. mCableTestEngine.InitCableTestEngine(this,&mTestBenchOptions);
  36. if(mIOInterface.OpenIOModules(mTestBenchOptions.mIOModuleIPAddress) == RET_ERROR)
  37. {
  38. mCableTestReport.AddLogEntry("Impossible de communiquer avec le module d'I/O.\nVérifier la connexion ou l'adresse IP.");
  39. QMessageBox::critical(0,"Erreur de connexion","Impossible de communiquer avec le module d'I/O.\nVérifier la connexion ou l'adresse IP.");
  40. }
  41. mCableTestPageHandle->mGuiRefreshTimer.start();
  42. connect(&mCableTestReport,SIGNAL(NewTestLogEntry(QString)),mCableTestPageHandle,SLOT(AddTestLogEntry(QString)));
  43. return 1;
  44. }
  45. CCable * CCableTestBench::GetActualCable()
  46. {
  47. return &mActualCable;
  48. }
  49. CTestReport *CCableTestBench::GetTestReportHandle()
  50. {
  51. return &mCableTestReport;
  52. }
  53. quint8 CCableTestBench::DecToBCDByte(const quint8 byte)
  54. {
  55. quint8 out = 0;
  56. out = ((byte/10) << 4) + (byte%10);
  57. return out;
  58. }
  59. quint16 CCableTestBench::DecToBCDWord(const quint16 word)
  60. {
  61. quint16 out = 0;
  62. quint16 temp = 0;
  63. out = word % 10;
  64. temp = (((word /10) % 10) << 4);
  65. out += temp;
  66. temp = (((word / 100) % 10) << 8);
  67. out += temp;
  68. temp = (((word / 1000) % 10) << 12);
  69. out += temp;
  70. return out;
  71. }
  72. int CCableTestBench::ExecVisualInspectionRequest()
  73. {
  74. qDebug("Exec Visual Inspection clicked");
  75. // mCableTestPageHandle->SetVisualInspectionDone(true);
  76. w->ShowInspectVisuellePage();
  77. return RET_OK;
  78. }
  79. CCable* CCableTestBench::SetSelectedConnector(CConnectorDefs::eConnectorType ConType)
  80. {
  81. if(mActualCable.DefineCableByInputConnector(ConType) == RET_ERROR)
  82. {
  83. return 0;
  84. }
  85. CheckIfReadyForTesting();
  86. return &mActualCable;
  87. }
  88. int CCableTestBench::VisualInspectionQuitRequest()
  89. {
  90. mVisualInspPageHandle->FillVisualInspectionResultReport(mCableTestReport.GetInspectionResult());
  91. if(mCableTestReport.GetInspectionResult()->IsVisualInspectionResultComplete() == true)
  92. {
  93. mCableTestPageHandle->SetVisualInspectionDone(true);
  94. }
  95. else
  96. {
  97. mCableTestPageHandle->SetVisualInspectionDone(false);
  98. }
  99. w->ShowCableTestPage();
  100. CheckIfReadyForTesting();
  101. return RET_OK;
  102. }
  103. int CCableTestBench::StartPauseAutomaticTestRequest()
  104. {
  105. if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_TEST_STBY_MODE)
  106. {
  107. int TestPinCount = mActualCable.GetOutputConnector()->GetPinCount();
  108. if(mActualCable.GetInputConnector()->GetPinCount() < TestPinCount)
  109. {
  110. TestPinCount = mActualCable.GetInputConnector()->GetPinCount();
  111. }
  112. mCableTestPageHandle->FillReportCableParametersData(mCableTestReport.GetReportCableParameters());
  113. mCableTestReport.GetReportCableParameters()->SetCableType(CConnectorDefs::GetConnectorDescription(mActualCable.GetInputConnector()->GetConnectorType()),
  114. CConnectorDefs::GetConnectorDescription(mActualCable.GetOutputConnector()->GetConnectorType()));
  115. mCableTestReport.GetAutomatedTestReport()->SetPinCount(TestPinCount);
  116. mCableTestEngine.StartAutomatedTest();
  117. return RET_OK;
  118. }
  119. if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_AUTO_TEST_RUNNING_MODE)
  120. {
  121. mCableTestEngine.PauseAutomatedTest();
  122. return RET_OK;
  123. }
  124. if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_AUTO_TEST_PAUSED_MODE)
  125. {
  126. mCableTestEngine.ResumeAutomatedTest();
  127. return RET_OK;
  128. }
  129. else //Button shouldn't be used in manual mode...
  130. {
  131. return RET_ERROR;
  132. }
  133. return RET_OK;
  134. }
  135. int CCableTestBench::StartStopManualTestRequest()
  136. {
  137. if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_TEST_STBY_MODE)
  138. {
  139. mCableTestEngine.StartManualTest();
  140. return RET_OK;
  141. }
  142. if(mCableTestEngine.GetTestEngineCurrentMode() == CCableTestEngine::CABLE_TEST_MANUAL_MODE)
  143. {
  144. mCableTestEngine.StopManualTest();
  145. return RET_OK;
  146. }
  147. else //Button shouldn't be used in Automatic mode...
  148. {
  149. return RET_ERROR;
  150. }
  151. }
  152. int CCableTestBench::NewCableRequest()
  153. {
  154. mActualCable.DefineCableByInputConnector(CConnectorDefs::UNKNOWN_CONNECTOR_TYPE);
  155. mVisualInspPageHandle->ResetForm();
  156. mCableTestPageHandle->ResetCable();
  157. mCableTestPageHandle->DisableStartTestBtn();
  158. mCableTestReport.CreateNewTestReport();
  159. return RET_OK;
  160. }
  161. int CCableTestBench::CheckIfReadyForTesting()
  162. {
  163. bool VisualInspectionDone = false, ConnectorSelected = false, CableConfigured = false;
  164. mVisualInspPageHandle->FillVisualInspectionResultReport(mCableTestReport.GetInspectionResult());
  165. if(mCableTestReport.GetInspectionResult()->IsVisualInspectionResultComplete() == true)
  166. {
  167. VisualInspectionDone = true;
  168. }
  169. if(mTestBenchOptions.mIgnoreVisualInspection)
  170. {
  171. VisualInspectionDone = true;
  172. }
  173. if(mCableTestPageHandle->IsCableConfigured())
  174. {
  175. CableConfigured = true;
  176. mCableTestPageHandle->SetCableConfigureStep(true);
  177. }
  178. else
  179. {
  180. mCableTestPageHandle->SetCableConfigureStep(false);
  181. }
  182. ConnectorSelected = mActualCable.IsCableDefined();
  183. if(ConnectorSelected)
  184. {
  185. mCableTestPageHandle->SetConnectorSelStep();
  186. }
  187. else
  188. {
  189. mCableTestPageHandle->SetConnectorSelStep(false);
  190. }
  191. if(VisualInspectionDone && ConnectorSelected && CableConfigured)
  192. {
  193. mCableTestPageHandle->EnableStartTestBtn();
  194. }
  195. else
  196. {
  197. mCableTestPageHandle->DisableStartTestBtn();
  198. }
  199. return RET_OK;
  200. }
  201. int CCableTestBench::CableEngineModeChanged(CCableTestEngine::eCableTestEngineMode Mode)
  202. {
  203. switch(Mode)
  204. {
  205. case CCableTestEngine::CABLE_TEST_STBY_MODE:
  206. {
  207. mCableTestPageHandle->CableTestEnded();
  208. if(mCableTestReport.IsAutoTestReportReady())
  209. {
  210. SaveReportRequest();
  211. mCableTestPageHandle->EnableOpenReportBtn();
  212. if(mCableTestReport.GetGlobalAutoTestResult() == true)
  213. {
  214. mCableTestPageHandle->SetAutoTestResult("Succès!",Qt::darkGreen);
  215. }
  216. else
  217. {
  218. mCableTestPageHandle->SetAutoTestResult("Échec",Qt::red);
  219. }
  220. }
  221. break;
  222. }
  223. case CCableTestEngine::CABLE_AUTO_TEST_RUNNING_MODE:
  224. {
  225. mCableTestPageHandle->CableAutomaticTestStarted();
  226. break;
  227. }
  228. case CCableTestEngine::CABLE_AUTO_TEST_PAUSED_MODE:
  229. {
  230. mCableTestPageHandle->CableAutomaticTestPaused();
  231. break;
  232. }
  233. case CCableTestEngine::CABLE_TEST_MANUAL_MODE:
  234. {
  235. mCableTestPageHandle->CableManualTestStarted();
  236. break;
  237. }
  238. }
  239. return RET_OK;
  240. }
  241. int CCableTestBench::ResetAutomaticTestRequest()
  242. {
  243. return mCableTestEngine.StopAutomatedTest();
  244. }
  245. int CCableTestBench::ManualPinToggleRequest(int ConnectorPinNbr)
  246. {
  247. return mCableTestEngine.ManualPinToggle(ConnectorPinNbr);
  248. }
  249. int CCableTestBench::RefreshConnectorsStateRequest()
  250. {
  251. mCableTestPageHandle->SetInputConnectorState(mActualCable.GetInputConnector()->GetInputPinsStates());
  252. mCableTestPageHandle->SetOutputConnectorState(mActualCable.GetOutputConnector()->GetOutputPinsStates());
  253. return RET_OK;
  254. }
  255. int CCableTestBench::SaveReportRequest()
  256. {
  257. return mCableTestReport.SaveReportToFile(&mTestBenchOptions);
  258. }
  259. int CCableTestBench::OpenReportRequest()
  260. {
  261. QString ReportFile = mCableTestReport.GetLastReportFileName();
  262. if(ReportFile.isEmpty())
  263. {
  264. return RET_ERROR;
  265. }
  266. QFileInfo FileInfo(ReportFile);
  267. QString Command =FileInfo.absoluteFilePath();
  268. Command.prepend("notepad.exe ");
  269. QProcess *process = new QProcess;
  270. process->start(Command);
  271. return RET_OK;
  272. }
  273. int CCableTestBench::CableConfigChanged()
  274. {
  275. CheckIfReadyForTesting();
  276. return RET_OK;
  277. }
  278. int CCableTestBench::TestBenchOptionsChanged()
  279. {
  280. mOptionsPageHandle->GetCurrentOptions(&mTestBenchOptions);
  281. mTestBenchOptions.SaveSettingsToFile();
  282. return RET_OK;
  283. }