//--------------------------------------------------------------------------- #include #include "AppGlobalF.h" #include "ITSSkinF.h" #include "ITSUtilF.h" #pragma hdrstop #include "FrmInitializeF.h" // ÇÁ·Î±×·¥ ÃʱâÈ­È­¸é #include "FrmVmsControlF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxEdit" #pragma link "cxGraphics" #pragma link "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxPC" #pragma link "cxPCdxBarPopupMenu" #pragma link "cxSplitter" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinCaramel" #pragma link "dxSkinCoffee" #pragma link "dxSkinDarkRoom" #pragma link "dxSkinDarkSide" #pragma link "dxSkinFoggy" #pragma link "dxSkinGlassOceans" #pragma link "dxSkiniMaginary" #pragma link "dxSkinLilian" #pragma link "dxSkinLiquidSky" #pragma link "dxSkinLondonLiquidSky" #pragma link "dxSkinMcSkin" #pragma link "dxSkinMoneyTwins" #pragma link "dxSkinOffice2007Black" #pragma link "dxSkinOffice2007Blue" #pragma link "dxSkinOffice2007Green" #pragma link "dxSkinOffice2007Pink" #pragma link "dxSkinOffice2007Silver" #pragma link "dxSkinOffice2010Black" #pragma link "dxSkinOffice2010Blue" #pragma link "dxSkinOffice2010Silver" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma link "dxSkinSeven" #pragma link "dxSkinSharp" #pragma link "dxSkinSilver" #pragma link "dxSkinStardust" #pragma link "cxClasses" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxFilter" #pragma link "cxGrid" #pragma link "cxGridCustomTableView" #pragma link "cxGridCustomView" #pragma link "cxGridLevel" #pragma link "cxGridTableView" #pragma link "cxStyles" #pragma link "cxTextEdit" #pragma link "cxGridCardView" #pragma link "cxGridCustomLayoutView" #pragma link "cxCheckBox" #pragma link "cxDropDownEdit" #pragma link "cxImage" #pragma link "cxButtons" #pragma link "cxCalc" #pragma link "cxGridBandedTableView" #pragma link "FRAME_VmsStateF" #pragma link "FRAME_VmsStateF" #pragma link "FRAME_VmsMsgListF" #pragma link "ImageBtn" #pragma link "cxMaskEdit" #pragma link "cxRadioGroup" #pragma link "cxSpinEdit" #pragma link "cxTimeEdit" #pragma link "IdBaseComponent" #pragma link "IdComponent" #pragma link "IdIcmpClient" #pragma link "IdRawBase" #pragma link "IdRawClient" #pragma link "FFBaseComponent" #pragma link "FFBasePlay" #pragma link "FFPlay" #pragma link "IdHTTP" #pragma link "IdTCPClient" #pragma link "IdTCPConnection" #pragma link "dxSkinsForm" #pragma link "IdCoder" #pragma link "IdCoder00E" #pragma link "IdCoder3to4" #pragma link "IdCoderMIME" #pragma link "IdCoderUUE" #pragma resource "*.dfm" TFrmVmsControl *FrmVmsControl = NULL; #define LICENSE_KEY "FSXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX" //--------------------------------------------------------------------------- __fastcall TFrmVmsControl::TFrmVmsControl(TComponent* Owner) : TForm(Owner) { //::CoInitialize(NULL); Caption = g_AppCfg.sTitle + " - Active"; ITSSkin_Initialize(Application); CMM_SetFormPosition(g_AppCfg.bSaveForm); String sCaption = "0"; ReadConfigInfo(g_AppCfg.sConfigFile, "APPLICATION", "CAPTION", sCaption); ITSSkin_Caption(sCaption == "1" ? true : false); ITSSkin_Load(this); LoadLocalSkin(); FTitle = Caption;//"VMS Æû°ü¸®"; //if (FormStyle != fsMDIChild) CMM_LoadForm(g_sFormsDir, this); FPalyerForm = NULL; FSelVmsObj = NULL; TvList->OptionsView->Footer = false; Col04->Visible = false; Col05->Visible = false; Col06->Visible = true; ColumnSel->Visible = true; cxTabSheet5->TabVisible = false; cxTabSheet5->Visible = false; cxTabSheet1->TabVisible = false; cxTabSheet1->Visible = false; cxTabSheet6->TabVisible = false; cxTabSheet6->Visible = false; PgControl->ActivePageIndex = 0; FVmsIds = new TStringList(); FTitle = Caption;//"VMS Á¦¾î"; FCtrlTab = NULL; PgCam->Properties->HideTabs = true; PnlCamera->ParentColor = false; FStrmPlay = false; reMsg->Lines->Clear(); String sAVILibDir = g_sAppDir + "LibAV"; FFPlayer1->SetLicenseKey(LICENSE_KEY); FFPlayer1->DisableFPUExceptions(); if (!FFPlayer1->LoadAVLib(sAVILibDir)) { reMsg->Lines->Add("¿µ»óÇ¥Ãâ ¶óÀ̺귯¸® ÃʱâÈ­ ½ÇÆÐ."); #if 0 if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Stream display library load failed.", L"Stream display fail", MB_OK|MB_ICONERROR|MB_APPLMODAL); else Application->MessageBox(L"¿µ»óÇ¥Ãâ ¶óÀ̺귯¸®¸¦ ·ÎµåÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.", L"¿µ»óÇ¥Ãâ ¿À·ù", MB_OK|MB_ICONERROR|MB_APPLMODAL); #endif } reMsg->Lines->Clear(); SetColorScheme(g_AppCfg.sSkinName); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::SetColorScheme(String ASkinName) { dxSkinController1->SkinName = ASkinName; dxSkinController1->Refresh(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::CommClose() { try { WebCamStop(); SAFE_DELETE(FVmsIds); //if (FormStyle != fsMDIChild) CMM_SaveForm(g_sFormsDir, this); FStrmPlay = false; //::CoUninitialize(); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::FormShow(TObject *Sender) { TmrShow->Enabled = true; Refresh(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::FormActivate(TObject *Sender) { ActivateForm(true); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::FormDeactivate(TObject *Sender) { ActivateForm(false); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::LoadLocalSkin() { PnlVmsCam->ParentColor = false; PnlVmsCam->Color = clBlack; PnlSamsung->ParentColor = false; PnlSamsung->Color = clBlack; Refresh(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; TFrmInitialize *FrmInitialize = new TFrmInitialize(this); FrmInitialize->FThreadId = g_AppCfg.thr.dwThreadId; FrmInitialize->ShowModal(); UpdateList(); CxList->Enabled = false; UpdatePingList(); CxList->Enabled = true; TmrRefreshStatus->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::FormClose(TObject *Sender, TCloseAction &Action) { try { CommClose(); FrmVmsControl = NULL; Action = caFree; } catch(...) {} } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::OnMainFormMessage(TMessage &Msg) { } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::OnVmsStateRefreshMessage(TMessage &Msg) { RefreshStatus(); RefreshPingList(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::OnVmsFormRefreshMessage(TMessage &Msg) { } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::OnVmsSelectMessage(TMessage &Msg) { #if 0 try { FSelVmsObj = (TVmsCtlr*)Msg.WParam; FRAMEVmsState1->SelVmsObj = FSelVmsObj; if (!FSelVmsObj) return; TVMSWCAM0 *pSelForm = (TVMSWCAM0*)Msg.LParam; if (pSelForm == FSelForm) return; if (FSelForm) FSelForm->SelectForm(false); FSelForm = pSelForm; if (FSelForm) FSelForm->SelectForm(true); //VMSÁ¤º¸Á¦°ø±¸°£ ¼ÒÅëÁ¤º¸ ¾÷µ¥ÀÌÆ® LoadVmsMsgScenario((FSelVmsObj->VMS_CTLR_NMBR)); } catch(...) {}; #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::ActivateForm(bool AActivate) { //TODO: ±âÁ¸¿¡´Â ¾Æ·¡°¡ ÁÖ¼®À¸·Î ¸·Çô ÀÖ¾úÀ½. ¿Ö±×·¯Áö? if (AActivate) RefreshStatus(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::DisplayInfo() { FSelVmsObj = NULL; PnlVms->Caption = " " + lblSelVms->Caption + " -";//" Select VMS: -"; TcxDataController *pGDC = TvList->DataController; int nSelIdx = CMM_GetRecordIndex(TvList); if (nSelIdx < 0) return; String sVmsNmbr = VarToStr(pGDC->Values[nSelIdx][Col01->Index]); int nMemPtr = (int)pGDC->Values[nSelIdx][Col99->Index]; FSelVmsObj = (TVmsCtlr*)nMemPtr; if (!FSelVmsObj) return; PnlVms->Caption = " " + lblSelVms->Caption + " [" + FSelVmsObj->VMS_CTLR_ID + "] " + FSelVmsObj->VMS_NM; try { if (FSelVmsObj->PANL_ON_TIME.Length() == 4) // ÀüÆÎ°üON½Ã°¢ { String sPowerOnTime = FSelVmsObj->PANL_ON_TIME; sPowerOnTime.Insert(":", 3); cxTimeOn->EditValue = sPowerOnTime; cxDispStrTm->EditValue = sPowerOnTime; cxDisplayTimeOn->EditValue = sPowerOnTime; } if (FSelVmsObj->PANL_OFF_TIME.Length() == 4) // Àü±¤ÆÇOFF½Ã°¢ { String sPowerOffTime = FSelVmsObj->PANL_OFF_TIME; sPowerOffTime.Insert(":", 3); cxTimeOff->EditValue = sPowerOffTime; cxDispEndTm->EditValue = sPowerOffTime; cxDisplayTimeOff->EditValue = sPowerOffTime; } Se01->Value = 0;//FSelVmsObj->STATE.ScheduledMessageOperatingTime;/* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ Se02->Value = 0;//FSelVmsObj->STATE.ModuleOperatingTemperature; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ Se03->Value = FSelVmsObj->FAN_RUN_TMPR.ToIntDef(0); /* Çʼö Fan µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ Se04->Value = FSelVmsObj->HETR_RUN_TMPR.ToIntDef(0); /* Çʼö Heater µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ Se05->Value = FSelVmsObj->MODL_ERR_RATE.ToIntDef(0); /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ Se06->Value = 3; Se07->Value = 30; SeCurrBrgh->Value = FSelVmsObj->BRGH_CURR_STEP.ToIntDef(0); //ÈÖµµ ÇöÀç ´Ü°è(0~100) SeWeekBrgh->Value = FSelVmsObj->BRGH_WEEK_STEP.ToIntDef(0); //ÈÖµµ ÁÖ°£ ´Ü°è(0~100) SeNghtBrgh->Value = FSelVmsObj->BRGH_NGHT_STEP.ToIntDef(0); //ÈÖµµ ¾ß°£ ´Ü°è(0~100) SeCommErrTime->Value = 60; //FSelVmsObj->VMS_CMNC_ERR_BASS_VAL; //Åë½ÅÀå¾Ö ±âº»°ª(Default=60ÃÊ) SeSlotCommErr->Value = 0; //FSelVmsObj->CMNCFAIL_SLOT_NMBR = (int)pReq->SlotCommErr; // NUMBER(4) Y 0 Åë½ÅÀå¾Ö SLOT ¹øÈ£ SeSlotPowerErr->Value = 0; //FSelVmsObj->PWER_FAIL_SLOT_NMBR = (int)pReq->SlotPowerErr; // NUMBER(4) Y 0 Àü¿ø Àå¾Ö SLOT ¹øÈ£ #if 0 SeLumNight->Value = FSelVmsObj->VMS_NGHT_BRGH_STEP; SeLumDay->Value = FSelVmsObj->VMS_WEEK_BRGH_STEP; SeModRate->Value = FSelVmsObj->VMS_MODL_ERR_RATE; SeModCycle->Value = FSelVmsObj->VMS_MODL_CHK_CYCL; SeMsgTime->Value = FSelVmsObj->DEF_PHSE_CHNG_CYCL; SeFormCycleTime->Value = FSelVmsObj->VMS_PHSE_CHNG_CYCL; #endif } catch(Exception &e) { } try { reMsg->Lines->Clear(); WebCamPlay((FSelVmsObj->VMS_CTLR_NMBR)); } catch(Exception &e) { } BtnWebCamUrl->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnAllSelectClick(TObject *Sender) { TcxButton *pBtn = (TcxButton*)Sender; if (PgControl->Properties->ActivePage != TabPing) CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag); else CMM_CheckAllListItem(TvPing, PColumnSel->Index, pBtn->Tag); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::ClearCheckList() { TcxDataController *pGDC = TvList->DataController; try { TvList->BeginUpdate(); pGDC->BeginUpdate(); int nRows = pGDC->RecordCount; for (int ii = 0; ii < nRows; ii++) { pGDC->Values[ii][ColumnSel->Index] = false; } } __finally { pGDC->EndUpdate(); TvList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::Se01PropertiesChange(TObject *Sender) { #if 1 if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue; else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue && ((TcxSpinEdit*)Sender)->Properties->MaxValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue; #endif } //--------------------------------------------------------------------------- int __fastcall TFrmVmsControl::GetSelListItems(bool ACommCheck/*=true*/) { TcxDataController *pGDC = TvList->DataController; FVmsIds->Clear(); try { bool bSelected; int nRows = TvList->ViewData->RecordCount; TvList->BeginUpdate(); for (int ii = 0; ii < nRows; ii++) { TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii]; int nMemPtr = (int)ARow->Values[Col99->Index]; TVmsCtlr *pVms = (TVmsCtlr*)nMemPtr; if (!pVms) continue; bSelected = (bool)ARow->Values[ColumnSel->Index]; if (bSelected) { String sVmsNmbr = ARow->Values[Col01->Index]; //VMS¹øÈ£ if (ACommCheck) { if (pVms->STTS->CMNC_STTS_CD == "CMS0") { FVmsIds->Add(sVmsNmbr); } } else { FVmsIds->Add(sVmsNmbr); } } } } __finally { TvList->EndUpdate(); } return FVmsIds->Count; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnControlClick(TObject *Sender) { #if 0 //Àü±¤ÆÇÁ¦¾î String sTitle = cxLabel1->Caption;//"Àü±¤ÆÇ/Á¦¾î±â Á¦¾î"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx; if (RdbOn->Checked) { nCmdIdx = 1;//vms_req_board_power_on; sMsg = cxLabel3->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS Àü±¤ÆÇ Àü¿ø ON ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } else if (RdbOff->Checked) { nCmdIdx = 0;//vms_req_board_power_off; sMsg = cxLabel4->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS Àü±¤ÆÇ Àü¿ø OFF ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } else if (RdbReset->Checked) { nCmdIdx = 2; sMsg = cxLabel5->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS Á¦¾î±â ¸®¼Â ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } else if (RdbLuminance->Checked) { nCmdIdx = 3; sMsg = cxLabel6->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS ÈÖµµ°ª Á¦¾î ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; String sCmdTime = Now().FormatString("yyyymmddhhnnss"); int result; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; if (nCmdIdx == vms_req_board_power_on || nCmdIdx == vms_req_board_power_off) { // Àü±¤ÆÇ On(=0)/Off(=1) INT_VMS_POWER_CTL_REQ VmsPowerCtl; BYTE MsgSeq; memset(&VmsPowerCtl, 0x00, sizeof(VmsPowerCtl)); MsgSeq = (BYTE)0x10; // Á¦¾î¸í·É ÀϷùøÈ£-°á°ú°ªÀ» ¹Þ¾Æ¼­ ó¸®ÇÒ¶§ ÇÊ¿äÇÔ memcpy(VmsPowerCtl.CmdTime, AnsiString(sCmdTime).c_str(), INT_VMS_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(VmsPowerCtl.OperId, AnsiString(sCmdUser).c_str(), INT_VMS_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ VmsPowerCtl.VMS_CTLR_NMBR = sVmsNmbr.ToIntDef(0); VmsPowerCtl.Command = (BYTE)nCmdIdx; /* Á¦¾î ±¸ºÐ, 1:ÄÑÁü 2:²¨Áü */ String sOprCode = (nCmdIdx == vms_req_board_power_on) ? "V01" : "V02"; String sCmdValue = (nCmdIdx == vms_req_board_power_on) ? "On" : "Off"; result = CComm_VmsPowerControlReq(&VmsPowerCtl, MsgSeq); if (VERR_NONE == result) { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, sOprCode, sCmdValue, "1", sCmdUser); nOkCnt++; } else { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, sOprCode, sCmdValue, "0", sCmdUser); } } else if (nCmdIdx == 2) { // Á¦¾î±â ¸®¼Â INT_VMS_RESET_REQ VmsReset; BYTE MsgSeq; memset(&VmsReset, 0x00, sizeof(VmsReset)); MsgSeq = (BYTE)0x20; memcpy(VmsReset.CmdTime, AnsiString(sCmdTime).c_str(), INT_VMS_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(VmsReset.OperId, AnsiString(sCmdUser).c_str(), INT_VMS_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ VmsReset.VMS_CTLR_NMBR = sVmsNmbr.ToIntDef(0); result = CComm_VmsResetReq(&VmsReset, MsgSeq); if (VERR_NONE == result) { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V03", "Reset", "1", sCmdUser); nOkCnt++; } else { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V03", "Reset", "0", sCmdUser); } } else if (nCmdIdx == 3) { // ÈÖµµÁ¦¾î INT_VMS_LUMINANCE_REQ VmsLuminance; BYTE MsgSeq; String sCmdValue = SeLuminance->Value; memset(&VmsLuminance, 0x00, sizeof(VmsLuminance)); MsgSeq = (BYTE)0x30; memcpy(VmsLuminance.CmdTime, AnsiString(sCmdTime).c_str(), INT_VMS_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(VmsLuminance.OperId, AnsiString(sCmdUser).c_str(), INT_VMS_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ VmsLuminance.VMS_CTLR_NMBR = sVmsNmbr.ToIntDef(0); switch(CbBrghMode->ItemIndex) { case 0: VmsLuminance.BrghMode = 0x00; break; case 1: VmsLuminance.BrghMode = 0x01; break; case 2: VmsLuminance.BrghMode = 0x02; break; case 3: VmsLuminance.BrghMode = 0x09; break; } VmsLuminance.BrghCurrStep = (BYTE)SeCurrBrgh->Value; VmsLuminance.BrghWeekStep = (BYTE)SeWeekBrgh->Value; VmsLuminance.BrghNghtStep = (BYTE)SeNghtBrgh->Value; result = CComm_VmsLuminanceReq(&VmsLuminance, MsgSeq); if (VERR_NONE == result) { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V07", sCmdValue, "1", sCmdUser); nOkCnt++; } else { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V07", sCmdValue, "0", sCmdUser); } } Sleep(100); Application->ProcessMessages(); } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS·Î Àü±¤ÆÇ/Á¦¾î±â Á¦¾î ¸í·ÉÀ» ¿äûÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel8->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnConfigClick(TObject *Sender) { //Á¦¾î±âÇÔüȯ°æ¼³Á¤ int nVal03 = Se03->Value; int nVal04 = Se04->Value; int nStrTmHour = cxDispStrTm->Time.FormatString("HH").ToIntDef(0); int nStrTmMin = cxDispStrTm->Time.FormatString("NN").ToIntDef(0); int nEndTmHour = cxDispEndTm->Time.FormatString("HH").ToIntDef(0); int nEndTmMin = cxDispEndTm->Time.FormatString("NN").ToIntDef(0); String sTitle = cxLabel10->Caption;//"VMS ÇÔüȯ°æ ¼³Á¤"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel2->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } if ((nStrTmHour*60 + nStrTmMin) > (nEndTmHour*60 + nEndTmMin)) { sMsg = "Àü±¤ÆÇ °¡µ¿Á¾·á½Ã°¢ÀÌ Àü±¤ÆÇ °¡µ¿½ÃÀ۽𢺸´Ù Ŭ ¼ö ¾ø½À´Ï´Ù.\r\nÀü±¤ÆÇ °¡µ¿½Ã°¢À» È®ÀÎÇϼ¼¿ä."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sDispStrTm; String sDispEndTm; sDispStrTm.printf(L"%02d%02d", nStrTmHour, nStrTmMin); sDispEndTm.printf(L"%02d%02d", nEndTmHour, nEndTmMin); int nCmdIdx = 0; sMsg = cxLabel11->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ ÇÔüȯ°æ ¼³Á¤ ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; bool result = VmsCtlrManager->ParamSet(sCmdUser, sVmsNmbr, nVal03, nVal04, sDispStrTm, sDispEndTm); if (result) { TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sVmsNmbr); if (pObj) { pObj->FAN_RUN_TMPR = String(nVal03); pObj->HETR_RUN_TMPR = String(nVal04); pObj->PANL_ON_TIME = sDispStrTm; pObj->PANL_OFF_TIME = sDispEndTm; } nOkCnt++; } Sleep(100); Application->ProcessMessages(); } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS ÇÔüȯ°æ ¼³Á¤ ¸í·ÉÀ» ¿äûÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel12->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); RefreshStatus(); } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsControl::UpdateVmsParam(String AVmsNmbr, void *pData) { #if 0 String sQry; TADOQuery *pADO = NULL; int nCnt = 0; INT_VMS_PARA_SET_REQ *pReq = (INT_VMS_PARA_SET_REQ*)pData; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET FAN_RUN_TMPR = :p02, \r\n" " HETR_RUN_TMPR = :p03, \r\n" " PANL_ON_TIME = :p04, \r\n" " PANL_OFF_TIME = :p05 \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n"; try { try { String sFanRunTmpr; String sHetrRunTmpr; String sDispStrTm; String sDispEndTm; char szTemp[20]; sFanRunTmpr.printf(L"%d", pReq->FanRunTmpr); sHetrRunTmpr.printf(L"%d", pReq->HetrRunTmpr); memset(szTemp, 0x00, sizeof(szTemp)); sprintf(szTemp, "%4.4s", (char*)pReq->DispStrTm); sDispStrTm = String(szTemp); memset(szTemp, 0x00, sizeof(szTemp)); sprintf(szTemp, "%4.4s", (char*)pReq->DispEndTm); sDispEndTm = String(szTemp); pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AVmsNmbr; pADO->Parameters->ParamByName("p02")->Value = sFanRunTmpr; pADO->Parameters->ParamByName("p03")->Value = sHetrRunTmpr; pADO->Parameters->ParamByName("p04")->Value = sDispStrTm; pADO->Parameters->ParamByName("p05")->Value = sDispEndTm; nCnt = pADO->ExecSQL(); } catch(EDatabaseError &E) { DBERRORLOG("TVMS0500M::UpdateVmsParam", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVMS0500M::UpdateVmsParam", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return nCnt > 0 ? true : false; #endif return false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnOnOffSetClick(TObject *Sender) { #if 0 //Àü±¤ÆÇON/OFF½Ã°¢¼³Á¤ String sTitle = cxLabel13->Caption;//"Àü±¤ÆÇ ON/OFF ½Ã°¢ ¼³Á¤"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel14->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx = 0; sMsg = cxLabel15->Caption;//"¼±ÅÃÇϽŠVMSÀÇ Àü±¤ÆÇ ON/OFF ½Ã°¢À» ¼³Á¤ ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sQry; TADOQuery *pADO = NULL; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET PANL_ON_TIME = :p02, \r\n" " PANL_OFF_TIME = :p03 \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n"; String PANL_ON_TIME = cxTimeOn->Time.FormatString("HHNN"); String PANL_OFF_TIME = cxTimeOff->Time.FormatString("HHNN"); String LAST_CRPR_NMBR = g_AppCfg.sUserId; String LAST_CRCT_DT = Now().FormatString("yyyymmddhhnnss"); try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; pADO->Parameters->ParamByName("p01")->Value = sVmsNmbr; pADO->Parameters->ParamByName("p02")->Value = PANL_ON_TIME; pADO->Parameters->ParamByName("p03")->Value = PANL_OFF_TIME; pADO->ExecSQL(); nOkCnt++; TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sVmsNmbr); if (pObj) { pObj->PANL_ON_TIME = PANL_ON_TIME; pObj->PANL_OFF_TIME = PANL_OFF_TIME; } } } catch(EDatabaseError &E) { DBERRORLOG("TVMS0500M::BtnOnOffSetClick", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVMS0500M::BtnOnOffSetClick", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS·Î Àü±¤ÆÇ ON/OFF ½Ã°¢ ¼³Á¤À» ¿äûÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel16->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; VmsCtlrManager->InsVmsControlHs(LAST_CRCT_DT, sVmsNmbr, "V05", PANL_ON_TIME+" "+PANL_OFF_TIME, "1", LAST_CRPR_NMBR); } //RefreshStatus(); //FrmVmsOprMain->RefreshVmsMessage(WM_VMS_STATE_REFRESH); #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnModeControlClick(TObject *Sender) { //VMS ¿î¿µ¸ðµå º¯°æ String sTitle = cxLabel17->Caption;//"VMS ¿î¿µ¸ðµå º¯°æ"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel14->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx = 0; sMsg = cxLabel18->Caption;//"¼±ÅÃÇϽŠVMSÀÇ ¿î¿µ¸ðµå¸¦ º¯°æ ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String OPER_MODE; String OPER_MODE_DESC; if (RdbAuto->Checked) { OPER_MODE = "A"; OPER_MODE_DESC = "ÀÚµ¿"; } else if (RdbFix->Checked) { OPER_MODE = "F"; OPER_MODE_DESC = "°íÁ¤"; } else if (RdbBase->Checked) { OPER_MODE = "B"; OPER_MODE_DESC = "±âº»"; } String sCmdUser = g_AppCfg.sUserId; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; bool result = VmsCtlrManager->OperModeSet(sCmdUser, sVmsNmbr, OPER_MODE); if (result) { TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sVmsNmbr); if (pObj) { pObj->OPER_MODE = OPER_MODE; pObj->OPER_MODE_DESC = OPER_MODE_DESC; } nOkCnt++; } Sleep(100); Application->ProcessMessages(); } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS ¿î¿µ¸ðµå¸¦ º¯°æÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel19->Caption;//; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); //TmrRefreshStatus->Enabled = false; //TmrRefreshStatus->Interval = 5000; //TmrRefreshStatus->Enabled = true; RefreshStatus(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnWebCamUrlClick(TObject *Sender) { if (FSelVmsObj) { if (FSelVmsObj->WEB_CMRA_IP.Trim() != "") { String sUrl = "http://" + FSelVmsObj->WEB_CMRA_IP.Trim(); if (FSelVmsObj->WEB_CMRA_PORT != "") { sUrl = sUrl + ":" + FSelVmsObj->WEB_CMRA_PORT; } ShellExecute(NULL, NULL, sUrl.c_str(), NULL, NULL, 0); } } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnDefaultMsgClick(TObject *Sender) { #if 0 TcxButton *pBtn = (TcxButton*)Sender; String sTitle = pBtn->Caption.Trim(); String sMsg = ""; String sCmd = ""; String sCmdValue; BYTE ucCommand; int nOkCnt = 0; int nSelCnt = GetSelListItems(true); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } if (pBtn->Tag == 0) { // Default Msg Display sMsg = cxLabel20->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ ±âº»¸Þ½ÃÁö Ç¥Ãâ ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; sCmd = "V11"; sCmdValue = "D"; ucCommand = 0x55; } else { // Blank Display sMsg = cxLabel21->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ Blank Ç¥Ãâ ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; sCmd = "V12"; sCmdValue = "B"; ucCommand = 0x54; } if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; String sCmdTime = Now().FormatString("yyyymmddhhnnss"); int result; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; INT_VMS_DIRECT_CTL_REQ directCmd; BYTE MsgSeq; memset(&directCmd, 0x00, sizeof(directCmd)); MsgSeq = (BYTE)0x60; memcpy(directCmd.CmdTime, AnsiString(sCmdTime).c_str(), INT_VMS_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(directCmd.VmsId, AnsiString(sVmsNmbr).c_str(), INT_VMS_MAX_ID); /* VMS Á¦¾î±â ¹øÈ£ */ memcpy(directCmd.OperId, AnsiString(sCmdUser).c_str(), INT_VMS_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ directCmd.Command = ucCommand; result = CComm_VmsDirectCmdReq(&directCmd, MsgSeq); if (VERR_NONE == result) { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, sCmd, sCmdValue, "1", sCmdUser); nOkCnt++; } else { //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, sCmd, sCmdValue, "0", sCmdUser); } Sleep(100); Application->ProcessMessages(); } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS¿¡ ¸í·ÉÀ» ¿äûÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel22->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnParamSettingClick(TObject *Sender) { #if 0 //Á¦¾î±âÇÔüȯ°æ¼³Á¤ int nCommErrTime = SeCommErrTime->Value;// = 60; //Åë½ÅÀå¾Ö ±âº»°ª(Default=60ÃÊ) int nSlotCommErr = SeSlotCommErr->Value;// = 0; //FSelVmsObj->CMNCFAIL_SLOT_NMBR = (int)pReq->SlotCommErr; // NUMBER(4) Y 0 Åë½ÅÀå¾Ö SLOT ¹øÈ£ int nSlotPowerErr = SeSlotPowerErr->Value;// = 0; //FSelVmsObj->PWER_FAIL_SLOT_NMBR = (int)pReq->SlotPowerErr; // NUMBER(4) Y 0 Àü¿ø Àå¾Ö SLOT ¹øÈ£ int nLumNight = SeLumNight->Value;// = FSelVmsObj->VMS_NGHT_BRGH_STEP; int nLumDay = SeLumDay->Value;// = FSelVmsObj->VMS_WEEK_BRGH_STEP; int nModErrRate = SeModRate->Value;// = FSelVmsObj->VMS_MODL_ERR_RATE; int nModChkCycle = SeModCycle->Value;// = FSelVmsObj->VMS_MODL_CHK_CYCL; int nPhaseCycle = SeMsgTime->Value;// = FSelVmsObj->DEF_PHSE_CHNG_CYCL; String sTitle = cxLabel23->Caption;//"VMS ÇÔüȯ°æ ¼³Á¤"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(true); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx = 0; sMsg = cxLabel24->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ ÇÔüȯ°æ ¼³Á¤ ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_pLOGIN->sUserId; String sCmdTime = Now().FormatString("yyyymmddhhnnss"); String sCmdValue; sCmdValue.printf(L"%d.%d,%d,%d,%d,%d,%d", nLumNight, nLumDay, nModErrRate, nModChkCycle, nPhaseCycle, nCommErrTime, nSlotCommErr); int result; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; INT_VMS_PARA_SET_REQ2 VmsPara; BYTE MsgSeq; memset(&VmsPara, 0x00, sizeof(VmsPara)); MsgSeq = (BYTE)0x40; memcpy(VmsPara.CmdTime, AnsiString(sCmdTime).c_str(), INT_VMS_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(VmsPara.VmsId, AnsiString(sVmsNmbr).c_str(), INT_VMS_MAX_ID); /* VMS Á¦¾î±â ¹øÈ£ */ memcpy(VmsPara.OperId, AnsiString(sCmdUser).c_str(), INT_VMS_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ VmsPara.DefCommErr = (BYTE)nCommErrTime; // Åë½ÅÀå¾Ö ±âº»°ª, Á¦¾î±â°¡ Host·ÎºÎÅÍ Poll ¶Ç´Â ¸í·ÉÀ» ¹ÞÁö ¾Ê°í °æ°úÇÒ ¼ö ÀÖ´Â ÃÖ´ë½Ã°£ (default ; 60ÃÊ) VmsPara.SlotCommErr = (short)nSlotCommErr; // Åë½ÅÀå¾Ö slot¹øÈ£, Åë½Å fail ½Ã Ç¥½ÃÇÒ ¸Þ½ÃÁö ¹øÈ£(default 0¹ø) VmsPara.SlotPowerErr = (short)nSlotPowerErr; // Àü¿øÀå¾Ö slot¹øÈ£, Àü¿øÀå¾Ö ½Ã Ç¥½ÃÇÒ ¸Þ½ÃÁö ¹øÈ£(default 0¹ø) VmsPara.NightLuminance = (BYTE)nLumNight; // ¾ß°£ ÈÖµµ °ª, 0x30 ~ 0x3F VmsPara.DayLuminance = (BYTE)nLumDay; // ÁÖ°£ ÈÖµµ °ª, 0x40 ~ 0x4F VmsPara.PhaseCycleTime = (BYTE)nPhaseCycle; // phase½Ã°£ÁÖ±â, Àå¾Ö½Ã phaseÁÖ±â (default : 3ÃÊ, ¹üÀ§ : 0 ~ 10ÃÊ) VmsPara.ModuleFailRate = (BYTE)nModErrRate; // ¸ðµâÀå¾ÖÀ², ÇѰ³ÀÇ moduleÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Àå¾Ö pixel¹éºÐÀ² (default 10%) VmsPara.ModuleCheckTime = (BYTE)nModChkCycle; // ¸ðµâ°¨½Ã ÁÖ±â, 0 ~ 255 (´ÜÀ§:ÃÊ) VmsPara.BoardOnHour = (BYTE)cxDisplayTimeOn->Time.FormatString("HH").ToIntDef(0); // Àü±¤ÆÇ On time(½Ã), 0½Ã ~ 23½Ã VmsPara.BoardOnMin = (BYTE)cxDisplayTimeOn->Time.FormatString("NN").ToIntDef(0); // Àü±¤ÆÇ On time(ºÐ), 0½Ã ~ 23½Ã VmsPara.BoardOffHour = (BYTE)cxDisplayTimeOff->Time.FormatString("HH").ToIntDef(0); // Àü±¤ÆÇ Off time(½Ã), 0½Ã ~ 23½Ã VmsPara.BoardOffMin = (BYTE)cxDisplayTimeOff->Time.FormatString("NN").ToIntDef(0); // Àü±¤ÆÇ Off time(ºÐ), 0½Ã ~ 23½Ã result = CComm_VmsParaSetReq2(&VmsPara, MsgSeq); if (VERR_NONE == result) { VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V04", sCmdValue, "1", sCmdUser); nOkCnt++; //Åë½ÅÀü¼ÛÈÄ ¹ÙÀÌÆ®¿À´õ¸µÀÌ ¹Ù²ï´Ù VmsPara.SlotCommErr = (short)nSlotCommErr; VmsPara.SlotPowerErr = (short)nSlotPowerErr; if (UpdateVmsParam2(sVmsNmbr, (void*)&VmsPara)) { TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sVmsNmbr); if (pObj) { #if 0 pObj->VMS_CMNC_ERR_BASS_VAL = (int)VmsPara.DefCommErr; pObj->CMNCFAIL_SLOT_NMBR = (int)VmsPara.SlotCommErr; // NUMBER(4) Y 0 Åë½ÅÀå¾Ö SLOT ¹øÈ£ pObj->PWER_FAIL_SLOT_NMBR = (int)VmsPara.SlotPowerErr; // NUMBER(4) Y 0 Àü¿ø Àå¾Ö SLOT ¹øÈ£ pObj->VMS_NGHT_BRGH_STEP = (int)VmsPara.NightLuminance; pObj->VMS_WEEK_BRGH_STEP = (int)VmsPara.DayLuminance; pObj->DEF_PHSE_CHNG_CYCL = (int)VmsPara.PhaseCycleTime; pObj->VMS_MODL_ERR_RATE = (int)VmsPara.ModuleFailRate; pObj->VMS_MODL_CHK_CYCL = (int)VmsPara.ModuleCheckTime; pObj->PANL_ON_TIME.printf(L"%02d%02d", (int)VmsPara.BoardOnHour, (int)VmsPara.BoardOnMin); pObj->PANL_OFF_TIME.printf(L"%02d%02d", (int)VmsPara.BoardOffHour, (int)VmsPara.BoardOffMin); pObj->DEF_PHSE_CHNG_CYCL = nPhaseCycle; pObj->STATE.ScheduledMessageOperatingTime = pObj->DEF_PHSE_CHNG_CYCL; /* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ //pObj->STATE.ModuleOperatingTemperature = pObj->VMS_CMNC_ERR_BASS_VAL; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ pObj->STATE.ModuleBasicFailureRate = pObj->VMS_MODL_ERR_RATE; /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ #endif } } } else { VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V04", sCmdValue, "0", sCmdUser); } Sleep(100); Application->ProcessMessages(); } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS ÇÔüȯ°æ ¼³Á¤ ¸í·ÉÀ» ¿äûÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel25->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); #if 0 //Á¦¾î±âÇÔüȯ°æ¼³Á¤ int nCommErrTime = SeCommErrTime->Value;// = 60; //Åë½ÅÀå¾Ö ±âº»°ª(Default=60ÃÊ) int nSlotCommErr = SeSlotCommErr->Value;// = 0; //FSelVmsObj->CMNCFAIL_SLOT_NMBR = (int)pReq->SlotCommErr; // NUMBER(4) Y 0 Åë½ÅÀå¾Ö SLOT ¹øÈ£ int nSlotPowerErr = SeSlotPowerErr->Value;// = 0; //FSelVmsObj->PWER_FAIL_SLOT_NMBR = (int)pReq->SlotPowerErr; // NUMBER(4) Y 0 Àü¿ø Àå¾Ö SLOT ¹øÈ£ int nLumNight = SeLumNight->Value;// = FSelVmsObj->VMS_NGHT_BRGH_STEP; int nLumDay = SeLumDay->Value;// = FSelVmsObj->VMS_WEEK_BRGH_STEP; int nModErrRate = SeModRate->Value;// = FSelVmsObj->VMS_MODL_ERR_RATE; int nModChkCycle = SeModCycle->Value;// = FSelVmsObj->VMS_MODL_CHK_CYCL; int nPhaseCycle = SeMsgTime->Value;// = FSelVmsObj->DEF_PHSE_CHNG_CYCL; String sTitle = cxLabel23->Caption;//"VMS ÇÔüȯ°æ ¼³Á¤"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(true); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx = 0; sMsg = cxLabel24->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ ÇÔüȯ°æ ¼³Á¤ ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_pLOGIN->sUserId; String sCmdTime = Now().FormatString("yyyymmddhhnnss"); String sCmdValue; sCmdValue.printf(L"%d.%d,%d,%d,%d,%d,%d", nLumNight, nLumDay, nModErrRate, nModChkCycle, nPhaseCycle, nCommErrTime, nSlotCommErr); int result; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; INT_VMS_PARA_SET_REQ2 VmsPara; BYTE MsgSeq; memset(&VmsPara, 0x00, sizeof(VmsPara)); MsgSeq = (BYTE)0x40; memcpy(VmsPara.CmdTime, AnsiString(sCmdTime).c_str(), INT_VMS_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(VmsPara.VmsId, AnsiString(sVmsNmbr).c_str(), INT_VMS_MAX_ID); /* VMS Á¦¾î±â ¹øÈ£ */ memcpy(VmsPara.OperId, AnsiString(sCmdUser).c_str(), INT_VMS_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ VmsPara.DefCommErr = (BYTE)nCommErrTime; // Åë½ÅÀå¾Ö ±âº»°ª, Á¦¾î±â°¡ Host·ÎºÎÅÍ Poll ¶Ç´Â ¸í·ÉÀ» ¹ÞÁö ¾Ê°í °æ°úÇÒ ¼ö ÀÖ´Â ÃÖ´ë½Ã°£ (default ; 60ÃÊ) VmsPara.SlotCommErr = (short)nSlotCommErr; // Åë½ÅÀå¾Ö slot¹øÈ£, Åë½Å fail ½Ã Ç¥½ÃÇÒ ¸Þ½ÃÁö ¹øÈ£(default 0¹ø) VmsPara.SlotPowerErr = (short)nSlotPowerErr; // Àü¿øÀå¾Ö slot¹øÈ£, Àü¿øÀå¾Ö ½Ã Ç¥½ÃÇÒ ¸Þ½ÃÁö ¹øÈ£(default 0¹ø) VmsPara.NightLuminance = (BYTE)nLumNight; // ¾ß°£ ÈÖµµ °ª, 0x30 ~ 0x3F VmsPara.DayLuminance = (BYTE)nLumDay; // ÁÖ°£ ÈÖµµ °ª, 0x40 ~ 0x4F VmsPara.PhaseCycleTime = (BYTE)nPhaseCycle; // phase½Ã°£ÁÖ±â, Àå¾Ö½Ã phaseÁÖ±â (default : 3ÃÊ, ¹üÀ§ : 0 ~ 10ÃÊ) VmsPara.ModuleFailRate = (BYTE)nModErrRate; // ¸ðµâÀå¾ÖÀ², ÇѰ³ÀÇ moduleÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Àå¾Ö pixel¹éºÐÀ² (default 10%) VmsPara.ModuleCheckTime = (BYTE)nModChkCycle; // ¸ðµâ°¨½Ã ÁÖ±â, 0 ~ 255 (´ÜÀ§:ÃÊ) VmsPara.BoardOnHour = (BYTE)cxDisplayTimeOn->Time.FormatString("HH").ToIntDef(0); // Àü±¤ÆÇ On time(½Ã), 0½Ã ~ 23½Ã VmsPara.BoardOnMin = (BYTE)cxDisplayTimeOn->Time.FormatString("NN").ToIntDef(0); // Àü±¤ÆÇ On time(ºÐ), 0½Ã ~ 23½Ã VmsPara.BoardOffHour = (BYTE)cxDisplayTimeOff->Time.FormatString("HH").ToIntDef(0); // Àü±¤ÆÇ Off time(½Ã), 0½Ã ~ 23½Ã VmsPara.BoardOffMin = (BYTE)cxDisplayTimeOff->Time.FormatString("NN").ToIntDef(0); // Àü±¤ÆÇ Off time(ºÐ), 0½Ã ~ 23½Ã result = CComm_VmsParaSetReq2(&VmsPara, MsgSeq); if (VERR_NONE == result) { VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V04", sCmdValue, "1", sCmdUser); nOkCnt++; //Åë½ÅÀü¼ÛÈÄ ¹ÙÀÌÆ®¿À´õ¸µÀÌ ¹Ù²ï´Ù VmsPara.SlotCommErr = (short)nSlotCommErr; VmsPara.SlotPowerErr = (short)nSlotPowerErr; if (UpdateVmsParam2(sVmsNmbr, (void*)&VmsPara)) { TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sVmsNmbr); if (pObj) { #if 0 pObj->VMS_CMNC_ERR_BASS_VAL = (int)VmsPara.DefCommErr; pObj->CMNCFAIL_SLOT_NMBR = (int)VmsPara.SlotCommErr; // NUMBER(4) Y 0 Åë½ÅÀå¾Ö SLOT ¹øÈ£ pObj->PWER_FAIL_SLOT_NMBR = (int)VmsPara.SlotPowerErr; // NUMBER(4) Y 0 Àü¿ø Àå¾Ö SLOT ¹øÈ£ pObj->VMS_NGHT_BRGH_STEP = (int)VmsPara.NightLuminance; pObj->VMS_WEEK_BRGH_STEP = (int)VmsPara.DayLuminance; pObj->DEF_PHSE_CHNG_CYCL = (int)VmsPara.PhaseCycleTime; pObj->VMS_MODL_ERR_RATE = (int)VmsPara.ModuleFailRate; pObj->VMS_MODL_CHK_CYCL = (int)VmsPara.ModuleCheckTime; pObj->PANL_ON_TIME.printf(L"%02d%02d", (int)VmsPara.BoardOnHour, (int)VmsPara.BoardOnMin); pObj->PANL_OFF_TIME.printf(L"%02d%02d", (int)VmsPara.BoardOffHour, (int)VmsPara.BoardOffMin); pObj->DEF_PHSE_CHNG_CYCL = nPhaseCycle; pObj->STATE.ScheduledMessageOperatingTime = pObj->DEF_PHSE_CHNG_CYCL; /* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ //pObj->STATE.ModuleOperatingTemperature = pObj->VMS_CMNC_ERR_BASS_VAL; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ pObj->STATE.ModuleBasicFailureRate = pObj->VMS_MODL_ERR_RATE; /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ #endif } } } else { VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V04", sCmdValue, "0", sCmdUser); } Sleep(100); Application->ProcessMessages(); } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS ÇÔüȯ°æ ¼³Á¤ ¸í·ÉÀ» ¿äûÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel25->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); #endif #endif } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsControl::UpdateVmsParam2(String AVmsNmbr, void *pData) { #if 0 String sQry; TADOQuery *pADO = NULL; int nCnt = 0; INT_VMS_PARA_SET_REQ2 *pReq = (INT_VMS_PARA_SET_REQ2*)pData; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET VMS_CMNC_ERR_BASS_VAL = :p02, \r\n" " CMNCFAIL_SLOT_NMBR = :p03, \r\n" " PWER_FAIL_SLOT_NMBR = :p04, \r\n" " VMS_NGHT_BRGH_STEP = :p05, \r\n" " VMS_WEEK_BRGH_STEP = :p06, \r\n" " VMS_MODL_ERR_RATE = :p07, \r\n" " VMS_MODL_CHK_CYCL = :p08, \r\n" " DEF_PHSE_CHNG_CYCL = :p09, \r\n" " PANL_ON_TIME = :p10, \r\n" " PANL_OFF_TIME = :p11 \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; String sOn, sOff; sOn.printf(L"%02d%02d", (int)pReq->BoardOnHour, (int)pReq->BoardOnMin); sOff.printf(L"%02d%02d", (int)pReq->BoardOffHour, (int)pReq->BoardOffMin); pADO->Parameters->ParamByName("p01")->Value = AVmsNmbr; pADO->Parameters->ParamByName("p02")->Value = (int)pReq->DefCommErr; pADO->Parameters->ParamByName("p03")->Value = (int)pReq->SlotCommErr; pADO->Parameters->ParamByName("p04")->Value = (int)pReq->SlotPowerErr; pADO->Parameters->ParamByName("p05")->Value = (int)pReq->NightLuminance; pADO->Parameters->ParamByName("p06")->Value = (int)pReq->DayLuminance; pADO->Parameters->ParamByName("p07")->Value = (int)pReq->ModuleFailRate; pADO->Parameters->ParamByName("p08")->Value = (int)pReq->ModuleCheckTime; pADO->Parameters->ParamByName("p09")->Value = (int)pReq->PhaseCycleTime; pADO->Parameters->ParamByName("p10")->Value = sOn; pADO->Parameters->ParamByName("p11")->Value = sOff; nCnt = pADO->ExecSQL(); } catch(EDatabaseError &E) { DBERRORLOG("VMS Parameter Save", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("VMS Parameter Save", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return nCnt > 0 ? true : false; #endif return false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnDefMsgDownloadClick(TObject *Sender) { // } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnDisplayTimeSetClick(TObject *Sender) { #if 0 //Æû Ç¥ÃâÁֱ⠼³Á¤ String sTitle = cxLabel26->Caption;//"Æû Ç¥ÃâÁֱ⠼³Á¤"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel14->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx = 0; sMsg = cxLabel27->Caption;//"¼±ÅÃÇϽŠVMSÀÇ Æû Ç¥Ãâ Áֱ⸦ ¼³Á¤ ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sQry; TADOQuery *pADO = NULL; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET VMS_PHSE_CHNG_CYCL = :p02 \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n"; String LAST_CRPR_NMBR = g_AppCfg.sUserId; String LAST_CRCT_DT = Now().FormatString("yyyymmddhhnnss"); int VMS_PHSE_CHNG_CYCL = SeFormCycleTime->Value; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; pADO->Parameters->ParamByName("p01")->Value = sVmsNmbr; pADO->Parameters->ParamByName("p02")->Value = VMS_PHSE_CHNG_CYCL; pADO->ExecSQL(); nOkCnt++; TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sVmsNmbr); if (pObj) { //pObj->VMS_PHSE_CHNG_CYCL = VMS_PHSE_CHNG_CYCL; } } } catch(EDatabaseError &E) { DBERRORLOG("VMS Config Save", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("VMS Config Save", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMSÀÇ Æû Ç¥ÃâÁֱ⸦ ¼³Á¤ÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel28->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; VmsCtlrManager->InsVmsControlHs(LAST_CRCT_DT, sVmsNmbr, "V09", String(VMS_PHSE_CHNG_CYCL), "1", LAST_CRPR_NMBR); } //RefreshStatus(); //FrmVmsOprMain->RefreshVmsMessage(WM_VMS_STATE_REFRESH); #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnMsgImmediateDownloadClick(TObject *Sender) { #if 0 //Æû Ç¥ÃâÁֱ⠼³Á¤ String sTitle = cxLabel30->Caption;//"Æû Áï½Ã ´Ù¿î·Îµå"; String sMsg = ""; sMsg = cxLabel31->Caption;//"Æû ¸Þ½ÃÁö¸¦ Áö±Ý Áï½Ã Á¦¾î±â·Î ´Ù¿î·Îµå ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; String sCmdTime = Now().FormatString("yyyymmddhhnnss"); #if 0 INT_VMS_STATE_REQ Req; memset((char*)&Req, 0x00, sizeof(Req)); Req.Count = 0; Req.Type = vms_req_state_all; CComm_VmsStateReq(&Req); #endif BYTE MsgSeq; INT_VMS_COMMON_REQ directCmd; memset(&directCmd, 0x00, sizeof(directCmd)); MsgSeq = (BYTE)0x80; memcpy(directCmd.CmdTime, AnsiString(sCmdTime).c_str(), INT_VMS_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(directCmd.VmsId, AnsiString("10001").c_str(), INT_VMS_MAX_ID); /* VMS Á¦¾î±â ¹øÈ£ */ memcpy(directCmd.OperId, AnsiString(sCmdUser).c_str(), INT_VMS_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ directCmd.Command = 0x01; int result = CComm_VmsCommonReq(&directCmd, MsgSeq); if (VERR_NONE == result) { //VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V10", "Download", "1", sCmdUser); } else { //VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V10", "Download", "0", sCmdUser); } Sleep(100); Application->ProcessMessages(); sMsg = cxLabel32->Caption;//"VMS Æû ¸Þ½ÃÁö Áï½Ã Àü¼ÛÀ» ¿äûÇÏ¿´½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FOR_STL(TVmsCtlr*, pObj, VmsCtlrManager->FLists) { String sVmsNmbr = (pObj->VMS_CTLR_NMBR); //TODO VmsCtlrManager->InsVmsControlHs(sCmdTime, sVmsNmbr, "V10", "Immediately Download", "1", sCmdUser); } BtnMsgImmediateDownload->Enabled = false; TmrCommand->Enabled = true; #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::TmrCommandTimer(TObject *Sender) { TmrCommand->Enabled = false; BtnImdFromDnld->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::PgControlPageChanging(TObject *Sender, TcxTabSheet *NewPage, bool &AllowChange) { if (NewPage == TabPing) { BtnAllSelect->Visible = false; BtnAllClear->Visible = false; BtnReverse->Visible = false; } else { if (BtnAllSelect->Visible == false) BtnAllSelect->Visible = true;; if (BtnAllClear->Visible == false) BtnAllClear->Visible = true;; if (BtnReverse->Visible == false) BtnReverse->Visible = true;; } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::UpdatePingList() { CMM_ClearGridTableView(TvPing); int ii, jj; int nCols = 0; TcxDataController *pGDC = TvPing->DataController; TvPing->BeginUpdate(); pGDC->BeginUpdate(); VmsCtlrManager->FLists.Lock(); try { int nRow; FOR_STL(TVmsCtlr*, pObj, VmsCtlrManager->FLists) { if (pObj->DEL_YN == "Y") continue; nRow = pGDC->AppendRecord(); if (pObj->STTS->CMNC_STTS_CD == "CMS0") pGDC->Values[nRow][PColumnSel->Index] = false; else pGDC->Values[nRow][PColumnSel->Index] = true; pGDC->Values[nRow][PCol01->Index] = (pObj->VMS_CTLR_NMBR); pGDC->Values[nRow][PCol02->Index] = pObj->VMS_CTLR_ID; pGDC->Values[nRow][PCol03->Index] = pObj->VMS_NM; pGDC->Values[nRow][PCol04->Index] = pObj->STTS->CMNC_STTS_DESC; //Åë½Å»óÅ pGDC->Values[nRow][PCol05->Index] = pObj->VMS_CTLR_IP; pGDC->Values[nRow][PCol06->Index] = "-"; pGDC->Values[nRow][PCol07->Index] = "-"; pGDC->Values[nRow][PCol08->Index] = "-"; pGDC->Values[nRow][PCol09->Index] = pObj->WEB_CMRA_IP; pGDC->Values[nRow][PCol10->Index] = "-"; pGDC->Values[nRow][PCol11->Index] = "-"; pGDC->Values[nRow][PCol12->Index] = "-"; pGDC->Values[nRow][PCol99->Index] = (int)pObj; } } __finally { VmsCtlrManager->FLists.UnLock(); pGDC->EndUpdate(); TvPing->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::RefreshPingList(bool AInit/*=false*/) { TcxDataController *pGDC = TvPing->DataController; try { TvPing->BeginUpdate(); pGDC->BeginUpdate(); int nRows = pGDC->RecordCount; for(int nRow = 0; nRow < nRows; nRow++) { int nMemPtr = TvPing->DataController->Values[nRow][PCol99->Index]; TVmsCtlr *pObj = (TVmsCtlr*)nMemPtr; if (!pObj) continue; if (AInit == false && PgControl->Properties->ActivePage != TabPing) { if (pObj->STTS->CMNC_STTS_CD == "CMS0") pGDC->Values[nRow][PColumnSel->Index] = false; else pGDC->Values[nRow][PColumnSel->Index] = true; } if (AInit) { pGDC->Values[nRow][PCol06->Index] = "-"; pGDC->Values[nRow][PCol07->Index] = "-"; pGDC->Values[nRow][PCol08->Index] = "-"; pGDC->Values[nRow][PCol10->Index] = "-"; pGDC->Values[nRow][PCol11->Index] = "-"; pGDC->Values[nRow][PCol12->Index] = "-"; } pGDC->Values[nRow][PCol04->Index] = pObj->STTS->CMNC_STTS_DESC; //Åë½Å»óÅ } } __finally { pGDC->EndUpdate(); TvPing->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::PingNetwork(String AIp, int APort) { try { IdIcmpClient1->Host = AIp; IdIcmpClient1->Port = EdPingPort->Value/*512*/; IdIcmpClient1->ReceiveTimeout = EdPingTimeout->Value; IdIcmpClient1->Ping(IdIcmpClient1->Host, IdIcmpClient1->Port); } catch (Exception &e) { Application->ShowException(&e); } catch(...) { ShowMessage("Ping error[Unknown]"); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnNwkPingClick(TObject *Sender) { TWaitCursor waitCrs; TcxDataController *pGDC = TvPing->DataController; int nRows = pGDC->RecordCount; String sMsg; int nSelCnt = CMM_GetCheckCount(TvPing, PColumnSel->Index); if (0 == nSelCnt) { sMsg = cxLabel14->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä."; Application->MessageBox(sMsg.c_str(), L"VMS Network Ping Test", MB_OK|MB_ICONERROR|MB_APPLMODAL); CxPing->SetFocus(); return; } RefreshPingList(true); PnlPing->Enabled = false; String sSvrIp; int nSvrPort; bool bPing; for (int ii = 0; ii < nRows; ii++) { bPing = pGDC->Values[ii][PColumnSel->Index]; if (!bPing) continue; //pGDC->Values[ii][PColPingMon->Index] = Now().FormatString("yyyy-mm-dd hh:mm:ss"); FPingType = 1; sSvrIp = pGDC->Values[ii][PCol05->Index]; if (sSvrIp == NULL || sSvrIp.IsEmpty()) { continue; } pGDC->Values[ii][PCol06->Index] = "?"; pGDC->Values[ii][PCol07->Index] = "?"; pGDC->Values[ii][PCol08->Index] = "?"; nSvrPort = 0; FPingTimeout = false; PingNetwork(sSvrIp.Trim(), nSvrPort); if (FPingTimeout) { pGDC->Values[ii][PCol08->Index] = "Time out"; } Application->ProcessMessages(); FPingType = 2; sSvrIp = pGDC->Values[ii][PCol09->Index]; if (sSvrIp == NULL || sSvrIp.IsEmpty()) { continue; } pGDC->Values[ii][PCol10->Index] = "?"; pGDC->Values[ii][PCol11->Index] = "?"; pGDC->Values[ii][PCol12->Index] = "?"; nSvrPort = 0; FPingTimeout = false; PingNetwork(sSvrIp.Trim(), nSvrPort); if (FPingTimeout) { pGDC->Values[ii][PCol12->Index] = "Time out"; } Application->ProcessMessages(); } PnlPing->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnNwkPingClearClick(TObject *Sender) { RefreshPingList(true); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::PCol04CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { try { TColor tColor; String sStatus = AViewInfo->GridRecord->DisplayTexts[AViewInfo->Item->Index]; tColor = ACanvas->Brush->Color; if (sStatus.Pos("-")) tColor = clGray; if (sStatus.Pos("?")) tColor = clGray; else if (sStatus.Pos("Àå¾Ö")) tColor = clRed; else if (sStatus.Pos("ÄÑÁü")) tColor = clYellow; else if (sStatus.Pos("¿­¸²")) tColor = clRed; else if (sStatus.Pos("µ¿ÀÛ")) tColor = clYellow; else if (sStatus.Pos("°¡µ¿")) tColor = clYellow; else tColor = clLime; ACanvas->SetBrushColor(tColor); ACanvas->Font->Color = clBlack; /*if (AViewInfo->GridRecord->Selected) { ACanvas->Font->Color = clBlack; }*/ } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::IdIcmpClient1Reply(TComponent *ASender, const TReplyStatus *AReplyStatus) { try { String sRcvIp = AReplyStatus->FromIpAddress; int nRcvPort= IdIcmpClient1->Port; if (rsTimeOut == AReplyStatus->ReplyStatusType || sRcvIp == "0.0.0.0") { FPingTimeout = true; return; } TcxDataController *pGDC = TvPing->DataController; int nRows = pGDC->RecordCount; String sSvrIp; for (int ii = 0; ii < nRows; ii++) { if (FPingType == 1) sSvrIp = pGDC->Values[ii][PCol05->Index]; else sSvrIp = pGDC->Values[ii][PCol09->Index]; int nSvrPort = 0; if (sSvrIp.Trim() == sRcvIp && nRcvPort == nSvrPort) { if (FPingType == 1) { if (AReplyStatus->MsRoundTripTime > 100) { pGDC->Values[ii][PCol08->Index] = "Delayed"; } else { pGDC->Values[ii][PCol08->Index] = "Normal"; } pGDC->Values[ii][PCol06->Index] = String(AReplyStatus->MsRoundTripTime) + " "; pGDC->Values[ii][PCol07->Index] = String(AReplyStatus->TimeToLive) + " "; } else { if (AReplyStatus->MsRoundTripTime > 100) { pGDC->Values[ii][PCol12->Index] = "Delayed"; } else { pGDC->Values[ii][PCol12->Index] = "Normal"; } pGDC->Values[ii][PCol10->Index] = String(AReplyStatus->MsRoundTripTime) + " "; pGDC->Values[ii][PCol11->Index] = String(AReplyStatus->TimeToLive) + " "; } break; } } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::PCol08CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { try { int iIndex = AViewInfo->Item->Index; ACanvas->Canvas->Brush->Style = bsSolid; String val = AViewInfo->GridRecord->DisplayTexts[iIndex]; ACanvas->Canvas->Font->Color = clBlack; if (val == "Normal") ACanvas->Canvas->Brush->Color = clLime; else if (val == "Delayed") ACanvas->Canvas->Brush->Color = clRed; else if (val == "Time out") ACanvas->Canvas->Brush->Color = clRed; else ACanvas->Canvas->Brush->Color = clSilver; } catch(...) {} } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::TvPingCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; TcxGridDataController *pGDC = TvPing->DataController; int nRow = pGDC->FocusedRecordIndex; if( nRow <= -1 ) return; if (ACellViewInfo->Item->Index == PCol05->Index || ACellViewInfo->Item->Index == PCol09->Index) { String sSvrIp = pGDC->Values[nRow][ACellViewInfo->Item->Index]; ITSUtil_NetworkPing(sSvrIp); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::ErrorMsg(String AErrMsg) { LblErrMsg->Caption = AErrMsg; LblErrMsg->BringToFront(); LblErrMsg->Transparent = true; LblErrMsg->Style->Font->Color = clWhite; LblErrMsg->Style->TextColor = clWhite; LblErrMsg->Visible = true; LblErrMsg->Refresh(); LblErrMsg->BringToFront(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::WebCamPlay(String AVmsNo) { if (LblErrMsg->Visible) LblErrMsg->Visible = false; reMsg->Lines->Clear(); reMsg->Lines->Add("Connect..."); WebCamStop(); TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(AVmsNo); if (!pObj) return; PnlSamsung->Caption = "Connecting..."; PnlSamsung->Refresh(); try { //FStrmAddr = pObj->STRM_SESN_NM.Trim(); FStrmAddr = pObj->STRM_RTSP_ADDR.Trim(); if (FStrmAddr != "") { FFPlayer1->AspectRatio = ChkFullScreen->Checked ? -1 : 0; FFPlayer1->TryOpen(FStrmAddr, PnlSamsung->Handle); FStrmUser = pObj->WEB_CMRA_ID; FStrmPswd = pObj->WEB_CMRA_PWD; FStrmHttp = "http://" + pObj->WEB_CMRA_IP; if (pObj->WEB_CMRA_PORT.ToIntDef(0) != 0) { FStrmHttp = FStrmHttp + ":" + pObj->WEB_CMRA_PORT; } FStrmPlay = true; } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::WebCamStop() { if (!FStrmPlay) return; try { if (FFPlayer1->ScreenHandle != NULL) { FFPlayer1->Stop(true); PostMessage(FFPlayer1->ScreenHandle, CM_INVALIDATE, 0, 0); UpdateWindow(FFPlayer1->ScreenHandle); //FFPlayer1->ScreenHandle = NULL; } } catch(Exception &e) { } PnlSamsung->Caption = "Disconnected"; PnlSamsung->Refresh(); FStrmPlay = false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnImdFromDnldClick(TObject *Sender) { //Æû Áï½Ã ´Ù¿î·Îµå String sTitle = cxLabel30->Caption;//"Æû Áï½Ã ´Ù¿î·Îµå"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } sMsg = cxLabel31->Caption;//"Æû ¸Þ½ÃÁö¸¦ Áö±Ý Áï½Ã Á¦¾î±â·Î ´Ù¿î·Îµå ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; bool result = VmsCtlrManager->ImmediatelyScnrDnld(sCmdUser, sVmsNmbr); if (result) { nOkCnt++; } Sleep(100); Application->ProcessMessages(); } //sMsg = String(nSelCnt) + " °³ÀÇ ¼±Åà VMS Áß¿¡ " + String(nOkCnt) + " °³ÀÇ VMS Æû ¸Þ½ÃÁö Áï½Ã Àü¼ÛÀ» ¿äûÇÏ¿´½À´Ï´Ù."; sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel19->Caption;//; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); BtnImdFromDnld->Enabled = false; TmrCommand->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnModuleControlClick(TObject *Sender) { TcxButton *pBtnControl = (TcxButton*)Sender; String sTitle = cxLabel1->Caption;//"Àü±¤ÆÇ/Á¦¾î±â Á¦¾î"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx; if (pBtnControl->Tag == 1) { nCmdIdx = 1; sMsg = cxLabel3->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS Àü±¤ÆÇ Àü¿ø ON ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } else { nCmdIdx = 0; sMsg = cxLabel4->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS Àü±¤ÆÇ Àü¿ø OFF ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; if (nCmdIdx == 1 || nCmdIdx == 0) { // Àü±¤ÆÇ On(=0)/Off(=1) bool result = VmsCtlrManager->PowerOnOff(sCmdUser, sVmsNmbr, nCmdIdx); if (result) { nOkCnt++; } } Sleep(100); Application->ProcessMessages(); } sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel8->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnResetClick(TObject *Sender) { TcxButton *pBtnControl = (TcxButton*)Sender; String sTitle = cxLabel1->Caption;//"Àü±¤ÆÇ/Á¦¾î±â Á¦¾î"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx; { nCmdIdx = 2; sMsg = cxLabel5->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS Á¦¾î±â ¸®¼Â ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; if (nCmdIdx == 2) { // Á¦¾î±â ¸®¼Â bool result = VmsCtlrManager->Reset(sCmdUser, sVmsNmbr, pBtnControl->Tag); if (result) { nOkCnt++; } } Sleep(100); Application->ProcessMessages(); } sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel8->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnBrghControlClick(TObject *Sender) { TcxButton *pBtnControl = (TcxButton*)Sender; String sTitle = cxLabel1->Caption;//"Àü±¤ÆÇ/Á¦¾î±â Á¦¾î"; String sMsg = ""; int nOkCnt = 0; int nSelCnt = GetSelListItems(false); if (0 == nSelCnt) { sMsg = cxLabel2->Caption + "\r\n" + cxLabel9->Caption;//"VMS°¡ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nVMS ¸ñ·Ï¿¡¼­ VMS¸¦ ¼±ÅÃÇϽʽÿä.\r\nÇöÀç Åë½ÅÀÌ ºñÁ¤»óÀÎ VMS´Â ¼±ÅÃÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); CxList->SetFocus(); return; } int nCmdIdx; { nCmdIdx = 3; sMsg = cxLabel6->Caption + "\r\n" + cxLabel9->Caption;//"¼±ÅÃÇϽŠVMS¿¡ VMS ÈÖµµ°ª Á¦¾î ¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î?\r\n(Åë½Å»óÅ¿¡ µû¶ó ¸í·ÉÀÌ ½ÇÇàµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.)"; } if (Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_APPLMODAL) != IDYES) return; String sCmdUser = g_AppCfg.sUserId; for (int ii = 0; ii < nSelCnt; ii++) { String sVmsNmbr = FVmsIds->Strings[ii]; if (nCmdIdx == 3) { // ÈÖµµÁ¦¾î bool result = VmsCtlrManager->LuminanceSet(sCmdUser, sVmsNmbr, pBtnControl->Tag, SeCurrBrgh->Value, SeWeekBrgh->Value, SeNghtBrgh->Value); if (result) { nOkCnt++; } } Sleep(100); Application->ProcessMessages(); } sMsg = String(nSelCnt) + " " + cxLabel7->Caption + " " + String(nOkCnt) + " " + cxLabel8->Caption; Application->MessageBox(sMsg.c_str(), sTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::FFPlayer1State(TObject *Sender, TPlayState APlayState) { switch(APlayState) { case Ffbasecomponent::psPlay: reMsg->Lines->Add("Play..."); break; case Ffbasecomponent::psResume: reMsg->Lines->Add("Resume."); break; case Ffbasecomponent::psPause: reMsg->Lines->Add("Pause.."); break; case Ffbasecomponent::psStep: reMsg->Lines->Add("Step..."); break; case Ffbasecomponent::psStop: if (FFPlayer1->ScreenHandle != NULL) { PostMessage(FFPlayer1->ScreenHandle, CM_INVALIDATE, 0, 0); UpdateWindow(FFPlayer1->ScreenHandle); //FFPlayer1->ScreenHandle = NULL; } reMsg->Lines->Add("Stop..."); break; case Ffbasecomponent::psEnd: { FFPlayer1->Stop(true); PostMessage(FFPlayer1->ScreenHandle, CM_INVALIDATE, 0, 0); UpdateWindow(FFPlayer1->ScreenHandle); //FFPlayer1->ScreenHandle = NULL; } reMsg->Lines->Add("End..."); break; } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::FFPlayer1OpenFailed(TObject *Sender) { //ErrorMsg("À¥Ä«¸Þ¶ó¿¡ ¿¬°áÇÒ ¼ö ¾ø½À´Ï´Ù."); //WebCamStop(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::ChkFullScreenClick(TObject *Sender) { FFPlayer1->AspectRatio = ChkFullScreen->Checked ? -1 : 0; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::IdHTTP1Authorization(TObject *Sender, TIdAuthentication *Authentication, bool &Handled) { #if 1 IdHTTP1->Request->Username = FStrmUser; IdHTTP1->Request->Password = FStrmPswd; #endif Authentication->Username = FStrmUser; Authentication->Password = FStrmPswd; TIdDigestAuthentication *pAuth1 = (TIdDigestAuthentication*)IdHTTP1->Request->Authentication; TIdDigestAuthentication *pAuth2 = (TIdDigestAuthentication*)Authentication; pAuth1->Uri = IdHTTP1->Request->URL; pAuth2->Method = "GET"; Handled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnWebCamControlMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { // PANControl if (!FStrmPlay) return; try { String sCmdHtml; TImageBtn *pBtn = (TImageBtn*)Sender; switch(pBtn->Tag) { case 1: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Tilt=5&Duration=1", FStrmHttp.c_str()); break; // Tilt Up case 2: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Tilt=-5&Duration=1", FStrmHttp.c_str()); break; // Tilt Down case 3: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Pan=5", FStrmHttp.c_str()); break; // Pan left case 4: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Pan=-5", FStrmHttp.c_str()); break; // Pan right case 9: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Zoom=3", FStrmHttp.c_str()); break; // Zoom In case 10: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Zoom=-3", FStrmHttp.c_str()); break; // Zoom Out case 12: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Focus=Near", FStrmHttp.c_str()); break; // Focus In case 13: sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Focus=Far", FStrmHttp.c_str()); break; // Focus Out default: return; } IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth; IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions << hoInProcessAuth; String sResult = IdHTTP1->Get(sCmdHtml); reMsg->Lines->Add(sResult); IdHTTP1->Disconnect(); } catch(...) {} } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnWebCamControlMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { // PANControl Stop if (!FStrmPlay) return; try { String sCmdHtml; TImageBtn *pBtn = (TImageBtn*)Sender; switch(pBtn->Tag) { case 1: // Tilt Up case 2: // Tilt Down sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Tilt=0&Duration=1", FStrmHttp.c_str()); break; case 3: // Pan left case 4: // Pan right sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Pan=0", FStrmHttp.c_str()); break; case 9: // Zoom In case 10: // Zoom Out sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Zoom=0", FStrmHttp.c_str()); break; case 12: // Focus In case 13: // Focus Out sCmdHtml.printf(L"%s/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Focus=Stop", FStrmHttp.c_str()); break; default: return; } IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth; IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions << hoInProcessAuth; String sResult = IdHTTP1->Get(sCmdHtml); reMsg->Lines->Add(sResult); IdHTTP1->Disconnect(); } catch(...) {} } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; ClearCheckList(); TcxDataController *pGDC = TvList->DataController; int nSelIdx = CMM_GetRecordIndex(TvList); if (nSelIdx < 0) return; pGDC->Values[nSelIdx][ColumnSel->Index] = true; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::UpdateList() { CMM_ClearGridTableView(TvList); int ii, jj; int nCols = 0; TcxDataController *pGDC = TvList->DataController; TvList->BeginUpdate(); pGDC->BeginUpdate(); VmsCtlrManager->FLists.Lock(); try { int nRow; FOR_STL(TVmsCtlr*, pObj, VmsCtlrManager->FLists) { if (pObj->DEL_YN == "Y") continue; nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColumnSel->Index] = false; RefreshVmsStatus(pGDC, nRow, pObj); pGDC->Values[nRow][Col99->Index] = (int)pObj; } } __finally { VmsCtlrManager->FLists.UnLock(); pGDC->EndUpdate(); TvList->EndUpdate(); //RefreshStatus(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::RefreshVmsStatus(TcxDataController *AGDC, int ARow, void *AMemObj) { TcxDataController *pGDC = AGDC; int nRow = ARow; TVmsCtlr *pObj = (TVmsCtlr*)AMemObj; try { pGDC->Values[nRow][Col01->Index] = pObj->VMS_CTLR_NMBR; pGDC->Values[nRow][Col02->Index] = pObj->VMS_CTLR_ID; pGDC->Values[nRow][Col03->Index] = pObj->VMS_NM; pGDC->Values[nRow][Col04->Index] = pObj->VMS_TYPE_DESC; pGDC->Values[nRow][Col05->Index] = pObj->VMS_TYPE_DESC; pGDC->Values[nRow][Col06->Index] = pObj->OPER_MODE_DESC; //pGDC->Values[nRow][Col33->Index] = pObj->VMS_PHSE_CHNG_CYCL; pGDC->Values[nRow][Col07->Index] = ITSUtil_FormatStr(pObj->STTS->UPDT_DT, STR_DATETIME); pGDC->Values[nRow][Col08->Index] = String(pObj->STTS->PROVIDE_CNT); pGDC->Values[nRow][Col09->Index] = pObj->STTS->PROVIDE_RESULT; pGDC->Values[nRow][Col10->Index] = pObj->STTS->CMNC_STTS_DESC; //Åë½Å»óÅ pGDC->Values[nRow][Col11->Index] = pObj->STTS->MODL_STTS_DESC; //¸ðµâ»óÅ pGDC->Values[nRow][Col12->Index] = pObj->STTS->PWER_STTS_DESC; //Àü¿ø»óÅ pGDC->Values[nRow][Col13->Index] = pObj->STTS->BRGH_VAL; //ÈÖµµ pGDC->Values[nRow][Col14->Index] = pObj->STTS->CBOX_DOOR_STTS_DESC; //µµ¾î pGDC->Values[nRow][Col15->Index] = pObj->STTS->FAN_STTS_DESC; //ÆÒ pGDC->Values[nRow][Col16->Index] = pObj->STTS->HETR_STTS_DESC; //È÷ÅÍ pGDC->Values[nRow][Col17->Index] = pObj->STTS->CBOX_TMPR; //¿Âµµ #if 0 pGDC->Values[nRow][Col18->Index] = String(pObj->STATE.ModuleOperatingTemperature); //¸ðµâÁ¤Áö¿Âµµ pGDC->Values[nRow][Col19->Index] = String(pObj->STATE.FanOperatingTemperature); //ÆÒµ¿Àۿµµ pGDC->Values[nRow][Col20->Index] = String(pObj->STATE.HeaterOperatingTemperature); //È÷Å͵¿Àۿµµ pGDC->Values[nRow][Col21->Index] = String(pObj->STATE.ModuleBasicFailureRate); //¸ðµâÀå¾ÖÀ² pGDC->Values[nRow][Col28->Index] = String(pObj->STATE.ScheduledMessageOperatingTime); //°èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) #endif pGDC->Values[nRow][Col29->Index] = pObj->PANL_ON_TIME; //Àü±¤ÆÇ ON pGDC->Values[nRow][Col30->Index] = pObj->PANL_OFF_TIME; //Àü±¤ÆÇ OFF } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::RefreshStatus() { TcxDataController *pGDC = TvList->DataController; try { TvList->BeginUpdate(); pGDC->BeginUpdate(); int nRows = pGDC->RecordCount; for(int nRow = 0; nRow < nRows; nRow++) { int nMemPtr = TvList->DataController->Values[nRow][Col99->Index]; TVmsCtlr *pObj = (TVmsCtlr*)nMemPtr; if (!pObj) continue; RefreshVmsStatus(pGDC, nRow, pObj); } } __finally { pGDC->EndUpdate(); TvList->EndUpdate(); //CxList->LayoutChanged(); } } //--------------------------------------------------------------------------- int __fastcall TFrmVmsControl::GetSelIds(String &ALinkIds) { ALinkIds = ""; TcxDataController *pGDC = TvList->DataController; if (TvList->ViewData->RecordCount <= 0) return 0; int nIndex = pGDC->FocusedRecordIndex; if( nIndex < 0 ) return 0; String sLinkId = VarToStr(pGDC->Values[nIndex][Col01->Index]); ALinkIds = sLinkId; return 1; } //--------------------------------------------------------------------------- int __fastcall TFrmVmsControl::GetSelIds(TStringList *AStringList) { int nSelCnt = 0; try { TvList->BeginUpdate(); int nRowCnt = TvList->ViewData->RecordCount; for (int ii = 0; ii < nRowCnt; ii++) { TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii]; if (((bool)ARow->Values[ColumnSel->Index])) { AStringList->Add(ARow->Values[Col01->Index]); nSelCnt++; } } } __finally { TvList->EndUpdate(); } return nSelCnt; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::Col06CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { try { TColor tColor; String sVmsMode = AViewInfo->GridRecord->DisplayTexts[AViewInfo->Item->Index]; tColor = ACanvas->Brush->Color; if (sVmsMode == "ÀÚµ¿") tColor = clLime; else if (sVmsMode == "°íÁ¤") tColor = clFuchsia; else tColor = clYellow; ACanvas->SetBrushColor(tColor); ACanvas->Font->Color = clBlack; } catch(Exception &e) { } #if 0 int nRecordIdx = AViewInfo->GridRecord->RecordIndex; if (nRecordIdx >= 0) { int nIdx = AViewInfo->Item->Index; String sVmsMode = AViewInfo->GridRecord->DisplayTexts[nIdx]; if (sVmsMode == "°íÁ¤") ACanvas->Canvas->Brush->Color = clLime; } #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::Col07CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { try { if (AViewInfo->GridRecord->RecordIndex < 0) return; String sResult = AViewInfo->GridRecord->DisplayTexts[Col09->Index]; if (sResult == "N") { ACanvas->Canvas->Brush->Color = clRed; } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::Col10CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { try { TColor tColor; String sStatus = AViewInfo->GridRecord->DisplayTexts[AViewInfo->Item->Index]; tColor = ACanvas->Brush->Color; if (sStatus.Pos("-")) tColor = clGray; else if (sStatus.Pos("?")) tColor = clGray; else if (sStatus.Pos("Àå¾Ö")) tColor = clRed; else if (sStatus.Pos("µÎÀý")) tColor = clRed; else if (sStatus.Pos("ÄÑÁü")) tColor = clYellow; else if (sStatus.Pos("¿­¸²")) tColor = clRed; else if (sStatus.Pos("µ¿ÀÛ")) tColor = clYellow; else if (sStatus.Pos("°¡µ¿")) Color = clYellow; else tColor = clLime; ACanvas->SetBrushColor(tColor); ACanvas->Font->Color = clBlack; /*if (AViewInfo->GridRecord->Selected) { ACanvas->Font->Color = clBlack; }*/ } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::Col12CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { try { TColor tColor; String sStatus = AViewInfo->GridRecord->DisplayTexts[AViewInfo->Item->Index]; tColor = ACanvas->Brush->Color; #if 0 if (sStatus.Pos("-")) tColor = clGray; else if (sStatus.Pos("Àå¾Ö")) tColor = clRed; else if (sStatus.Pos("µÎÀý")) tColor = clRed; else if (sStatus.Pos("ÄÑÁü")) tColor = clYellow; else if (sStatus.Pos("¿­¸²")) tColor = clRed; else if (sStatus.Pos("µ¿ÀÛ")) tColor = clYellow; else if (sStatus.Pos("°¡µ¿")) tColor = clYellow; else tColor = clLime; #else if (sStatus.Pos("-")) tColor = clGray; else if (sStatus.Pos("Àå¾Ö")) tColor = clRed; else if (sStatus.Pos("µÎÀý")) tColor = clRed; else if (sStatus.Pos("²¨Áü")) tColor = clRed; else tColor = clLime; #endif ACanvas->SetBrushColor(tColor); ACanvas->Font->Color = clBlack; /*if (AViewInfo->GridRecord->Selected) { ACanvas->Font->Color = clBlack; }*/ } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::TmrRefreshStatusTimer(TObject *Sender) { RefreshStatusRequest(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::BtnSearchClick(TObject *Sender) { RefreshStatusRequest(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsControl::RefreshStatusRequest() { BtnSearch->Enabled = false; TmrRefreshStatus->Enabled = false; VmsCtlrManager->LoadStts(); RefreshStatus(); TmrRefreshStatus->Interval = 30000; TmrRefreshStatus->Enabled = true; BtnSearch->Enabled = true; EdFocus->SetFocus(); } //---------------------------------------------------------------------------