FrmVmsInfoF.cpp 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FrmVmsInfoF.h"
  5. #include "FrmVmsLogF.h"
  6. #include "FrmMainF.h"
  7. #include "AppGlobalF.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma resource "*.dfm"
  11. TFrmVmsInfo *FrmVmsInfo = NULL;
  12. String VmsModuleType(TVmsCtlr *AObj)
  13. {
  14. if (AObj->VmsType == "VUTN") return "문자식";
  15. return "도형식";
  16. }
  17. //---------------------------------------------------------------------------
  18. String VmsOperMode(TVmsCtlr *AObj)
  19. {
  20. if (AObj->OPER_MODE == "A") return "자동";
  21. return "고정";
  22. }
  23. //---------------------------------------------------------------------------
  24. String VmsComm(TVmsCtlr *AObj)
  25. {
  26. if (AObj->Client.Comm == state_open) return "정상";
  27. return "장애";
  28. }
  29. //---------------------------------------------------------------------------
  30. String VmsModuleState(TVmsCtlr *AObj)
  31. {
  32. if (AObj->Client.Comm != state_open) return "-";
  33. if (AObj->RSTATE.ModuleState == vms_normal) return "정상";
  34. return "장애";
  35. }
  36. //---------------------------------------------------------------------------
  37. String VmsModulePower(TVmsCtlr *AObj)
  38. {
  39. if (AObj->Client.Comm != state_open) return "-";
  40. if (AObj->RSTATE.ModulePowerStatus == vms_on) return "켜짐";
  41. return "꺼짐";
  42. }
  43. //---------------------------------------------------------------------------
  44. String VmsModuleLuminance(TVmsCtlr *AObj)
  45. {
  46. if (AObj->Client.Comm != state_open) return "-";
  47. int nLuminance = AObj->RSTATE.LuminanceStatus;
  48. return String(nLuminance);
  49. }
  50. //---------------------------------------------------------------------------
  51. String VmsModuleDoor(TVmsCtlr *AObj)
  52. {
  53. if (AObj->Client.Comm != state_open) return "-";
  54. if (AObj->RSTATE.DoorStatus == vms_open) return "열림";
  55. return "닫힘";
  56. }
  57. //---------------------------------------------------------------------------
  58. String VmsModuleFan(TVmsCtlr *AObj)
  59. {
  60. if (AObj->Client.Comm != state_open) return "-";
  61. if (AObj->RSTATE.FanStatus == vms_on) return "동작";
  62. return "정지";
  63. }
  64. //---------------------------------------------------------------------------
  65. String VmsModuleHeater(TVmsCtlr *AObj)
  66. {
  67. if (AObj->Client.Comm != state_open) return "-";
  68. if (AObj->RSTATE.HeaterStatus == vms_on) return "가동";
  69. return "중지";
  70. }
  71. //---------------------------------------------------------------------------
  72. String VmsModuleTemp(TVmsCtlr *AObj)
  73. {
  74. if (AObj->Client.Comm != state_open) return "-";
  75. int nTemp = AObj->RSTATE.BodyTemp;
  76. return String(nTemp);//+"℃";
  77. }
  78. //---------------------------------------------------------------------------
  79. //---------------------------------------------------------------------------
  80. __fastcall TFrmVmsInfo::TFrmVmsInfo(TComponent* Owner)
  81. : TForm(Owner)
  82. {
  83. lvVmsInfo->Clear();
  84. lvVmsInfo->ViewStyle = vsReport;
  85. FViewMode = 0;
  86. }
  87. //---------------------------------------------------------------------------
  88. void __fastcall TFrmVmsInfo::UpdateVmsList()
  89. {
  90. int nRowIdx = 0;
  91. TListItem *NewItem;
  92. lvVmsInfo->Items->BeginUpdate();
  93. lvVmsInfo->Clear();
  94. VmsIterator it;
  95. for(it=VmsManager->FLists.FMapObject.begin(); it != VmsManager->FLists.FMapObject.end(); ++it)
  96. {
  97. TVmsCtlr *pObj = (TVmsCtlr*)it->second;
  98. NewItem = lvVmsInfo->Items->Add();
  99. NewItem->Caption = pObj->VmsId;//String(ii+1);
  100. NewItem->ImageIndex = 0;
  101. NewItem->SubItems->Add(pObj->VmsNo);
  102. NewItem->SubItems->Add(pObj->VmsId);
  103. NewItem->SubItems->Add(pObj->Name);
  104. NewItem->SubItems->Add(pObj->IpAddress);
  105. NewItem->SubItems->Add("-"); //통신
  106. NewItem->SubItems->Add("-"); //모듈
  107. NewItem->SubItems->Add("-"); //전원
  108. NewItem->SubItems->Add("-"); //휘도
  109. NewItem->SubItems->Add("-"); //도어
  110. NewItem->SubItems->Add("-"); //팬
  111. NewItem->SubItems->Add("-"); //히터
  112. NewItem->SubItems->Add("-"); //온도
  113. NewItem->SubItems->Add("-"); //Connect
  114. NewItem->SubItems->Add("-"); //Disconnect
  115. NewItem->Data = (void*)pObj;
  116. }
  117. lvVmsInfo->Items->EndUpdate();
  118. VmsManager->Total = VmsManager->Count;
  119. VmsManager->Error = VmsManager->Count;
  120. VmsManager->Normal = 0;
  121. VmsManager->Module = 0;
  122. plTot->Caption = String(VmsManager->Count);
  123. plErr->Caption = String(VmsManager->Count);
  124. plNor->Caption = "0";
  125. }
  126. //---------------------------------------------------------------------------
  127. void __fastcall TFrmVmsInfo::UpdateServerState(int AIdx)
  128. {
  129. try
  130. {
  131. int ii, nCnt;
  132. int nErrCnt = 0;
  133. TListItem *NewItem;
  134. nCnt = lvVmsInfo->Items->Count;
  135. for(ii = 0; ii < nCnt; ii++)
  136. {
  137. NewItem = lvVmsInfo->Items->Item[ii];
  138. TVmsCtlr *pObj = (TVmsCtlr*)NewItem->Data;
  139. if (pObj)
  140. {
  141. if (pObj->Server.Status == process_run)
  142. NewItem->ImageIndex = 1;
  143. else
  144. {
  145. NewItem->ImageIndex = 0;
  146. nErrCnt++;
  147. }
  148. }
  149. NewItem->SubItems->Strings[12] = pObj->ConnectTm; //Connect
  150. NewItem->SubItems->Strings[13] = pObj->DisconnectTm; //Disconnect
  151. }
  152. VmsManager->Error = nErrCnt;
  153. VmsManager->Normal = nCnt-nErrCnt;
  154. plTot->Caption = String(nCnt);
  155. plErr->Caption = String(nErrCnt);
  156. plNor->Caption = String(nCnt-nErrCnt);
  157. }
  158. catch(Exception &e)
  159. {
  160. }
  161. }
  162. //---------------------------------------------------------------------------
  163. void __fastcall TFrmVmsInfo::UpdateClientState(int AIdx)
  164. {
  165. try
  166. {
  167. int ii, nCnt;
  168. TListItem *NewItem;
  169. nCnt = lvVmsInfo->Items->Count;
  170. for(ii = 0; ii < nCnt; ii++)
  171. {
  172. NewItem = lvVmsInfo->Items->Item[ii];
  173. TVmsCtlr *pObj = (TVmsCtlr*)NewItem->Data;
  174. if (pObj)
  175. {
  176. if (pObj->Client.Status == process_run)
  177. {
  178. if (pObj->Client.Comm == state_open)
  179. NewItem->SubItems->Strings[4] = "정상";
  180. else
  181. NewItem->SubItems->Strings[4] = "-";
  182. }
  183. else
  184. {
  185. NewItem->SubItems->Strings[4] = "오류";
  186. }
  187. NewItem->SubItems->Strings[ 5] = VmsModuleState(pObj); //모듈
  188. NewItem->SubItems->Strings[ 6] = VmsModulePower(pObj); //전원
  189. NewItem->SubItems->Strings[ 7] = VmsModuleLuminance(pObj); //휘도
  190. NewItem->SubItems->Strings[ 8] = VmsModuleDoor(pObj); //도어
  191. NewItem->SubItems->Strings[ 9] = VmsModuleFan(pObj); //팬
  192. NewItem->SubItems->Strings[10] = VmsModuleHeater(pObj); //히터
  193. NewItem->SubItems->Strings[11] = VmsModuleTemp(pObj); //온도
  194. }
  195. }
  196. }
  197. catch(Exception &e)
  198. {
  199. }
  200. }
  201. //---------------------------------------------------------------------------
  202. void __fastcall TFrmVmsInfo::Image3DblClick(TObject *Sender)
  203. {
  204. FViewMode++;
  205. lvVmsInfo->IconOptions->Arrangement = TIconArrangement::iaTop;
  206. switch(FViewMode)
  207. {
  208. case 1: lvVmsInfo->ViewStyle = vsIcon;
  209. break;
  210. case 2: lvVmsInfo->ViewStyle = vsList;
  211. break;
  212. case 3: lvVmsInfo->ViewStyle = vsReport;
  213. break;
  214. case 4: lvVmsInfo->IconOptions->Arrangement = TIconArrangement::iaLeft;
  215. lvVmsInfo->ViewStyle = vsSmallIcon;
  216. break;
  217. case 5: lvVmsInfo->ViewStyle = vsReport;
  218. FViewMode = 0;
  219. break;
  220. }
  221. }
  222. //---------------------------------------------------------------------------
  223. void __fastcall TFrmVmsInfo::lvVmsInfoDblClick(TObject *Sender)
  224. {
  225. int nIdx = lvVmsInfo->Selected->Index;
  226. TListItem *NewItem = lvVmsInfo->Items->Item[nIdx];
  227. TVmsCtlr *pObj = (TVmsCtlr*)NewItem->Data;
  228. if (!pObj) return;
  229. if (!FrmVmsLog->Showing)
  230. {
  231. FrmVmsLog->Top = FrmMain->Top;
  232. //FrmVmsLog->Left= FrmMain->Left+FrmMain->Width;
  233. FrmVmsLog->Show();
  234. }
  235. FrmVmsLog->DisplayVmsLog((int)pObj);
  236. }
  237. //---------------------------------------------------------------------------