FrmCctvCamF.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FrmCctvCamF.h"
  5. #include "AppGlobalF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "AcesTechXPlayer2Lib_OCX"
  9. #pragma resource "*.dfm"
  10. //TFrmCctvCam *FrmCctvCam;
  11. //---------------------------------------------------------------------------
  12. __fastcall TFrmCctvCam::TFrmCctvCam(TComponent* Owner)
  13. : TForm(Owner)
  14. {
  15. PnlBlob->Visible = false;
  16. PnlBlob->Align = alClient;
  17. FDispBlob = false;
  18. FObj = NULL;
  19. FPlay = false;
  20. FAutoPlay = true;
  21. FConHandle = 0;
  22. //AcesTechXPlayer21->DoubleBuffered = true;
  23. InitCamera(NULL, FAutoPlay);
  24. }
  25. //---------------------------------------------------------------------------
  26. void __fastcall TFrmCctvCam::TmrShowTimer(TObject *Sender)
  27. {
  28. TmrShow->Enabled = false;
  29. if (FObj)
  30. {
  31. Caption = FObj->CCTV_CTLR_ID + ": " + FObj->ISTL_LCTN_NM;
  32. if (FDispBlob == false)
  33. {
  34. Connect();
  35. }
  36. }
  37. }
  38. //---------------------------------------------------------------------------
  39. void __fastcall TFrmCctvCam::FormShow(TObject *Sender)
  40. {
  41. if (FObj) PnlBack->Caption = FObj->ISTL_LCTN_NM;
  42. else PnlBack->Caption = "";
  43. RefreshCctv();
  44. TmrShow->Enabled = true;
  45. }
  46. //---------------------------------------------------------------------------
  47. void __fastcall TFrmCctvCam::FormClose(TObject *Sender, TCloseAction &Action)
  48. {
  49. try {
  50. Disconnect();
  51. FObj->FData2 = NULL;
  52. } catch(...) {}
  53. Action = caFree;
  54. }
  55. //---------------------------------------------------------------------------
  56. void __fastcall TFrmCctvCam::FormDestroy(TObject *Sender)
  57. {
  58. try {
  59. Disconnect();
  60. FObj->FData2 = NULL;
  61. } catch(...) {}
  62. }
  63. //---------------------------------------------------------------------------
  64. void __fastcall TFrmCctvCam::RefreshCctv()
  65. {
  66. FDispBlob = false;
  67. PnlBlob->Visible = false;
  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. }
  155. //---------------------------------------------------------------------------
  156. void __fastcall TFrmCctvCam::MnuConnectClick(TObject *Sender)
  157. {
  158. FAutoPlay = true;
  159. Connect();
  160. }
  161. //---------------------------------------------------------------------------
  162. void __fastcall TFrmCctvCam::MnuDisconnectClick(TObject *Sender)
  163. {
  164. FAutoPlay = false;
  165. Disconnect();
  166. }
  167. //---------------------------------------------------------------------------
  168. void __fastcall TFrmCctvCam::Connect()
  169. {
  170. Disconnect();
  171. PnlBack->Caption = "연결중...";
  172. AcesTechXPlayer21->Visible = true;
  173. try
  174. {
  175. AcesTechXPlayer21->URL = FObj->STRM_SESN_NM;
  176. FConHandle = AcesTechXPlayer21->ConnectAsync();
  177. }
  178. catch(...)
  179. {
  180. }
  181. FPlay = true;
  182. }
  183. //---------------------------------------------------------------------------
  184. void __fastcall TFrmCctvCam::Disconnect()
  185. {
  186. if (!FPlay) return;
  187. try
  188. {
  189. //if (FConHandle)
  190. {
  191. AcesTechXPlayer21->Close();
  192. }
  193. FConHandle = 0;
  194. }
  195. catch(...)
  196. {
  197. }
  198. PnlBack->Caption = "Disconnected";
  199. AcesTechXPlayer21->Visible = false;
  200. FConHandle = 0;
  201. FPlay = false;
  202. }
  203. //---------------------------------------------------------------------------
  204. void __fastcall TFrmCctvCam::InitCamera(void *ACctv, bool AAutoPlay/*=true*/)
  205. {
  206. FAutoPlay = AAutoPlay;
  207. }
  208. //---------------------------------------------------------------------------