CDSVmsCtlrF.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. //---------------------------------------------------------------------------
  2. #ifndef CDSVmsCtlrFH
  3. #define CDSVmsCtlrFH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <stdio.h>
  7. #include <ADODB.hpp>
  8. #include <DB.hpp>
  9. #include "LibSTLF.hpp"
  10. #include "ITSDbF.h"
  11. //---------------------------------------------------------------------------
  12. #include "VitzroCommF.h"
  13. //---------------------------------------------------------------------------
  14. #define MAX_FORM_TYPE 8
  15. #define MAX_FORM_SCHED MAX_FORM_TYPE
  16. typedef enum enVmsState
  17. {
  18. state_normal = 0,
  19. state_error,
  20. state_module,
  21. } EN_VMS_STATE;
  22. //---------------------------------------------------------------------------
  23. typedef enum enFormType
  24. {
  25. enFormTraffic = 0,
  26. enFormDolbal,
  27. enFormGongsa,
  28. enFormHongbo,
  29. enFormDeture,
  30. enFormFixed,
  31. enFormBase,
  32. enFormCongest,
  33. } EN_FORM_TYPE;
  34. //---------------------------------------------------------------------------
  35. //---------------------------------------------------------------------------
  36. class TVmsIfscRltn
  37. {
  38. public:
  39. TVmsIfscRltn();
  40. ~TVmsIfscRltn();
  41. public:
  42. int VMS_CTLR_NMBR; //NUMBER(10) N VMS 제어기 번호
  43. int VMS_IFSC_ID; //NUMBER(10) N VMS 정보제공구간 ID
  44. int DSPL_PRRT; //NUMBER(2) Y 표출 우선순위
  45. };
  46. //---------------------------------------------------------------------------
  47. typedef struct tagVmsPhase
  48. {
  49. int DSPL_HH; //표출시간
  50. String DNLD_YN; //다운로드성공여부
  51. String DSPL_CD; //표출방법
  52. Graphics::TBitmap *pVmsBmp; //표출메시지(Bitmap 이미지)
  53. } VMS_PHASE;
  54. class TVmsMsg
  55. {
  56. public:
  57. TVmsMsg();
  58. ~TVmsMsg();
  59. public:
  60. void Init();
  61. int Total; //전체메시지 갯수
  62. int Curr; //현재표출갯수(사용안함)
  63. String OFFER_DT; //제공시각
  64. bool OFFER_YN; //정시제공여부(true:정시제공,false:5분이상이전제공데이터)
  65. VMS_PHASE PHASE[INT_MAX_VMS_FORM];
  66. };
  67. //---------------------------------------------------------------------------
  68. typedef struct tagWinVmsState
  69. {
  70. BYTE OprMode; /* VMS운영모드, 0:auto, 1:Fix */
  71. BYTE Comm; /* 유선통신상태, 0:정상 1:장애 */
  72. BYTE Wcomm; /* 무선통신상태, 0:정상 1:장애 */
  73. BYTE DoorStatus; /* 도어상태정보코드, 0:열림 1:닫힘 2:알수없음 */
  74. BYTE ModulePowerStatus; /* 모듈전원상태정보코드, 0:켜짐 1:꺼짐 2:알수없음 */
  75. short BodyTemp; /* 함체온도값(℃), 범위(-128~127) */
  76. BYTE LuminanceStatus; /* 화면의 밝기값 (최대 휘도값을 100으로 했을 때의 백분율 값), 범위(0~100) */
  77. BYTE FanStatus; /* Fan 동작상태정보코드, 0:켜짐, 1:꺼짐 2:알수없음 */
  78. BYTE HeaterStatus; /* Heater 동작상태정보코드, 0:켜짐, 1:꺼짐 2:알수없음 */
  79. BYTE ExternalLightStatus; /* 선택 외부조명 동작상태정보코드 0:켜짐, 1:꺼짐, 2:자동(공단은 미사용) */
  80. BYTE AlarmLightStatus; /* 선택 경광등 동작상태정보코드 0:켜짐, 1:꺼짐 */
  81. BYTE SpeakerStatus; /* 선택 스피커 동작상태정보코드 0:켜짐, 1:꺼짐 */
  82. BYTE ControllerCurrentTime[INT_VMS_MAX_DATETIME]; /* 선택 제어기 시간 (YYYYMMDDHHMMSS) */
  83. BYTE Voltage; /* 전압, 범위(0~255), 사용안함 */
  84. BYTE ModuleState; /* 모듈 상태, 0:정상 1:장애 2:알수없음 */
  85. BYTE ModuleHorizontal; /* 가로 모듈수 */
  86. BYTE ModuleVertical; /* 세로 모듈수 */
  87. BYTE ModuleStatus[INT_VMS_MAX_MODULE_BIT]; /* 모듈 개별 상태, 0:정상 1:장애 2:알수없음 */
  88. BYTE PowerCount; /* 전원 갯수 */
  89. BYTE PowerStatus[INT_VMS_MAX_POWER_BIT]; /* 전원 개별 상태, 0:켜짐 1:꺼짐 2:알수없음 */
  90. short ScheduledMessageOperatingTime; /* 필수 계획된 메시지의 동작시간(초) */
  91. short ModuleOperatingTemperature; /* 필수 모듈 전원이 꺼지는 온도값(℃) */
  92. short FanOperatingTemperature; /* 필수 Fan 동작 기준 온도값(℃) */
  93. short HeaterOperatingTemperature; /* 필수 Heater 동작 기준 온도값(℃) */
  94. short ExternalLightOperatingLuminance; /* 선택 외부전등 동작 기준 휘도값 */
  95. short ModuleBasicFailureRate; /* 선택 모듈 장애율 (한 개의 모듈을 장애로 처리하기 위한 픽셀의 백분율값) */
  96. short MaximumRetry; /* 선택 최대 재시도 횟수(회) */
  97. short ResponseTimeOut; /* 선택 최대응답대기시간 (초) */
  98. short BlinkingCycleTime; /* 선택 점멸시간 주기 ( 1/10초단위) */
  99. } WIN_VMS_STATE;
  100. class TVmsCtlr
  101. {
  102. public:
  103. TVmsCtlr();
  104. ~TVmsCtlr();
  105. private:
  106. CRITICAL_SECTION FCS;
  107. bool FCompleted;
  108. int FEditMode;
  109. int FGridIndex;
  110. String FMEM_DEL;
  111. public:
  112. int VMS_CTLR_NMBR; // NUMBER(10); // VMS 제어기 번호
  113. String VMS_ID; // VARCHAR2(4) Y VMS ID
  114. String VMS_CTLR_ID; // VARCHAR2(30) Y VMS 제어기 ID
  115. String VMS_NM; // VARCHAR2(40) Y VMS 명
  116. String VMS_CTLR_IP; // VARCHAR2(20) Y VMS 제어기 아이피
  117. String VMS_CMNC_PORT; // VARCHAR2(5) Y VMS 통신 포트
  118. String VMS_USAG_TYPE_CD; // VARCHAR2(7) Y VMS 용도 유형 코드
  119. String VMS_FRM_TYPE_CD; // VARCHAR2(7) Y VMS 형식 유형 코드
  120. String VMS_TYPE_CD; // VARCHAR2(7) Y VMS 유형 코드
  121. String VMS_MODL_TYPE_CD; // VARCHAR2(7) Y VMS 모듈 유형 코드
  122. String OPER_MODE; // VARCHAR2(7) Y 운영 모드
  123. int VMS_CMNC_ERR_BASS_VAL; // NUMBER(3) Y VMS 통신 오류 기본 값
  124. int VMS_NGHT_BRGH_STEP; // NUMBER(2) Y VMS 야간 휘도 단계
  125. int VMS_WEEK_BRGH_STEP; // NUMBER(2) Y VMS 주간 휘도 단계
  126. int VMS_PHSE_CHNG_CYCL; // NUMBER(3) Y VMS 표출면 변경 주기
  127. int VMS_MODL_ERR_RATE; // NUMBER(3) Y VMS 모듈 오류 율
  128. int VMS_MODL_CHK_CYCL; // NUMBER(3) Y 30 모듈체크주기(초)
  129. int CMNCFAIL_SLOT_NMBR; // NUMBER(4) Y 0 통신장애 SLOT 번호
  130. int PWER_FAIL_SLOT_NMBR; // NUMBER(4) Y 0 전원 장애 SLOT 번호
  131. String CMTRINFR_CNCT_YN; // CHAR(1) Y 'N' 소통정보 연계 여부
  132. String WTHRINFR_CNCT_YN; // CHAR(1) Y 'N' 기상정보 연계 여부
  133. String ENVRINFR_CNCT_YN; // CHAR(1) Y 'N' 환경정보 연계 여부
  134. int VMS_MAX_PHSE_NUM; // NUMBER(2) Y VMS 최대 표출면 개수
  135. String FRST_REGR_NMBR; // VARCHAR2(20) Y 최초 등록자 번호
  136. String FRST_RGST_DT; // VARCHAR2(14) Y 최초 등록 일시
  137. String LAST_CRPR_NMBR; // VARCHAR2(20) Y 최종 수정자 번호
  138. String LAST_CRCT_DT; // VARCHAR2(14) Y 최종 수정 일시
  139. String PANL_ON_TIME; // VARCHAR2(4) Y 전광판 ON TIME
  140. String PANL_OFF_TIME; // VARCHAR2(4) Y 전광판 OFF TIME
  141. String PANL_PWER_MODE; // VARCHAR2(7) Y 전광판 전원 모드
  142. String BRGH_MODE; // VARCHAR2(7) Y 휘도 모드
  143. String WEB_CMRA_IP; // VARCHAR2(20) Y 웹 카메라 아이피
  144. double X_CRDN; // NUMBER(11,8) Y X 좌표
  145. double Y_CRDN; // NUMBER(10,8) Y Y 좌표
  146. String ISTL_LCTN_NM; // VARCHAR2(40) Y 설치 위치 명
  147. String TRFC_STRG_USE_YN; // CHAR(1) Y 'N' 교통 전략 사용 여부
  148. String VMS_LOC_IFSC_ID; // NUMBER(10) Y VMS 위치 정보제공구간 ID
  149. int FAN_MTNS_TMPR; // NUMBER(6,3) Y 팬 동작 온도
  150. int HETR_MTNS_TMPR; // NUMBER(6,3) Y 히터 동작 온도
  151. int WEB_CMRA_PORT; // NUMBER(5) Y
  152. String WEB_CMRA_ID; // VARCHAR2(20) Y
  153. String WEB_CMRA_PWD; // VARCHAR2(20) Y
  154. String STRM_SESN_NM; // VARCHAR2(200) Y 스트리밍 세션 명
  155. String WEB_CMRA_CMPY;
  156. String WEB_CMRA_MDL;
  157. String DEL_YN; // CHAR(1) Y 'N' 삭제 여부
  158. int DEF_PHSE_CHNG_CYCL;
  159. //크기
  160. int WIDTH;
  161. int HEIGHT;
  162. int ModHorCnt;
  163. int ModVerCnt;
  164. int FormCnt[MAX_FORM_TYPE][2];
  165. TVmsMsg *VmsMsg;
  166. void *FData1;
  167. void *FData2;
  168. void *FData3;
  169. WIN_VMS_STATE WSTATE;
  170. int RunState;
  171. public:
  172. void Lock();
  173. void UnLock();
  174. void InitFormCount()
  175. {
  176. for (int ii = 0; ii < MAX_FORM_TYPE; ii++)
  177. {
  178. FormCnt[ii][0] = 0;
  179. FormCnt[ii][1] = 0;
  180. }
  181. };
  182. void CheckRunState();
  183. IntMap<TVmsIfscRltn> FIfscRltn;
  184. public:
  185. __property bool Completed = {read = FCompleted, write = FCompleted};
  186. __property int EditMode = {read = FEditMode, write = FEditMode };
  187. __property int GridIndex = {read = FGridIndex, write = FGridIndex };
  188. __property String MEM_DEL = {read = FMEM_DEL, write = FMEM_DEL };
  189. };
  190. //---------------------------------------------------------------------------
  191. typedef std::map<String, TVmsCtlr*>::iterator VmsIterator;
  192. //---------------------------------------------------------------------------
  193. class TVmsSize
  194. {
  195. public: // User declarations
  196. String TypeCd;
  197. String TypeNm;
  198. int Width;
  199. int Height;
  200. public: // User declarations
  201. TVmsSize();
  202. };
  203. //---------------------------------------------------------------------------
  204. class TVmsCtlrManager
  205. {
  206. public:
  207. TVmsCtlrManager();
  208. ~TVmsCtlrManager();
  209. private:
  210. TStream *FImgStream;
  211. public:
  212. StrMap<TVmsSize> FVmsSize;
  213. ListMap<TVmsCtlr> FLists;
  214. void InitFormCount();
  215. int FMinWidth, FMinHeight;
  216. int FMaxWidth, FMaxHeight;
  217. public:
  218. bool LoadVmsSize(TADOConnection *ADbConn=NULL);
  219. bool LoadFromDb(TADOConnection *ADbConn=NULL);
  220. bool LoadVmsStatusFromDb(TADOConnection *ADbConn=NULL);
  221. bool DeleteVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
  222. bool InsertVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
  223. bool UpdateVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
  224. bool MergeVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
  225. bool MergeFcltInfo(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
  226. bool GetNextVmsId(int &ANmbr, int &AId, TADOConnection *ADbConn=NULL);
  227. bool UpdateCtlrInfo(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
  228. bool LoadIfscRltn(TADOConnection *ADbConn=NULL);
  229. bool SaveIfscRltn(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
  230. bool LoadVmsMsg(TADOConnection *ADbConn=NULL);
  231. bool LoadVmsFormUsage(TADOConnection *ADbConn=NULL);
  232. bool InsVmsControlHs(String ACtlDt, String AVmsNmbr, String ACtlType, String ACtlVal, String ACtlRes, String AUserId, TADOConnection *ADbConn=NULL);
  233. };
  234. //---------------------------------------------------------------------------
  235. extern TVmsCtlrManager *VmsManager;
  236. //---------------------------------------------------------------------------
  237. void VmsInitStatus(WIN_VMS_STATE *AState);
  238. void VmsStatusCopy(WIN_VMS_STATE *AState, INT_VMS_STATE *ASrc);
  239. //---------------------------------------------------------------------------
  240. #endif