FrmVmsCamF.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FrmVmsCamF.h"
  5. #include "AppGlobalF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma resource "*.dfm"
  9. //TFrmCctvCam *FrmCctvCam;
  10. //---------------------------------------------------------------------------
  11. __fastcall TFrmVmsCam::TFrmVmsCam(TComponent* Owner)
  12. : TForm(Owner)
  13. {
  14. PnlBlob->Visible = false;
  15. PnlBlob->Align = alClient;
  16. FDispBlob = false;
  17. FObj = NULL;
  18. FPlay = false;
  19. FAutoPlay = true;
  20. FConHandle = 0;
  21. //AcesTechXPlayer21->DoubleBuffered = true;
  22. InitCamera(NULL, FAutoPlay);
  23. }
  24. //---------------------------------------------------------------------------
  25. void __fastcall TFrmVmsCam::TmrShowTimer(TObject *Sender)
  26. {
  27. TmrShow->Enabled = false;
  28. if (FObj)
  29. {
  30. Caption = String(FObj->VMS_CTLR_NMBR) + ": " + FObj->VMS_NM;
  31. if (FDispBlob == false)
  32. {
  33. Connect();
  34. }
  35. }
  36. }
  37. //---------------------------------------------------------------------------
  38. void __fastcall TFrmVmsCam::FormShow(TObject *Sender)
  39. {
  40. if (FObj) PnlBack->Caption = FObj->ISTL_LCTN_NM;
  41. else PnlBack->Caption = "";
  42. RefreshCctv();
  43. TmrShow->Enabled = true;
  44. }
  45. //---------------------------------------------------------------------------
  46. void __fastcall TFrmVmsCam::FormClose(TObject *Sender, TCloseAction &Action)
  47. {
  48. try {
  49. Disconnect();
  50. FObj->FData2 = NULL;
  51. } catch(...) {}
  52. Action = caFree;
  53. }
  54. //---------------------------------------------------------------------------
  55. void __fastcall TFrmVmsCam::FormDestroy(TObject *Sender)
  56. {
  57. try {
  58. Disconnect();
  59. FObj->FData2 = NULL;
  60. } catch(...) {}
  61. }
  62. //---------------------------------------------------------------------------
  63. void __fastcall TFrmVmsCam::RefreshCctv()
  64. {
  65. FDispBlob = false;
  66. PnlBlob->Visible = false;
  67. #if 0
  68. String sQry;
  69. if (!FObj)
  70. {
  71. return;
  72. }
  73. sQry = "SELECT CCTV_SBST_DSPL_YN, CCTV_SBST_IMGN \r\n"
  74. " FROM TB_CCTV_CTLR \r\n"
  75. " WHERE CCTV_CTLR_ID = :p01 \r\n";
  76. try
  77. {
  78. pADO->Close();
  79. pADO->SQL->Clear();
  80. pADO->Connection = ITSDb_GetConnection();
  81. pADO->SQL->Text = sQry;
  82. pADO->Parameters->ParamByName("p01")->Value = FObj->CCTV_CTLR_ID;
  83. pADO->Open();
  84. }
  85. catch(EDatabaseError &E)
  86. {
  87. PnlBlob->Caption = "대체영상 이미지 정보 읽기 실패";
  88. ShowMessage(String(E.ClassName()) + E.Message);
  89. return;
  90. }
  91. if (pADO->RecordCount == 0)
  92. {
  93. pADO->Close();
  94. return;
  95. }
  96. ForceDirectories(g_sTempDir);
  97. TADOBlobStream *BS;
  98. int nFileSize = 0;
  99. String sImgFile = g_sTempDir + "CCTVB_" + FObj->CCTV_CTLR_ID + ".bmp";
  100. try {
  101. DeleteFile(sImgFile);
  102. } catch(...) {}
  103. String sDispBlob;
  104. try
  105. {
  106. sDispBlob = pADO->FieldByName("CCTV_SBST_DSPL_YN")->AsString;
  107. if (sDispBlob == "Y")
  108. {
  109. BS = (TADOBlobStream *)pADO->CreateBlobStream(pADO->FieldByName("CCTV_SBST_IMGN"), bmRead);
  110. //ImgBlob->Picture->Graphic->LoadFromStream(BS);
  111. BS->SaveToFile(sImgFile);
  112. nFileSize = BS->Size;
  113. delete BS;
  114. }
  115. pADO->Close();
  116. }
  117. catch(Exception &e)
  118. {
  119. delete BS;
  120. PnlBlob->Caption = "대체영상 이미지 스트림 로딩 실패";
  121. return;
  122. }
  123. if (sDispBlob == "Y")
  124. {
  125. FDispBlob = true;
  126. PnlBlob->Visible = true;
  127. PnlBack->Visible = false;
  128. if (nFileSize)
  129. {
  130. try
  131. {
  132. ImgBlob->Picture->LoadFromFile(sImgFile);
  133. return;
  134. }
  135. catch(...)
  136. {
  137. ImgBlob->Visible = false;
  138. PnlBlob->Caption = "대체영상 이미지 파일 로딩 실패";
  139. return;
  140. }
  141. }
  142. else
  143. {
  144. ImgBlob->Visible = false;
  145. PnlBlob->Caption = "대체영상 이미지 사이즈 오류";
  146. }
  147. }
  148. else
  149. {
  150. FDispBlob = false;
  151. PnlBlob->Visible = false;
  152. PnlBack->Visible = true;
  153. }
  154. #endif
  155. }
  156. //---------------------------------------------------------------------------
  157. void __fastcall TFrmVmsCam::MnuConnectClick(TObject *Sender)
  158. {
  159. FAutoPlay = true;
  160. Connect();
  161. }
  162. //---------------------------------------------------------------------------
  163. void __fastcall TFrmVmsCam::MnuDisconnectClick(TObject *Sender)
  164. {
  165. FAutoPlay = false;
  166. Disconnect();
  167. }
  168. //---------------------------------------------------------------------------
  169. void __fastcall TFrmVmsCam::Connect()
  170. {
  171. Disconnect();
  172. PnlBack->Caption = "연결중...";
  173. //AcesTechXPlayer21->Visible = true;
  174. try
  175. {
  176. if (FObj->STRM_SESN_NM != "")
  177. {
  178. //AcesTechXPlayer21->URL = FObj->STRM_SESN_NM;
  179. //FConHandle = AcesTechXPlayer21->ConnectAsync();
  180. }
  181. }
  182. catch(...)
  183. {
  184. }
  185. FPlay = true;
  186. }
  187. //---------------------------------------------------------------------------
  188. void __fastcall TFrmVmsCam::Disconnect()
  189. {
  190. if (!FPlay) return;
  191. try
  192. {
  193. //if (FConHandle)
  194. {
  195. //AcesTechXPlayer21->Close();
  196. }
  197. FConHandle = 0;
  198. }
  199. catch(...)
  200. {
  201. }
  202. PnlBack->Caption = "Disconnected";
  203. //AcesTechXPlayer21->Visible = false;
  204. FConHandle = 0;
  205. FPlay = false;
  206. }
  207. //---------------------------------------------------------------------------
  208. void __fastcall TFrmVmsCam::InitCamera(void *ACctv, bool AAutoPlay/*=true*/)
  209. {
  210. FAutoPlay = AAutoPlay;
  211. }
  212. //---------------------------------------------------------------------------