123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- //---------------------------------------------------------------------------
- #ifndef CDSVmsCtlrFH
- #define CDSVmsCtlrFH
- //---------------------------------------------------------------------------
- #include <Classes.hpp>
- #include <stdio.h>
- #include <ADODB.hpp>
- #include <DB.hpp>
- #include "LibSTLF.hpp"
- #include "ITSDbF.h"
- //---------------------------------------------------------------------------
- #include "VitzroCommF.h"
- //---------------------------------------------------------------------------
- #define MAX_FORM_TYPE 8
- #define MAX_FORM_SCHED MAX_FORM_TYPE
- typedef enum enVmsState
- {
- state_normal = 0,
- state_error,
- state_module,
- } EN_VMS_STATE;
- //---------------------------------------------------------------------------
- typedef enum enFormType
- {
- enFormTraffic = 0,
- enFormDolbal,
- enFormGongsa,
- enFormHongbo,
- enFormDeture,
- enFormFixed,
- enFormBase,
- enFormCongest,
- } EN_FORM_TYPE;
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- class TVmsIfscRltn
- {
- public:
- TVmsIfscRltn();
- ~TVmsIfscRltn();
- public:
- int VMS_CTLR_NMBR; //NUMBER(10) N VMS 제어기 번호
- int VMS_IFSC_ID; //NUMBER(10) N VMS 정보제공구간 ID
- int DSPL_PRRT; //NUMBER(2) Y 표출 우선순위
- };
- //---------------------------------------------------------------------------
- typedef struct tagVmsPhase
- {
- int DSPL_HH; //표출시간
- String DNLD_YN; //다운로드성공여부
- String DSPL_CD; //표출방법
- Graphics::TBitmap *pVmsBmp; //표출메시지(Bitmap 이미지)
- } VMS_PHASE;
- class TVmsMsg
- {
- public:
- TVmsMsg();
- ~TVmsMsg();
- public:
- void Init();
- int Total; //전체메시지 갯수
- int Curr; //현재표출갯수(사용안함)
- String OFFER_DT; //제공시각
- bool OFFER_YN; //정시제공여부(true:정시제공,false:5분이상이전제공데이터)
- VMS_PHASE PHASE[INT_MAX_VMS_FORM];
- };
- //---------------------------------------------------------------------------
- typedef struct tagWinVmsState
- {
- BYTE OprMode; /* VMS운영모드, 0:auto, 1:Fix */
- BYTE Comm; /* 유선통신상태, 0:정상 1:장애 */
- BYTE Wcomm; /* 무선통신상태, 0:정상 1:장애 */
- BYTE DoorStatus; /* 도어상태정보코드, 0:열림 1:닫힘 2:알수없음 */
- BYTE ModulePowerStatus; /* 모듈전원상태정보코드, 0:켜짐 1:꺼짐 2:알수없음 */
- short BodyTemp; /* 함체온도값(℃), 범위(-128~127) */
- BYTE LuminanceStatus; /* 화면의 밝기값 (최대 휘도값을 100으로 했을 때의 백분율 값), 범위(0~100) */
- BYTE FanStatus; /* Fan 동작상태정보코드, 0:켜짐, 1:꺼짐 2:알수없음 */
- BYTE HeaterStatus; /* Heater 동작상태정보코드, 0:켜짐, 1:꺼짐 2:알수없음 */
- BYTE ExternalLightStatus; /* 선택 외부조명 동작상태정보코드 0:켜짐, 1:꺼짐, 2:자동(공단은 미사용) */
- BYTE AlarmLightStatus; /* 선택 경광등 동작상태정보코드 0:켜짐, 1:꺼짐 */
- BYTE SpeakerStatus; /* 선택 스피커 동작상태정보코드 0:켜짐, 1:꺼짐 */
- BYTE ControllerCurrentTime[INT_VMS_MAX_DATETIME]; /* 선택 제어기 시간 (YYYYMMDDHHMMSS) */
- BYTE Voltage; /* 전압, 범위(0~255), 사용안함 */
- BYTE ModuleState; /* 모듈 상태, 0:정상 1:장애 2:알수없음 */
- BYTE ModuleHorizontal; /* 가로 모듈수 */
- BYTE ModuleVertical; /* 세로 모듈수 */
- BYTE ModuleStatus[INT_VMS_MAX_MODULE_BIT]; /* 모듈 개별 상태, 0:정상 1:장애 2:알수없음 */
- BYTE PowerCount; /* 전원 갯수 */
- BYTE PowerStatus[INT_VMS_MAX_POWER_BIT]; /* 전원 개별 상태, 0:켜짐 1:꺼짐 2:알수없음 */
- short ScheduledMessageOperatingTime; /* 필수 계획된 메시지의 동작시간(초) */
- short ModuleOperatingTemperature; /* 필수 모듈 전원이 꺼지는 온도값(℃) */
- short FanOperatingTemperature; /* 필수 Fan 동작 기준 온도값(℃) */
- short HeaterOperatingTemperature; /* 필수 Heater 동작 기준 온도값(℃) */
- short ExternalLightOperatingLuminance; /* 선택 외부전등 동작 기준 휘도값 */
- short ModuleBasicFailureRate; /* 선택 모듈 장애율 (한 개의 모듈을 장애로 처리하기 위한 픽셀의 백분율값) */
- short MaximumRetry; /* 선택 최대 재시도 횟수(회) */
- short ResponseTimeOut; /* 선택 최대응답대기시간 (초) */
- short BlinkingCycleTime; /* 선택 점멸시간 주기 ( 1/10초단위) */
- } WIN_VMS_STATE;
- class TVmsCtlr
- {
- public:
- TVmsCtlr();
- ~TVmsCtlr();
- private:
- CRITICAL_SECTION FCS;
- bool FCompleted;
- int FEditMode;
- int FGridIndex;
- String FMEM_DEL;
- public:
- int VMS_CTLR_NMBR; // NUMBER(10); // VMS 제어기 번호
- String VMS_ID; // VARCHAR2(4) Y VMS ID
- String VMS_CTLR_ID; // VARCHAR2(30) Y VMS 제어기 ID
- String VMS_NM; // VARCHAR2(40) Y VMS 명
- String VMS_CTLR_IP; // VARCHAR2(20) Y VMS 제어기 아이피
- String VMS_CMNC_PORT; // VARCHAR2(5) Y VMS 통신 포트
- String VMS_USAG_TYPE_CD; // VARCHAR2(7) Y VMS 용도 유형 코드
- String VMS_FRM_TYPE_CD; // VARCHAR2(7) Y VMS 형식 유형 코드
- String VMS_TYPE_CD; // VARCHAR2(7) Y VMS 유형 코드
- String VMS_MODL_TYPE_CD; // VARCHAR2(7) Y VMS 모듈 유형 코드
- String OPER_MODE; // VARCHAR2(7) Y 운영 모드
- int VMS_CMNC_ERR_BASS_VAL; // NUMBER(3) Y VMS 통신 오류 기본 값
- int VMS_NGHT_BRGH_STEP; // NUMBER(2) Y VMS 야간 휘도 단계
- int VMS_WEEK_BRGH_STEP; // NUMBER(2) Y VMS 주간 휘도 단계
- int VMS_PHSE_CHNG_CYCL; // NUMBER(3) Y VMS 표출면 변경 주기
- int VMS_MODL_ERR_RATE; // NUMBER(3) Y VMS 모듈 오류 율
- int VMS_MODL_CHK_CYCL; // NUMBER(3) Y 30 모듈체크주기(초)
- int CMNCFAIL_SLOT_NMBR; // NUMBER(4) Y 0 통신장애 SLOT 번호
- int PWER_FAIL_SLOT_NMBR; // NUMBER(4) Y 0 전원 장애 SLOT 번호
- String CMTRINFR_CNCT_YN; // CHAR(1) Y 'N' 소통정보 연계 여부
- String WTHRINFR_CNCT_YN; // CHAR(1) Y 'N' 기상정보 연계 여부
- String ENVRINFR_CNCT_YN; // CHAR(1) Y 'N' 환경정보 연계 여부
- int VMS_MAX_PHSE_NUM; // NUMBER(2) Y VMS 최대 표출면 개수
- String FRST_REGR_NMBR; // VARCHAR2(20) Y 최초 등록자 번호
- String FRST_RGST_DT; // VARCHAR2(14) Y 최초 등록 일시
- String LAST_CRPR_NMBR; // VARCHAR2(20) Y 최종 수정자 번호
- String LAST_CRCT_DT; // VARCHAR2(14) Y 최종 수정 일시
- String PANL_ON_TIME; // VARCHAR2(4) Y 전광판 ON TIME
- String PANL_OFF_TIME; // VARCHAR2(4) Y 전광판 OFF TIME
- String PANL_PWER_MODE; // VARCHAR2(7) Y 전광판 전원 모드
- String BRGH_MODE; // VARCHAR2(7) Y 휘도 모드
- String WEB_CMRA_IP; // VARCHAR2(20) Y 웹 카메라 아이피
- double X_CRDN; // NUMBER(11,8) Y X 좌표
- double Y_CRDN; // NUMBER(10,8) Y Y 좌표
- String ISTL_LCTN_NM; // VARCHAR2(40) Y 설치 위치 명
- String TRFC_STRG_USE_YN; // CHAR(1) Y 'N' 교통 전략 사용 여부
- String VMS_LOC_IFSC_ID; // NUMBER(10) Y VMS 위치 정보제공구간 ID
- int FAN_MTNS_TMPR; // NUMBER(6,3) Y 팬 동작 온도
- int HETR_MTNS_TMPR; // NUMBER(6,3) Y 히터 동작 온도
- int WEB_CMRA_PORT; // NUMBER(5) Y
- String WEB_CMRA_ID; // VARCHAR2(20) Y
- String WEB_CMRA_PWD; // VARCHAR2(20) Y
- String STRM_SESN_NM; // VARCHAR2(200) Y 스트리밍 세션 명
- String WEB_CMRA_CMPY;
- String WEB_CMRA_MDL;
- String DEL_YN; // CHAR(1) Y 'N' 삭제 여부
- int DEF_PHSE_CHNG_CYCL;
- //크기
- int WIDTH;
- int HEIGHT;
- int ModHorCnt;
- int ModVerCnt;
- int FormCnt[MAX_FORM_TYPE][2];
- TVmsMsg *VmsMsg;
- void *FData1;
- void *FData2;
- void *FData3;
- WIN_VMS_STATE WSTATE;
- int RunState;
- public:
- void Lock();
- void UnLock();
- void InitFormCount()
- {
- for (int ii = 0; ii < MAX_FORM_TYPE; ii++)
- {
- FormCnt[ii][0] = 0;
- FormCnt[ii][1] = 0;
- }
- };
- void CheckRunState();
- IntMap<TVmsIfscRltn> FIfscRltn;
- public:
- __property bool Completed = {read = FCompleted, write = FCompleted};
- __property int EditMode = {read = FEditMode, write = FEditMode };
- __property int GridIndex = {read = FGridIndex, write = FGridIndex };
- __property String MEM_DEL = {read = FMEM_DEL, write = FMEM_DEL };
- };
- //---------------------------------------------------------------------------
- typedef std::map<String, TVmsCtlr*>::iterator VmsIterator;
- //---------------------------------------------------------------------------
- class TVmsSize
- {
- public: // User declarations
- String TypeCd;
- String TypeNm;
- int Width;
- int Height;
- public: // User declarations
- TVmsSize();
- };
- //---------------------------------------------------------------------------
- class TVmsCtlrManager
- {
- public:
- TVmsCtlrManager();
- ~TVmsCtlrManager();
- private:
- TStream *FImgStream;
- public:
- StrMap<TVmsSize> FVmsSize;
- ListMap<TVmsCtlr> FLists;
- void InitFormCount();
- int FMinWidth, FMinHeight;
- int FMaxWidth, FMaxHeight;
- public:
- bool LoadVmsSize(TADOConnection *ADbConn=NULL);
- bool LoadFromDb(TADOConnection *ADbConn=NULL);
- bool LoadVmsStatusFromDb(TADOConnection *ADbConn=NULL);
- bool DeleteVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
- bool InsertVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
- bool UpdateVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
- bool MergeVms(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
- bool MergeFcltInfo(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
- bool GetNextVmsId(int &ANmbr, int &AId, TADOConnection *ADbConn=NULL);
- bool UpdateCtlrInfo(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
- bool LoadIfscRltn(TADOConnection *ADbConn=NULL);
- bool SaveIfscRltn(TVmsCtlr *AObj, TADOConnection *ADbConn=NULL);
- bool LoadVmsMsg(TADOConnection *ADbConn=NULL);
- bool LoadVmsFormUsage(TADOConnection *ADbConn=NULL);
- bool InsVmsControlHs(String ACtlDt, String AVmsNmbr, String ACtlType, String ACtlVal, String ACtlRes, String AUserId, TADOConnection *ADbConn=NULL);
- };
- //---------------------------------------------------------------------------
- extern TVmsCtlrManager *VmsManager;
- //---------------------------------------------------------------------------
- void VmsInitStatus(WIN_VMS_STATE *AState);
- void VmsStatusCopy(WIN_VMS_STATE *AState, INT_VMS_STATE *ASrc);
- //---------------------------------------------------------------------------
- #endif
|