TVmsCtlrF.cpp 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "TVmsCtlrF.h"
  4. #include "AppGlobalF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. //---------------------------------------------------------------------------
  8. TVmsCtlr::TVmsCtlr()
  9. {
  10. InitializeCriticalSection(&FCS);
  11. VMS_MAX_PHSE_NUM = INT_MAX_VMS_FORM; // NUMBER(2) Y VMS 최대 표출면 개수
  12. VMS_PHSE_CHNG_CYCL = 5; // NUMBER(3) Y VMS 표출면 변경 주기
  13. VMS_CMNC_ERR_BASS_VAL = 127; // NUMBER(3) Y VMS 통신 오류 기본 값(모듈 전원이 꺼지는 온도값(℃))
  14. FAN_MTNS_TMPR = 35; // NUMBER(6,3) Y 팬 동작 온도
  15. HETR_MTNS_TMPR = 0; // NUMBER(6,3) Y 히터 동작 온도
  16. VMS_MODL_ERR_RATE = 20; // NUMBER(3) Y VMS 모듈 오류 율(Options)
  17. VMS_NGHT_BRGH_STEP = 48; // NUMBER(2) Y VMS 야간 휘도 단계
  18. VMS_WEEK_BRGH_STEP = 64; // NUMBER(2) Y VMS 주간 휘도 단계
  19. CMNCFAIL_SLOT_NMBR = 0; // NUMBER(4) Y 0 통신장애 SLOT 번호
  20. PWER_FAIL_SLOT_NMBR = 0; // NUMBER(4) Y 0 전원 장애 SLOT 번호
  21. VMS_MODL_CHK_CYCL = 30;
  22. FDispLog = false;
  23. FSLog = NULL;
  24. FCLog = NULL;
  25. memset(&DSTATE, 0x00, sizeof(DSTATE));
  26. DSTATE.Comm = vms_error;
  27. DSTATE.Wcomm = vms_error;
  28. VComm_VmsInitStatus(&DSTATE);
  29. DSTATE.Comm = vms_error;
  30. DSTATE.Wcomm = vms_error;
  31. memset(&RSTATE, 0x00, sizeof(RSTATE));
  32. RSTATE.Comm = vms_error;
  33. RSTATE.Wcomm = vms_error;
  34. VComm_VmsInitStatus(&RSTATE);
  35. RSTATE.Comm = vms_error;
  36. RSTATE.Wcomm = vms_error;
  37. FSaveState = false;
  38. FOldState = vms_normal;
  39. FProvide = false;
  40. FModeChange = false;
  41. FIsOldProtocol = false;
  42. FIsFtpDownload = false;
  43. FIsProtolFontName = false;
  44. FIsStatusAuto = true;
  45. FBmpDownload = false;
  46. FSymbolDownload = false;
  47. RowNo = -1;
  48. }
  49. //---------------------------------------------------------------------------
  50. TVmsCtlr::~TVmsCtlr()
  51. {
  52. SAFE_DELETE(pPackQueue); /* 패킷 버퍼 */
  53. SAFE_DELETE(FSLog);
  54. SAFE_DELETE(FCLog);
  55. SAFE_DELETE(DOWNLOAD);
  56. SAFE_DELETE(CTLMODE);
  57. DeleteCriticalSection(&FCS);
  58. }
  59. //---------------------------------------------------------------------------
  60. void TVmsCtlr::Lock()
  61. {
  62. EnterCriticalSection(&FCS);
  63. }
  64. //---------------------------------------------------------------------------
  65. void TVmsCtlr::UnLock()
  66. {
  67. LeaveCriticalSection(&FCS);
  68. }
  69. //---------------------------------------------------------------------------
  70. //---------------------------------------------------------------------------
  71. TVmsCtlrManager *VmsManager = NULL;
  72. //---------------------------------------------------------------------------
  73. TVmsCtlrManager::TVmsCtlrManager()
  74. {
  75. Total = 0;
  76. Error = 0;
  77. Normal = 0;
  78. Module = 0;
  79. }
  80. //---------------------------------------------------------------------------
  81. TVmsCtlrManager::~TVmsCtlrManager()
  82. {
  83. FLists.RemoveAll();
  84. }
  85. //---------------------------------------------------------------------------
  86. void TVmsCtlrManager::InitProvide(bool AProvide/*=false*/)
  87. {
  88. try
  89. {
  90. FLists.Lock();
  91. FOR_STL(TVmsCtlr*, pObj, VmsManager->FLists)
  92. {
  93. pObj->FProvide = AProvide;;
  94. }
  95. }
  96. __finally
  97. {
  98. FLists.UnLock();
  99. }
  100. }
  101. //---------------------------------------------------------------------------
  102. bool ChangedState(INT_VMS_STATE *DSTATE, INT_VMS_STATE *RSTATE)
  103. {
  104. if (DSTATE->OprMode != RSTATE->OprMode) return true;
  105. //if (DSTATE->Comm != RSTATE->Comm) return true;
  106. if (DSTATE->Wcomm != RSTATE->Wcomm) return true;
  107. if (DSTATE->DoorStatus != RSTATE->DoorStatus) return true;
  108. if (DSTATE->ModulePowerStatus != RSTATE->ModulePowerStatus) return true;
  109. if (DSTATE->FanStatus != RSTATE->FanStatus) return true;
  110. if (DSTATE->HeaterStatus != RSTATE->HeaterStatus) return true;
  111. if (DSTATE->BodyTemp != RSTATE->BodyTemp) return true;
  112. if (DSTATE->LuminanceStatus != RSTATE->LuminanceStatus) return true;
  113. if (DSTATE->ExternalLightStatus != RSTATE->ExternalLightStatus) return true;
  114. if (DSTATE->AlarmLightStatus != RSTATE->AlarmLightStatus) return true;
  115. if (DSTATE->SpeakerStatus != RSTATE->SpeakerStatus) return true;
  116. //if (!memcmp(DSTATE->ControllerCurrentTime, RSTATE->ControllerCurrentTime, INT_VMS_MAX_DATETIME)) return true;
  117. if (DSTATE->Voltage != RSTATE->Voltage) return true;
  118. if (DSTATE->ModuleState != RSTATE->ModuleState) return true;
  119. if (DSTATE->ModuleVertical != RSTATE->ModuleVertical) return true;
  120. if (DSTATE->ModuleHorizontal != RSTATE->ModuleHorizontal) return true;
  121. if (memcmp(DSTATE->ModuleStatus, RSTATE->ModuleStatus, INT_VMS_MAX_MODULE_BIT)) return true;
  122. if (DSTATE->PowerCount != RSTATE->PowerCount) return true;
  123. if (memcmp(DSTATE->PowerStatus, RSTATE->PowerStatus, INT_VMS_MAX_POWER_BIT)) return true;
  124. //if (DSTATE->ScheduledMessageOperatingTime != RSTATE->ScheduledMessageOperatingTime) return true;
  125. if (DSTATE->ModuleOperatingTemperature != RSTATE->ModuleOperatingTemperature) return true;
  126. if (DSTATE->FanOperatingTemperature != RSTATE->FanOperatingTemperature) return true;
  127. if (DSTATE->HeaterOperatingTemperature != RSTATE->HeaterOperatingTemperature) return true;
  128. if (DSTATE->ExternalLightOperatingLuminance != RSTATE->ExternalLightOperatingLuminance) return true;
  129. if (DSTATE->ModuleBasicFailureRate != RSTATE->ModuleBasicFailureRate) return true;
  130. if (DSTATE->MaximumRetry != RSTATE->MaximumRetry) return true;
  131. if (DSTATE->ResponseTimeOut != RSTATE->ResponseTimeOut) return true;
  132. if (DSTATE->BlinkingCycleTime != RSTATE->BlinkingCycleTime) return true;
  133. return false;
  134. }
  135. //---------------------------------------------------------------------------
  136. void InitDownLoadInfo(VMS_DOWNLOAD_INFO *AInfo)
  137. {
  138. AInfo->Enable = vms_download_disable;
  139. AInfo->SaveFlag = -1;
  140. AInfo->dTimer = Now();
  141. AInfo->Count = 0;
  142. }
  143. //---------------------------------------------------------------------------
  144. void InitCtlModeInfo(VMS_CONTROL_MODE *AInfo)
  145. {
  146. AInfo->SaveFlag = -1;
  147. AInfo->pTimer = Now();
  148. }
  149. //---------------------------------------------------------------------------
  150. void EventInit(VMS_EVENT_INFO *AInfo)
  151. {
  152. AInfo->Count = 0;
  153. for (int ii = 0; ii < VMS_MAX_EVENT; ii++)
  154. {
  155. AInfo->Unit[ii].LINK_ID = "";
  156. AInfo->Unit[ii].IFSC_ID = "";
  157. AInfo->Unit[ii].VMS_IFSC_ID = "";
  158. AInfo->Unit[ii].VMS_IFSC_NM = "";
  159. AInfo->Unit[ii].DSPL_STRT_NODE_NM = "";
  160. AInfo->Unit[ii].DSPL_END_NODE_NM = "";
  161. AInfo->Unit[ii].DETR_ID = "";
  162. AInfo->Unit[ii].DSPL_PRRT = "";
  163. AInfo->Unit[ii].INCD_OCRR_ID = "";
  164. AInfo->Unit[ii].STRT_LCTN_NM = "";
  165. AInfo->Unit[ii].END_LCTN_NM = "";
  166. AInfo->Unit[ii].OCRR_LCTN_NM = "";
  167. AInfo->Unit[ii].VMS_INCD_TYPE_NM = "";
  168. AInfo->Unit[ii].VMS_INCD_TYPE_CD = "";
  169. AInfo->Unit[ii].VMS_INCD_DETL_NM = "";
  170. AInfo->Unit[ii].VMS_INCD_DETL_TYPE_CD = "";
  171. AInfo->Unit[ii].CMTR_GRAD_NM = "";
  172. AInfo->Unit[ii].CMTR_GRAD_CD = "";
  173. AInfo->Unit[ii].INCD_CLSR_LANE = "";
  174. AInfo->Unit[ii].INCD_STRT_DT = "";
  175. AInfo->Unit[ii].INCD_END_PRAR_DT = "";
  176. }
  177. }
  178. //---------------------------------------------------------------------------
  179. void ScheduleInit(VMS_SCHEDULE_INFO *AInfo)
  180. {
  181. AInfo->Count = 0;
  182. for (int ii = 0; ii < VMS_MAX_SCHEDULE; ii++)
  183. {
  184. AInfo->Unit[ii].TRFC_SITU_TYPE_CD = 0;
  185. AInfo->Unit[ii].PHASE = 0;
  186. AInfo->Unit[ii].VMS_FORM_ID = "";
  187. AInfo->Unit[ii].FRST_VMS_IFSC_ID = "";
  188. AInfo->Unit[ii].SECD_VMS_IFSC_ID = "";
  189. AInfo->Unit[ii].THIR_VMS_IFSC_ID = "";
  190. AInfo->Unit[ii].FOUR_VMS_IFSC_ID = "";
  191. AInfo->Unit[ii].FRST_IMG_IFSC_ID = "";
  192. AInfo->Unit[ii].SECD_IMG_IFSC_ID = "";
  193. AInfo->Unit[ii].THIR_IMG_IFSC_ID = "";
  194. AInfo->Unit[ii].FOUR_IMG_IFSC_ID = "";
  195. AInfo->Unit[ii].DSPL_HH = 0;
  196. AInfo->Unit[ii].VMS_FORM_PRRT_CD = "";
  197. AInfo->Unit[ii].VMS_IFSC_ID = "";
  198. AInfo->Unit[ii].EVENT = NULL;
  199. }
  200. }
  201. //---------------------------------------------------------------------------