Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

289 řádky
7.5 KiB

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