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.
 
 
 
 

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