FrmControllerInfoF.cpp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FrmControllerInfoF.h"
  5. #include "FrmCommLogF.h"
  6. #include "FrmMainF.h"
  7. #include "AppGlobalF.h"
  8. #include "PacketHandllingF.h"
  9. #include "FrmSetTimeF.h"
  10. #include "FrmSetBrghF.h"
  11. #include "FrmSetConfigF.h"
  12. #include "VmsProtocolF.h"
  13. #include "CDSCtlrF.h"
  14. #include "ClientSessionF.h"
  15. //---------------------------------------------------------------------------
  16. #pragma package(smart_init)
  17. #pragma link "cxCalc"
  18. #pragma link "cxClasses"
  19. #pragma link "cxControls"
  20. #pragma link "cxCustomData"
  21. #pragma link "cxData"
  22. #pragma link "cxDataStorage"
  23. #pragma link "cxEdit"
  24. #pragma link "cxFilter"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGrid"
  27. #pragma link "cxGridCustomTableView"
  28. #pragma link "cxGridCustomView"
  29. #pragma link "cxGridLevel"
  30. #pragma link "cxGridTableView"
  31. #pragma link "cxLabel"
  32. #pragma link "cxLookAndFeelPainters"
  33. #pragma link "cxLookAndFeels"
  34. #pragma link "cxStyles"
  35. #pragma link "dxGDIPlusClasses"
  36. #pragma link "cxSpinEdit"
  37. #pragma resource "*.dfm"
  38. TFrmControllerInfo *FrmControllerInfo = NULL;
  39. String VmsModuleType(TCDSCtlr *AObj)
  40. {
  41. #if 0
  42. if (AObj->VmsType == "VUTN") return "문자식";
  43. return "도형식";
  44. #else
  45. return "";
  46. #endif
  47. }
  48. //---------------------------------------------------------------------------
  49. String VmsOperMode(TCDSCtlr *AObj)
  50. {
  51. if (AObj->OPER_MODE == "A") return "자동";
  52. return "고정";
  53. }
  54. //---------------------------------------------------------------------------
  55. String VmsComm(TCDSCtlr *AObj)
  56. {
  57. if (AObj->Client.commState == comm_open) return "정상";
  58. return "장애";
  59. }
  60. //---------------------------------------------------------------------------
  61. String VmsModuleState(TCDSCtlr *AObj)
  62. {
  63. if (AObj->Client.commState != comm_open) return "-";
  64. if (AObj->RSTATE.ModuleState == vms_comm_normal) return "정상";
  65. return "장애";
  66. }
  67. //---------------------------------------------------------------------------
  68. String VmsModulePower(TCDSCtlr *AObj)
  69. {
  70. if (AObj->Client.commState != comm_open) return "-";
  71. if (AObj->RSTATE.ModulePowerStatus == vms_module_power_on) return "켜짐";
  72. return "꺼짐";
  73. }
  74. //---------------------------------------------------------------------------
  75. String VmsModuleLuminance(TCDSCtlr *AObj)
  76. {
  77. if (AObj->Client.commState != comm_open) return "-";
  78. int nLuminance = AObj->RSTATE.LuminanceStatus;
  79. return String(nLuminance);
  80. }
  81. //---------------------------------------------------------------------------
  82. String VmsModuleDoor(TCDSCtlr *AObj)
  83. {
  84. if (AObj->Client.commState != comm_open) return "-";
  85. if (AObj->RSTATE.DoorStatus == vms_door_open) return "열림";
  86. return "닫힘";
  87. }
  88. //---------------------------------------------------------------------------
  89. String VmsModuleFan(TCDSCtlr *AObj)
  90. {
  91. if (AObj->Client.commState != comm_open) return "-";
  92. if (AObj->RSTATE.FanStatus == vms_fan_on) return "동작";
  93. return "정지";
  94. }
  95. //---------------------------------------------------------------------------
  96. String VmsModuleHeater(TCDSCtlr *AObj)
  97. {
  98. if (AObj->Client.commState != comm_open) return "-";
  99. if (AObj->RSTATE.HeaterStatus == vms_heater_on) return "가동";
  100. return "중지";
  101. }
  102. //---------------------------------------------------------------------------
  103. String VmsModuleTemp(TCDSCtlr *AObj)
  104. {
  105. if (AObj->Client.commState != comm_open) return "-";
  106. int nTemp = AObj->RSTATE.BodyTemp;
  107. return String(nTemp);//+"℃";
  108. }
  109. //---------------------------------------------------------------------------
  110. //---------------------------------------------------------------------------
  111. __fastcall TFrmControllerInfo::TFrmControllerInfo(TComponent* Owner)
  112. : TForm(Owner)
  113. {
  114. FControllerCnt = 0;
  115. }
  116. //---------------------------------------------------------------------------
  117. void __fastcall TFrmControllerInfo::UpdateCtlrList()
  118. {
  119. int nRow;
  120. TcxDataController *pGDC = TvList->DataController;
  121. try
  122. {
  123. TvList->BeginUpdate();
  124. pGDC->RecordCount = 0;
  125. CtlrItr it;
  126. for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it)
  127. {
  128. TCDSCtlr *pObj = (TCDSCtlr*)it->second;
  129. nRow = pGDC->AppendRecord();
  130. pGDC->Values[nRow][Col00->Index] = pObj->Server.commState;
  131. pGDC->Values[nRow][Col01->Index] = "";
  132. pGDC->Values[nRow][Col02->Index] = pObj->CTLR_NMBR;
  133. pGDC->Values[nRow][Col03->Index] = pObj->CTLR_ID;
  134. pGDC->Values[nRow][Col04->Index] = pObj->NM;
  135. pGDC->Values[nRow][Col05->Index] = pObj->LOGIN_IPADDR;//CTLR_IP;
  136. pGDC->Values[nRow][Col06->Index] = "오류";
  137. pGDC->Values[nRow][Col07->Index] = pObj->OPER_MODE;
  138. pGDC->Values[nRow][Col08->Index] = pObj->dwConnectCnt;
  139. pGDC->Values[nRow][Col09->Index] = "-";
  140. pGDC->Values[nRow][Col10->Index] = "-";
  141. pGDC->Values[nRow][Col11->Index] = "-";
  142. pGDC->Values[nRow][Col12->Index] = "-";
  143. pGDC->Values[nRow][Col13->Index] = "-";
  144. pGDC->Values[nRow][Col14->Index] = pObj->Server.ConnectTm;
  145. pGDC->Values[nRow][Col15->Index] = pObj->Server.DisconnectTm;
  146. pGDC->Values[nRow][Col99->Index] = (int)pObj;
  147. }
  148. }
  149. __finally
  150. {
  151. TvList->EndUpdate();
  152. FControllerCnt = pGDC->RecordCount;
  153. }
  154. CDSCtlrManager->Total = CDSCtlrManager->Count;
  155. CDSCtlrManager->Error = CDSCtlrManager->Count;
  156. CDSCtlrManager->Normal = 0;
  157. CDSCtlrManager->Module = 0;
  158. plTot->Caption = String(CDSCtlrManager->Count);
  159. plErr->Caption = String(CDSCtlrManager->Count);
  160. plNor->Caption = "0";
  161. }
  162. //---------------------------------------------------------------------------
  163. void __fastcall TFrmControllerInfo::UpdateServerState(int AObj)
  164. {
  165. TcxDataController *pGDC = TvList->DataController;
  166. try
  167. {
  168. TvList->BeginUpdate();
  169. try
  170. {
  171. int nErrCnt = 0;
  172. int nMemPtr;
  173. TCDSCtlr *pObj;
  174. for (int nRow = 0; nRow < FControllerCnt; nRow++)
  175. {
  176. nMemPtr = pGDC->Values[nRow][Col99->Index];
  177. pObj = (TCDSCtlr*)nMemPtr;
  178. if (!pObj) continue;
  179. pGDC->Values[nRow][Col00->Index] = pObj->Server.commState;
  180. if (pObj->Server.commState != comm_open)
  181. {
  182. nErrCnt++;
  183. }
  184. pGDC->Values[nRow][Col05->Index] = pObj->LOGIN_IPADDR;//CTLR_IP;
  185. pGDC->Values[nRow][Col14->Index] = pObj->Server.ConnectTm;
  186. pGDC->Values[nRow][Col08->Index] = pObj->dwConnectCnt;
  187. pGDC->Values[nRow][Col15->Index] = pObj->Server.DisconnectTm;
  188. }
  189. CDSCtlrManager->Error = nErrCnt;
  190. CDSCtlrManager->Normal = FControllerCnt-nErrCnt;
  191. plTot->Caption = String(FControllerCnt);
  192. plErr->Caption = String(nErrCnt);
  193. plNor->Caption = String(FControllerCnt-nErrCnt);
  194. }
  195. catch(Exception &e)
  196. {
  197. }
  198. }
  199. __finally
  200. {
  201. TvList->EndUpdate();
  202. }
  203. }
  204. //---------------------------------------------------------------------------
  205. void __fastcall TFrmControllerInfo::UpdateClientState(int AObj)
  206. {
  207. String sNormal = "정상";
  208. String sError = "오류";
  209. TcxDataController *pGDC = TvList->DataController;
  210. try
  211. {
  212. TvList->BeginUpdate();
  213. try
  214. {
  215. int nMemPtr;
  216. TCDSCtlr *pObj;
  217. for(int nRow = 0; nRow < FControllerCnt; nRow++)
  218. {
  219. nMemPtr = pGDC->Values[nRow][Col99->Index];
  220. pObj = (TCDSCtlr*)nMemPtr;
  221. if (!pObj) continue;
  222. if (pObj->Server.commState == comm_open)
  223. pGDC->Values[nRow][Col06->Index] = sNormal;
  224. else
  225. pGDC->Values[nRow][Col06->Index] = sError;
  226. pGDC->Values[nRow][Col07->Index] = pObj->OPER_MODE;
  227. }
  228. }
  229. catch(Exception &e)
  230. {
  231. }
  232. }
  233. __finally
  234. {
  235. TvList->EndUpdate();
  236. }
  237. }
  238. //---------------------------------------------------------------------------
  239. void __fastcall TFrmControllerInfo::Col01CustomDrawCell(TcxCustomGridTableView *Sender,
  240. TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  241. bool &ADone)
  242. {
  243. if (AViewInfo->GridRecord->RecordIndex < 0) return;
  244. Graphics::TBitmap *pBmp = NULL;
  245. pBmp = ImgState1->Picture->Bitmap;
  246. if (!VarIsNull(AViewInfo->GridRecord->DisplayTexts[Col00->Index]))
  247. {
  248. String sCode = AViewInfo->GridRecord->DisplayTexts[Col00->Index];
  249. int nCode = sCode.ToIntDef(2);
  250. if (nCode == comm_open ) pBmp = ImgState0->Picture->Bitmap;
  251. else if (nCode == comm_close) pBmp = ImgState1->Picture->Bitmap;
  252. else pBmp = ImgState3->Picture->Bitmap;
  253. }
  254. if (!pBmp) return;
  255. pBmp->Transparent = true;
  256. int nW, nH;
  257. nW = nH = 21;
  258. try
  259. {
  260. TColor bBrush = ACanvas->Brush->Color;
  261. if (AViewInfo->GridRecord->Selected)
  262. {
  263. if (AViewInfo->GridRecord->Index % 2 == 0)
  264. {
  265. bBrush = Sender->LookAndFeelPainter->DefaultContentEvenColor();
  266. }
  267. else
  268. {
  269. bBrush = Sender->LookAndFeelPainter->DefaultContentOddColor();
  270. }
  271. }
  272. ACanvas->Brush->Color = bBrush;
  273. TRect rc;
  274. TRect rcOrg = AViewInfo->Bounds;
  275. ACanvas->FillRect(rcOrg);
  276. nW = rcOrg.Bottom - rcOrg.Top - 4;
  277. rc.Top = rcOrg.Top+2;
  278. rc.Bottom = rcOrg.Bottom - 2;
  279. rc.Left = rcOrg.Left + (rcOrg.Width() - nW) / 2;
  280. rc.Right = rc.Left + nW;
  281. ACanvas->Canvas->StretchDraw(rc, pBmp);
  282. //ACanvas->Draw(AViewInfo->ContentBounds.Left, AViewInfo->ContentBounds.Top, pBmp);
  283. ADone = true;
  284. }
  285. catch(...) {}
  286. }
  287. //---------------------------------------------------------------------------
  288. void __fastcall TFrmControllerInfo::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  289. TMouseButton AButton, TShiftState AShift,
  290. bool &AHandled)
  291. {
  292. if (!ACellViewInfo) return;
  293. try {
  294. TcxDataController *pGDC = TvList->DataController;
  295. int nRow = pGDC->FocusedRecordIndex;
  296. if (nRow < 0) return;
  297. int nMemPtr = pGDC->Values[nRow][Col99->Index];
  298. if (!nMemPtr) return;
  299. if (!FrmCommLog->Showing)
  300. {
  301. FrmCommLog->Top = FrmMain->Top;
  302. //FrmCommLog->Left= FrmMain->Left+FrmMain->Width;
  303. FrmCommLog->Show();
  304. }
  305. else
  306. {
  307. FrmCommLog->BringToFront();
  308. }
  309. FrmCommLog->ResetDisplayLog(nMemPtr);
  310. } catch(...) {}
  311. }
  312. //---------------------------------------------------------------------------
  313. void __fastcall TFrmControllerInfo::TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  314. TMouseButton AButton, TShiftState AShift,
  315. bool &AHandled)
  316. {
  317. if (AButton != mbRight) return;
  318. if (!ACellViewInfo) return;
  319. try {
  320. TcxDataController *pGDC = TvList->DataController;
  321. int nRow = pGDC->FocusedRecordIndex;
  322. if (nRow < 0) return;
  323. FSelControllerNo = VarToStr(pGDC->Values[nRow][Col02->Index]);
  324. FSelControllerNm = VarToStr(pGDC->Values[nRow][Col04->Index]);
  325. TCDSCtlr *pObj = CDSCtlrManager->FLists.Find(FSelControllerNo);
  326. if (!pObj) return;
  327. if (pObj->Server.commState != comm_open)
  328. {
  329. return;
  330. }
  331. POINT p;
  332. GetCursorPos(&p);
  333. pmuController->Popup(p.x, p.y);
  334. } catch(...) {}
  335. }
  336. //---------------------------------------------------------------------------
  337. void __fastcall TFrmControllerInfo::pmuControllerPopup(TObject *Sender)
  338. {
  339. mnuControllerId->Caption = FSelControllerNm;
  340. }
  341. //---------------------------------------------------------------------------
  342. void __fastcall TFrmControllerInfo::mnuDlndScenarioClick(TObject *Sender)
  343. {
  344. //시나리오 다운로드
  345. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  346. if (!pCDSCtlr)
  347. {
  348. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  349. return;
  350. }
  351. if (!pCDSCtlr->FSession)
  352. {
  353. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  354. return;
  355. }
  356. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  357. pMsg->Type = eVmsScenarioDownload;
  358. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  359. g_jobQ.PushBlocking((DWORD)pMsg);
  360. }
  361. //---------------------------------------------------------------------------
  362. void __fastcall TFrmControllerInfo::mnuReqParamClick(TObject *Sender)
  363. {
  364. //파라미터 요청
  365. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  366. if (!pCDSCtlr)
  367. {
  368. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  369. return;
  370. }
  371. if (!pCDSCtlr->FSession)
  372. {
  373. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  374. return;
  375. }
  376. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  377. pMsg->Type = eVmsParamReq;
  378. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  379. g_jobQ.PushBlocking((DWORD)pMsg);
  380. }
  381. //---------------------------------------------------------------------------
  382. void __fastcall TFrmControllerInfo::LEDOnOffClick(TObject *Sender)
  383. {
  384. //LED On/Off
  385. TMenuItem *pItem = (TMenuItem*)Sender;
  386. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  387. if (!pCDSCtlr)
  388. {
  389. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  390. return;
  391. }
  392. if (!pCDSCtlr->FSession)
  393. {
  394. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  395. return;
  396. }
  397. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  398. pMsg->Type = eVmsLedPowerControl;
  399. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  400. pMsg->Buff[0] = (BYTE)pItem->Tag;
  401. g_jobQ.PushBlocking((DWORD)pMsg);
  402. }
  403. //---------------------------------------------------------------------------
  404. void __fastcall TFrmControllerInfo::FANOnOffClick(TObject *Sender)
  405. {
  406. //FAN On/Off
  407. TMenuItem *pItem = (TMenuItem*)Sender;
  408. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  409. if (!pCDSCtlr)
  410. {
  411. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  412. return;
  413. }
  414. if (!pCDSCtlr->FSession)
  415. {
  416. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  417. return;
  418. }
  419. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  420. pMsg->Type = eVmsFanPowerControl;
  421. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  422. pMsg->Buff[0] = (BYTE)pItem->Tag;
  423. g_jobQ.PushBlocking((DWORD)pMsg);
  424. }
  425. //---------------------------------------------------------------------------
  426. void __fastcall TFrmControllerInfo::mnuSetBrghClick(TObject *Sender)
  427. {
  428. //휘도설정
  429. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  430. if (!pCDSCtlr)
  431. {
  432. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  433. return;
  434. }
  435. if (!pCDSCtlr->FSession)
  436. {
  437. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  438. return;
  439. }
  440. FrmSetBrgh = new TFrmSetBrgh(this);
  441. try
  442. {
  443. try
  444. {
  445. FrmSetBrgh->EdMode->Text = String(pCDSCtlr->BRGH_MODE);
  446. FrmSetBrgh->EdCurrStep->Text = String(pCDSCtlr->BRGH_CURR_STEP);
  447. FrmSetBrgh->EdWeekStep->Text = String(pCDSCtlr->BRGH_WEEK_STEP);
  448. FrmSetBrgh->EdMghtStep->Text = String(pCDSCtlr->BRGH_NGHT_STEP);
  449. FrmSetBrgh->ShowModal();
  450. if (FrmSetBrgh->FUpdate)
  451. {
  452. if (!pCDSCtlr) return;
  453. if (!pCDSCtlr->FSession) return;
  454. SIGNT_BRGH_SET set;
  455. set.VMS_CTLR_NMBR = pCDSCtlr->CTLR_NMBR.ToIntDef(0);
  456. set.BrghMode = (BYTE)FrmSetBrgh->EdMode->Text.Trim().ToIntDef(30);
  457. set.BrghCurrStep = (BYTE)FrmSetBrgh->EdCurrStep->Text.Trim().ToIntDef(30);
  458. set.BrghWeekStep = (BYTE)FrmSetBrgh->EdWeekStep->Text.Trim().ToIntDef(30);
  459. set.BrghNghtStep = (BYTE)FrmSetBrgh->EdMghtStep->Text.Trim().ToIntDef(30);
  460. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  461. pMsg->Type = eVmsBrghSet;
  462. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  463. memcpy(pMsg->Buff, (char*)&set, sizeof(SIGNT_BRGH_SET));
  464. g_jobQ.PushBlocking((DWORD)pMsg);
  465. }
  466. }
  467. catch(Exception &e)
  468. {
  469. }
  470. }
  471. __finally
  472. {
  473. SAFE_DELETE(FrmSetBrgh);
  474. }
  475. }
  476. //---------------------------------------------------------------------------
  477. void __fastcall TFrmControllerInfo::mnuSetConfigClick(TObject *Sender)
  478. {
  479. //환경설정
  480. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  481. if (!pCDSCtlr)
  482. {
  483. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  484. return;
  485. }
  486. if (!pCDSCtlr->FSession)
  487. {
  488. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  489. return;
  490. }
  491. FrmSetConfig = new TFrmSetConfig(this);
  492. try
  493. {
  494. try
  495. {
  496. FrmSetConfig->EdFanTmpr->Text = String(pCDSCtlr->FAN_RUN_TMPR);
  497. FrmSetConfig->EdHetrTmpr->Text = String(pCDSCtlr->HETR_RUN_TMPR);
  498. FrmSetConfig->EdStrTm->Text = pCDSCtlr->PANL_ON_TIME;
  499. FrmSetConfig->EdEndTm->Text = pCDSCtlr->PANL_OFF_TIME;
  500. FrmSetConfig->ShowModal();
  501. if (FrmSetConfig->FUpdate)
  502. {
  503. if (!pCDSCtlr) return;
  504. if (!pCDSCtlr->FSession) return;
  505. SIGNT_CONFIG_SET set;
  506. set.VMS_CTLR_NMBR = pCDSCtlr->CTLR_NMBR.ToIntDef(0);
  507. set.FanRunTmpr = (BYTE)FrmSetConfig->EdFanTmpr->Text.Trim().ToIntDef(30);
  508. set.HetrRunTmpr = (BYTE)FrmSetConfig->EdHetrTmpr->Text.Trim().ToIntDef(0);
  509. memcpy(set.PanlOnTime, AnsiString(FrmSetConfig->EdStrTm->Text.Trim()).c_str(), 4);
  510. memcpy(set.PanlOffTime, AnsiString(FrmSetConfig->EdEndTm->Text.Trim()).c_str(), 4);
  511. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  512. pMsg->Type = eVmsConfigSet;
  513. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  514. memcpy(pMsg->Buff, (char*)&set, sizeof(SIGNT_CONFIG_SET));
  515. g_jobQ.PushBlocking((DWORD)pMsg);
  516. }
  517. }
  518. catch(Exception &e)
  519. {
  520. }
  521. }
  522. __finally
  523. {
  524. SAFE_DELETE(FrmSetConfig);
  525. }
  526. }
  527. //---------------------------------------------------------------------------
  528. void __fastcall TFrmControllerInfo::mnuSetTimeClick(TObject *Sender)
  529. {
  530. //시간설정
  531. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  532. if (!pCDSCtlr)
  533. {
  534. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  535. return;
  536. }
  537. if (!pCDSCtlr->FSession)
  538. {
  539. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  540. return;
  541. }
  542. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  543. pMsg->Type = eVmsTimeControl;
  544. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  545. memcpy(pMsg->Buff, AnsiString(Now().FormatString("yyyymmddhhnnss")).c_str(), MAX_SYS_TIME);
  546. g_jobQ.PushBlocking((DWORD)pMsg);
  547. }
  548. //---------------------------------------------------------------------------
  549. void __fastcall TFrmControllerInfo::mnuDisconnectClick(TObject *Sender)
  550. {
  551. //연결종료
  552. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  553. if (!pCDSCtlr)
  554. {
  555. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  556. return;
  557. }
  558. if (!pCDSCtlr->FSession)
  559. {
  560. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  561. return;
  562. }
  563. pCDSCtlr->FSession->Disconnect();
  564. }
  565. //---------------------------------------------------------------------------
  566. void __fastcall TFrmControllerInfo::mnuResetClick(TObject *Sender)
  567. {
  568. //제어기리셋
  569. TCDSCtlr *pCDSCtlr = CDSCtlrManager->FLists.Find(FSelControllerNo);
  570. if (!pCDSCtlr)
  571. {
  572. MERROR("%s Not Found", AnsiString(FSelControllerNo).c_str());
  573. return;
  574. }
  575. if (!pCDSCtlr->FSession)
  576. {
  577. MERROR("%s Session NULL", AnsiString(FSelControllerNo).c_str());
  578. return;
  579. }
  580. TMenuItem *pMenu = (TMenuItem*)Sender;
  581. IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff();
  582. pMsg->Type = eVmsReset;
  583. pMsg->ObjPtr = (DWORD)pCDSCtlr->FSession;
  584. pMsg->Buff[0] = pMenu->Tag;//1; //하드웨어 리셋
  585. g_jobQ.PushBlocking((DWORD)pMsg);
  586. }
  587. //---------------------------------------------------------------------------
  588. void __fastcall TFrmControllerInfo::mnuRefreshClick(TObject *Sender)
  589. {
  590. UpdateServerState(0);
  591. UpdateClientState(0);
  592. }
  593. //---------------------------------------------------------------------------
  594. void __fastcall TFrmControllerInfo::Panel6DblClick(TObject *Sender)
  595. {
  596. UpdateServerState(0);
  597. UpdateClientState(0);
  598. }
  599. //---------------------------------------------------------------------------
  600. void __fastcall TFrmControllerInfo::Panel2DblClick(TObject *Sender)
  601. {
  602. CtlrItr it;
  603. for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it)
  604. {
  605. TCDSCtlr *pObj = (TCDSCtlr*)it->second;
  606. pObj->dwConnectCnt = pObj->Server.commState == comm_open ? 1 : 0;
  607. }
  608. UpdateServerState(0);
  609. UpdateClientState(0);
  610. }
  611. //---------------------------------------------------------------------------