//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "ITSLangTransF.h" #include "CenterCommF.h" #include "CDSFacilityF.h" #pragma hdrstop #include "DSRM020MF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxClasses" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxEdit" #pragma link "cxFilter" #pragma link "cxGraphics" #pragma link "cxGrid" #pragma link "cxGridCustomTableView" #pragma link "cxGridCustomView" #pragma link "cxGridLevel" #pragma link "cxGridTableView" #pragma link "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxRadioGroup" #pragma link "cxSplitter" #pragma link "cxStyles" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma link "dxSkinMcSkin" #pragma resource "*.dfm" TDSRM020M *DSRM020M = NULL; //--------------------------------------------------------------------------- __fastcall TDSRM020M::TDSRM020M(TComponent* Owner) : TForm(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FTitle = Caption; FReqSeq = 0; TvResult->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<Á¦¾îÀü¼Û°á°ú>"; FRAMEDsrcList1->PnlBottom->Visible = false; FRAMEDsrcList1->Column04->Visible = true; // IP Address FRAMEDsrcList1->Column05->Visible = true; // Åë½Å»óÅ } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::FormShow(TObject *Sender) { Refresh(); FormInit(); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::FormInit() { } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; RdoController->Checked = true; FRAMEDsrcList1->UpdateListStatus(); } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); DSRM020M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::FormCloseQuery(TObject *Sender, bool &CanClose) { FRAMEDsrcList1->OnCloseQuery(CanClose); } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::BtnControlClick(TObject *Sender) { int nSelects = CMM_GetCheckCount(FRAMEDsrcList1->TvList, FRAMEDsrcList1->ColumnSel->Index); if (0 == nSelects) { Application->MessageBox(L"Á¦¾î ¸ñ·ÏÀ» ¼±ÅÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); FRAMEDsrcList1->CxList->SetFocus(); return; } int ii; int nRowCnt = FRAMEDsrcList1->TvList->ViewData->RecordCount; int nNormalCount = 0; for (ii = 0; ii < nRowCnt; ii++) { TcxCustomGridRow* ARow = FRAMEDsrcList1->TvList->ViewData->Rows[ii]; if (((bool)ARow->Values[FRAMEDsrcList1->ColumnSel->Index])) { String sComm = ""; if (!VarIsNull(ARow->Values[FRAMEDsrcList1->Column06->Index])) sComm = ARow->Values[FRAMEDsrcList1->Column06->Index]; if (sComm != str_state_error) nNormalCount++; } } #if 0 if (0 == nNormalCount) { Application->MessageBox(L"Åë½Å»óŰ¡ Á¤»óÀÏ °æ¿ì¿¡¸¸ Á¦¾î¸í·ÉÀ» Àü¼Û ÇÒ ¼ö ÀÖ½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); FRAMEDsrcList1->CxList->SetFocus(); return; } #endif if (!RdoController->Checked && !RdoAnt1->Checked) { Application->MessageBox(L"ÀåÄ¡ À¯ÇüÀ» ¼±ÅÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù.\r\nÀåÄ¡ À¯ÇüÀ» ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); return; } if (!RdoReset->Checked && !RdoStop->Checked && !RdoStart->Checked) { Application->MessageBox(L"Á¦¾î À¯ÇüÀ» ¼±ÅÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù.\r\nÁ¦¾î À¯ÇüÀ» ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); return; } if (Application->MessageBox(L"Á¦¾îÀü¼ÛÈ®ÀÎ\r\n¼±ÅÃÇÑ DSRC¿¡ ´ëÇÏ¿© Á¦¾î¸í·ÉÀ» Àü¼ÛÇϽðڽÀ´Ï±î??", FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; int nRow; int nResult; dsrc_device_code DeviceType; dsrc_control_code ControlType; DeviceType = dsrc_device_main; if (RdoAnt1->Checked) { DeviceType = dsrc_device_antena1; } ControlType = dsrc_control_reset; if (RdoStop->Checked) { ControlType = dsrc_control_stop; } else if (RdoStart->Checked) { ControlType = dsrc_control_start; } CMM_ClearGridTableView(TvResult); BYTE MsgSeq; INT_DSRC_CONTROL_REQ ControlReq; memset(&ControlReq, 0x00, sizeof(ControlReq)); String sCmdUser = g_pLOGIN->sUserId; String sCmdTime = Now().FormatString("yyyymmddhhnnss"); try { FRAMEDsrcList1->TvList->BeginUpdate(); TvResult->BeginUpdate(); nRowCnt = FRAMEDsrcList1->TvList->ViewData->RecordCount; for (ii = 0; ii < nRowCnt; ii++) { TcxCustomGridRow* ARow = FRAMEDsrcList1->TvList->ViewData->Rows[ii]; if (((bool)ARow->Values[FRAMEDsrcList1->ColumnSel->Index])) { String sId = VarToStr(ARow->Values[FRAMEDsrcList1->Column01->Index]); nRow = TvResult->DataController->AppendRecord(); TvResult->DataController->Values[nRow][ColDsrcId->Index] = sId; // TODO: Á¦¾î±â Åë½Å»óŸ¦ È®ÀÎÇϰí Àü¼ÛÇϵµ·Ï ÇÏÀÚ. // ÇÑÆÐŶ¿¡ ¿©·¯Á¦¾î±â¸¦ ÇÕÃļ­ Àü¼ÛÇÒ ¼ö ÀÖµµ·Ï ÇÏÀÚ. bool isCommNormal = true;//false; String sComm = ""; if (!VarIsNull(ARow->Values[FRAMEDsrcList1->Column06->Index])) sComm = ARow->Values[FRAMEDsrcList1->Column06->Index]; if (sComm != str_state_error) isCommNormal = true; if (isCommNormal) { String sSendDate = Now().FormatString("YYYYMMDD"); String sSendTime = Now().FormatString("HHNNSS"); memset(&ControlReq, 0x00, sizeof(ControlReq)); MsgSeq = (BYTE)0x90; memcpy(ControlReq.CmdTime, AnsiString(sCmdTime).c_str(), INT_DSRC_MAX_DATETIME); /* ¸í·É¼öÇà½Ã°¢ */ memcpy(ControlReq.OperId, AnsiString(sCmdUser).c_str(), INT_DSRC_MAX_OPER_ID); /* ¿î¿µÀÚ ID */ ControlReq.ReqSeq = FReqSeq; ControlReq.DSRC_CTLR_NMBR = sId.ToIntDef(0); ControlReq.DeviceType = DeviceType; ControlReq.ControlType = ControlType; TvResult->DataController->Values[nRow][ColReqSeq->Index] = String(FReqSeq); nResult = CComm_DsrcControlReq(&ControlReq); if (VERR_NONE == nResult) { TvResult->DataController->Values[nRow][ColReqResult->Index] = "¼º°ø"; } else { TvResult->DataController->Values[nRow][ColReqResult->Index] = "½ÇÆÐ"; } TvResult->DataController->Values[nRow][ColResResult->Index] = "ÀÀ´ä´ë±â"; FReqSeq++; } else { TvResult->DataController->Values[nRow][ColReqSeq->Index] = "-"; TvResult->DataController->Values[nRow][ColReqResult->Index] = "Åë½ÅÀÌ»ó"; TvResult->DataController->Values[nRow][ColResResult->Index] = "-"; } } } } __finally { FRAMEDsrcList1->TvList->EndUpdate(); TvResult->EndUpdate(); } #if 0 dsrc_response_succ, /* 0: ¼º°ø */ dsrc_response_nack, /* 1: °ÅÀý */ dsrc_response_none, /* 2: ÀÀ´ä¾øÀ½ */ #endif Application->MessageBox(L"Á¦¾î¸í·ÉÀ» Àü¼Û ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::OnMainFormMessage(TMessage &Msg) { IPC_MSG_DATA *RcvData = (IPC_MSG_DATA*)Msg.LParam; INT_SENDER *Sender = &RcvData->Sender; INT_PACKET *Pkt = &RcvData->Pkt; INT_HEAD *head = &Pkt->head; INT_DATA *data = &Pkt->data; char *pData = &Pkt->data.Data[0]; BYTE OpCode = head->OpCode; switch (Msg.WParam) { case INT_OP_DSRC_CONTROL_RES: /* 0xC1, RSE Á¦¾îÁ¤º¸ ÀÀ´ä */ { INT_DSRC_CONTROL_RES *pRseCtl; pRseCtl = (INT_DSRC_CONTROL_RES *)pData; String sResId = String(pRseCtl->DSRC_CTLR_NMBR); String sResSeq = String(pRseCtl->ReqSeq); int nResult = (int)pRseCtl->ResCode; try { TvResult->BeginUpdate(); int nRowCnt = TvResult->ViewData->RecordCount; for (int ii = 0; ii < nRowCnt; ii++) { TcxCustomGridRow* ARow = TvResult->ViewData->Rows[ii]; { String sId = VarToStr(ARow->Values[ColDsrcId->Index]); String sSeq= VarToStr(ARow->Values[ColReqSeq->Index]); if (sResId == sId && sResSeq == sSeq) { String sResult = "Unknown"; if (nResult == (int)dsrc_response_succ) sResult = "¼º°ø"; else if (nResult == (int)dsrc_response_nack) sResult = "½ÇÆÐ"; else if (nResult == (int)dsrc_response_none) sResult = "ÀÀ´ä¾øÀ½"; ARow->Values[ColResResult->Index] = sResult; break; } } } } __finally { TvResult->EndUpdate(); } } break; default: break; }/* end switch */ } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::RdoControllerClick(TObject *Sender) { RdoStop->Enabled = false; RdoStart->Enabled = false; RdoReset->Enabled = true; RdoReset->Checked = true; } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::RdoAnt1Click(TObject *Sender) { RdoReset->Enabled = false; RdoStop->Enabled = true; RdoStart->Enabled = true; RdoStop->Checked = true; } //--------------------------------------------------------------------------- void __fastcall TDSRM020M::ColResResultCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { TColor tColor = ACanvas->Brush->Color; TColor tFont = clBlack; try { TColor tColor; String sStatus = AViewInfo->GridRecord->DisplayTexts[AViewInfo->Item->Index]; tColor = ACanvas->Brush->Color; if (sStatus.Pos("ÀÀ´ä¾øÀ½")) tColor = clRed; else if (sStatus.Pos("½ÇÆÐ")) tColor = clRed; else if (sStatus.Pos("ÀÀ´ä´ë±â")) tColor = clYellow; else if (sStatus.Pos("¼º°ø")) tColor = clLime; else tColor = clGray; ACanvas->SetBrushColor(tColor); if (tColor == clRed) tFont = clWhite; ACanvas->Font->Color = tFont; } catch(Exception &e) { } } //---------------------------------------------------------------------------