FrmCctvCamCtrlF.cpp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "AppGlobalF.h"
  4. #include "ITSSkinF.h"
  5. #include "ITSUtilF.h"
  6. #include "ITSLangTransF.h"
  7. #include "FrmInitializeF.h"
  8. #include "DMDbF.h"
  9. #pragma hdrstop
  10. #include "FrmCctvCamCtrlF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "cxButtons"
  14. #pragma link "cxCalc"
  15. #pragma link "cxCheckBox"
  16. #pragma link "cxClasses"
  17. #pragma link "cxContainer"
  18. #pragma link "cxControls"
  19. #pragma link "cxCustomData"
  20. #pragma link "cxData"
  21. #pragma link "cxDataStorage"
  22. #pragma link "cxEdit"
  23. #pragma link "cxFilter"
  24. #pragma link "cxGraphics"
  25. #pragma link "cxGrid"
  26. #pragma link "cxGridBandedTableView"
  27. #pragma link "cxGridCustomTableView"
  28. #pragma link "cxGridCustomView"
  29. #pragma link "cxGridLevel"
  30. #pragma link "cxGridTableView"
  31. #pragma link "cxGroupBox"
  32. #pragma link "cxLabel"
  33. #pragma link "cxLookAndFeelPainters"
  34. #pragma link "cxLookAndFeels"
  35. #pragma link "cxMaskEdit"
  36. #pragma link "cxPC"
  37. #pragma link "cxPCdxBarPopupMenu"
  38. #pragma link "cxSpinEdit"
  39. #pragma link "cxStyles"
  40. #pragma link "cxTextEdit"
  41. #pragma link "dxSkinBlue"
  42. #pragma link "dxSkinsCore"
  43. #pragma link "dxSkinscxPCPainter"
  44. #pragma link "IdBaseComponent"
  45. #pragma link "IdComponent"
  46. #pragma link "IdIcmpClient"
  47. #pragma link "IdRawBase"
  48. #pragma link "IdRawClient"
  49. #pragma link "ImageBtn"
  50. #pragma link "dxSkinBlack"
  51. #pragma link "dxSkinsForm"
  52. #pragma link "dxSkinMcSkin"
  53. #pragma link "IdHTTP"
  54. #pragma link "IdTCPClient"
  55. #pragma link "IdTCPConnection"
  56. #pragma link "AcesTechXPlayer2Lib_OCX"
  57. #pragma link "FRAME_CctvStateListF"
  58. #pragma resource "*.dfm"
  59. TFrmCctvCamCtrl *FrmCctvCamCtrl = NULL;
  60. //{* Information Bar *}
  61. #define CAP_CAMERA_NAME 0x01
  62. #define CAP_TIME 0x02
  63. #define CAP_CHANNEL 0x04
  64. #define CAP_SIZE 0x08
  65. #define CAP_EVENT 0x10
  66. #define CAP_FPSCHANGED 0x20
  67. //{* Pan/tilt/Zoom and Transparent controls *}
  68. #define CTL_FOCUS_CONT 0x2001
  69. #define CTL_PTZ_CONT 0x2002
  70. #define CTL_TRANSPARENT 0x7000
  71. #define CTL_TRANSPARENT_RS232 0x7001
  72. //{* OCXState for NVSMPEG4OCX *}
  73. #define GRAPH_NONE 0x00000000
  74. #define GRAPH_PREVIEW 0x00000001
  75. #define GRAPH_CAPTURE 0x00000002
  76. #define GRAPH_PREVIEWCAPTURE 0x00000003
  77. #define GRAPH_AUDIO_LISTEN 0x00000100
  78. #define GRAPH_AUDIO_CAPTURE 0x00000200
  79. #define GRAPH_AUDIO_LISTENCAPTURE 0x00000400
  80. #define GRAPH_STATE_RUNNING 0x80000000
  81. #define SB_PAN_LEFT 0x000000C4
  82. #define SB_PAN_RIGHT 0x0000003C
  83. #define SB_TILT_UP 0x00003C00
  84. #define SB_TILT_DOWN 0x0000C400
  85. #define SB_ZOOM_IN 0x003C0000
  86. #define SB_ZOOM_OUT 0x00C40000
  87. #define SB_FOCUS_IN 0x3C
  88. #define SB_FOCUS_OUT 0xC4
  89. enum { E_MJPG=0, E_MP4S, E_DX50, E_MPEG2, E_MPEG1, E_H264 };
  90. enum { BR_32K=0, BR_64K, BR_128K, BR_256K, BR_384K, BR_500K, BR_750K, BR_1M, BR_1_5M, BR_2M, BR_4M, BR_5M, BR_6M, BR_7M, BR_8M };
  91. enum { S_1080P=0, S_720P, S_D1, S_4CIF, S_VGA, S_HD1, S_H4CIF, S_HVGA, S_CIF, S_QVGA, S_QCIF, S_QQVGA };
  92. #define PRESET_SET 0x1020 // Unsigned 1 byte
  93. #define PRESET_MOVE 0x1021 // Unsigned 1 byte
  94. #define PRESET_CLEAR 0x1022 // Unsigned 1 byte
  95. //---------------------------------------------------------------------------
  96. __fastcall TFrmCctvCamCtrl::TFrmCctvCamCtrl(TComponent* Owner)
  97. : TForm(Owner)
  98. {
  99. //::CoInitialize(NULL);
  100. ITSSkin_Initialize(Application, "kr", true, true);
  101. LangTrans->Translate(this, ITSDb_GetConnection());
  102. ITSSkin_Load(this);
  103. LoadLocalSkin();
  104. //CMM_LoadForm(g_sFormsDir, this);
  105. FSelCtlr = NULL;
  106. FRAMECctvStateList1->PnlTop->Visible = false;
  107. FRAMECctvStateList1->PnlBottom->Visible = false;
  108. FRAMECctvStateList1->TvList->OptionsView->Footer = false;
  109. FSelIds = new TStringList();
  110. FTitle = Caption;
  111. //TabPreset->Visible = false;
  112. //TabPreset->TabVisible = false;
  113. FStrmPlay = false;
  114. FStrmHandle = 0;
  115. PgCam->Properties->HideTabs = true;
  116. PnlCamera->ParentColor = false;
  117. FTmrShow = true;
  118. }
  119. //---------------------------------------------------------------------------
  120. void __fastcall TFrmCctvCamCtrl::CommClose()
  121. {
  122. try
  123. {
  124. SAFE_DELETE(FSelIds);
  125. CMM_SaveForm(g_sFormsDir, this);
  126. CloseRtsp();
  127. //::CoUninitialize();
  128. }
  129. catch(...)
  130. {
  131. }
  132. }
  133. //---------------------------------------------------------------------------
  134. void __fastcall TFrmCctvCamCtrl::FormShow(TObject *Sender)
  135. {
  136. Refresh();
  137. TmrShow->Enabled = FTmrShow;
  138. }
  139. //---------------------------------------------------------------------------
  140. void __fastcall TFrmCctvCamCtrl::FormActivate(TObject *Sender)
  141. {
  142. ActivateForm(true);
  143. }
  144. //---------------------------------------------------------------------------
  145. void __fastcall TFrmCctvCamCtrl::FormDeactivate(TObject *Sender)
  146. {
  147. ActivateForm(false);
  148. }
  149. //---------------------------------------------------------------------------
  150. void __fastcall TFrmCctvCamCtrl::LoadLocalSkin()
  151. {
  152. PnlCamera->ParentColor = false;
  153. PnlCamera->Color = clBlack;
  154. Refresh();
  155. }
  156. //---------------------------------------------------------------------------
  157. void __fastcall TFrmCctvCamCtrl::TmrShowTimer(TObject *Sender)
  158. {
  159. TmrShow->Enabled = false;
  160. if (!CctvCtlrManager)
  161. {
  162. CctvCtlrManager = new TCctvCtlrManager();
  163. }
  164. FrmInitialize = new TFrmInitialize(this);
  165. FrmInitialize->ShowModal();
  166. FrmInitialize = NULL;
  167. FRAMECctvStateList1->UpdateList();
  168. FRAMECctvStateList1->RefreshStatus();
  169. FRAMECctvStateList1->CxList->Enabled = false;
  170. UpdatePingList();
  171. FRAMECctvStateList1->CxList->Enabled = true;
  172. BtnStatRefresh->Enabled = true;
  173. TmrRefresh->Enabled = true;
  174. }
  175. //---------------------------------------------------------------------------
  176. void __fastcall TFrmCctvCamCtrl::FormClose(TObject *Sender, TCloseAction &Action)
  177. {
  178. try {
  179. CommClose();
  180. FrmCctvCamCtrl = NULL;
  181. Action = caFree;
  182. } catch(...) {}
  183. }
  184. //---------------------------------------------------------------------------
  185. void __fastcall TFrmCctvCamCtrl::OnMainFormMessage(TMessage &Msg)
  186. {
  187. }
  188. //---------------------------------------------------------------------------
  189. void __fastcall TFrmCctvCamCtrl::OnCctvStateRefreshMessage(TMessage &Msg)
  190. {
  191. FRAMECctvStateList1->RefreshStatus();
  192. RefreshPingList();
  193. }
  194. //---------------------------------------------------------------------------
  195. void __fastcall TFrmCctvCamCtrl::ActivateForm(bool AActivate)
  196. {
  197. if (AActivate) FRAMECctvStateList1->RefreshStatus();
  198. }
  199. //---------------------------------------------------------------------------
  200. void __fastcall TFrmCctvCamCtrl::InitForm()
  201. {
  202. ClearPreset();
  203. EdCtlrId->Text = "";
  204. EdCtlrNm->Text = "";
  205. EdCtlrIp->Text = "";
  206. Se_CCTV_CTLR_PORT->Value = 0;
  207. EdTypeNm->Text = "";
  208. Ed_STRM_SESN_NM->Text = "";
  209. Ed_STRM_RTSP_ADDR->Text = "";
  210. Ed_STRM_RTMP_ADDR->Text = "";
  211. Ed_STRM_HTTP_ADDR->Text = "";
  212. Ed_INTR_RTMP_ADDR->Text = "";
  213. EdCmraId->Text = "";
  214. EdCmraPswd->Text = "";
  215. BtnWebCamUrl->Enabled = false;
  216. PnlCamConrtol->Enabled = false;
  217. }
  218. //---------------------------------------------------------------------------
  219. void __fastcall TFrmCctvCamCtrl::DisplayInfo(TCctvCtlr* AObj)
  220. {
  221. InitForm();
  222. FSelCtlr = AObj;
  223. if (FSelCtlr == NULL)
  224. {
  225. return;
  226. }
  227. EdCtlrId->Text = AObj->CCTV_CTLR_ID;
  228. EdCtlrNm->Text = AObj->CCTV_NM;
  229. EdCtlrIp->Text = AObj->CCTV_CTLR_IP;
  230. Se_CCTV_CTLR_PORT->Value = AObj->CCTV_CTLR_PORT;
  231. EdTypeNm->Text = AObj->CCTV_TYPE_NM;
  232. Ed_STRM_SESN_NM->Text = AObj->STRM_SESN_NM;
  233. Ed_STRM_RTSP_ADDR->Text = AObj->STRM_RTSP_ADDR;
  234. Ed_STRM_RTMP_ADDR->Text = AObj->STRM_RTMP_ADDR;
  235. Ed_STRM_HTTP_ADDR->Text = AObj->STRM_HTTP_ADDR;
  236. Ed_INTR_RTMP_ADDR->Text = AObj->STRM_STOR_ADDR;
  237. EdCmraId->Text = AObj->CMRA_ID;
  238. EdCmraPswd->Text = AObj->CMRA_PSWD;
  239. if (AObj->CCTV_TYPE == 1)
  240. {
  241. // 다기능 제어기
  242. BtnWebCamUrl->Enabled = false;
  243. PnlCamConrtol->Enabled = false;
  244. FStrmHttp = "http://" + FSelCtlr->CCTV_CTLR_IP;
  245. }
  246. else
  247. {
  248. BtnWebCamUrl->Enabled = true;
  249. PnlCamConrtol->Enabled = true;
  250. FStrmHttp = "http://" + FSelCtlr->CCTV_CTLR_IP;
  251. if (FSelCtlr->CCTV_CTLR_PORT != 0 && FSelCtlr->CCTV_CTLR_PORT != 80)
  252. {
  253. FStrmHttp = FStrmHttp + ":" + String(FSelCtlr->CCTV_CTLR_PORT);
  254. }
  255. }
  256. try
  257. {
  258. OpenRtsp();
  259. InitPreset();
  260. }
  261. catch(Exception &e)
  262. {
  263. }
  264. }
  265. //---------------------------------------------------------------------------
  266. bool __fastcall TFrmCctvCamCtrl::OpenRtsp()
  267. {
  268. if (!FSelCtlr) return false;
  269. try
  270. {
  271. reMsg->Lines->Clear();
  272. CloseRtsp();
  273. FStrmAddr = FSelCtlr->STRM_SESN_NM.Trim();
  274. if (FStrmAddr != "")
  275. {
  276. AcesTechXPlayer21->URL = FStrmAddr;
  277. FStrmHandle = AcesTechXPlayer21->ConnectAsync();
  278. if (FStrmHandle > 0)
  279. {
  280. PnlCamConrtol->Enabled = true;
  281. }
  282. FStrmUser = FSelCtlr->CMRA_ID;
  283. FStrmPswd = FSelCtlr->CMRA_PSWD;
  284. FStrmHttp = "http://" + FSelCtlr->CCTV_CTLR_IP;
  285. FStrmPlay = true;
  286. }
  287. }
  288. catch(Exception &e)
  289. {
  290. }
  291. return true;
  292. }
  293. //---------------------------------------------------------------------------
  294. void __fastcall TFrmCctvCamCtrl::CloseRtsp()
  295. {
  296. if (!FStrmPlay) return;
  297. try
  298. {
  299. if (FStrmHandle > 0)
  300. {
  301. AcesTechXPlayer21->Close();
  302. }
  303. }
  304. catch(Exception &e)
  305. {
  306. }
  307. PnlCamConrtol->Enabled = false;
  308. FStrmPlay = false;
  309. }
  310. //---------------------------------------------------------------------------
  311. void __fastcall TFrmCctvCamCtrl::ClearCheckList()
  312. {
  313. }
  314. //---------------------------------------------------------------------------
  315. void __fastcall TFrmCctvCamCtrl::FRAMECctvStateList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  316. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  317. TShiftState AShift, bool &AHandled)
  318. {
  319. if (!ACellViewInfo) return;
  320. ClearCheckList();
  321. TcxGridBandedTableView *TvList = FRAMECctvStateList1->TvList;
  322. TcxDataController *pGDC = TvList->DataController;
  323. int nSelIdx = CMM_GetRecordIndex(TvList);
  324. if (nSelIdx < 0) return;
  325. pGDC->Values[nSelIdx][FRAMECctvStateList1->ColumnSel->Index] = true;
  326. int nMemPtr = (int)pGDC->Values[nSelIdx][FRAMECctvStateList1->Col99->Index];
  327. FSelCtlr = (TCctvCtlr*)nMemPtr;
  328. if (!FSelCtlr) return;
  329. DisplayInfo(FSelCtlr);
  330. }
  331. //---------------------------------------------------------------------------
  332. void __fastcall TFrmCctvCamCtrl::FRAMECctvStateList1TvList2CellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  333. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  334. {
  335. if (!ACellViewInfo) return;
  336. ClearCheckList();
  337. TcxGridBandedTableView *TvList = FRAMECctvStateList1->TvList2;
  338. TcxDataController *pGDC = TvList->DataController;
  339. int nSelIdx = CMM_GetRecordIndex(TvList);
  340. if (nSelIdx < 0) return;
  341. pGDC->Values[nSelIdx][FRAMECctvStateList1->ColumnSel2->Index] = true;
  342. int nMemPtr = (int)pGDC->Values[nSelIdx][FRAMECctvStateList1->Column99->Index];
  343. FSelCtlr = (TCctvCtlr*)nMemPtr;
  344. if (!FSelCtlr) return;
  345. DisplayInfo(FSelCtlr);
  346. }
  347. //---------------------------------------------------------------------------
  348. int __fastcall TFrmCctvCamCtrl::GetSelListItems(bool ACommCheck/*=true*/)
  349. {
  350. return 0;
  351. }
  352. //---------------------------------------------------------------------------
  353. void __fastcall TFrmCctvCamCtrl::BtnWebCamUrlClick(TObject *Sender)
  354. {
  355. if (FSelCtlr)
  356. {
  357. if (FStrmHttp != "")
  358. {
  359. ShellExecute(NULL, NULL, FStrmHttp.c_str(), NULL, NULL, 0);
  360. }
  361. }
  362. }
  363. //---------------------------------------------------------------------------
  364. void __fastcall TFrmCctvCamCtrl::UpdatePingList()
  365. {
  366. }
  367. //---------------------------------------------------------------------------
  368. void __fastcall TFrmCctvCamCtrl::RefreshPingList(bool AInit/*=false*/)
  369. {
  370. }
  371. //---------------------------------------------------------------------------
  372. void __fastcall TFrmCctvCamCtrl::PingNetwork(String AIp, int APort)
  373. {
  374. }
  375. //---------------------------------------------------------------------------
  376. void __fastcall TFrmCctvCamCtrl::BtnSaveImgFileClick(TObject *Sender)
  377. {
  378. #if 0
  379. String sSaveFileName;
  380. if (!FSelCtlr || XNVTViewerCtrl1->OCXState == GRAPH_NONE)
  381. {
  382. String sMsg = cxLabel1->Caption;
  383. Application->MessageBox(sMsg.c_str(), L"Save Snap Shot", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  384. return;
  385. }
  386. sSaveFileName.printf(L"%s\\%d_%s.bmp", g_sTempDir.c_str(), FSelCtlr->WCAM_CTLR_NMBR, Now().FormatString("yyyymmddhhnnss").c_str());
  387. if (XNVTViewerCtrl1->FileSnapShot(sSaveFileName.c_str()))
  388. {
  389. Application->MessageBox(sSaveFileName.c_str(), L"Save Snap Shot Success", MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  390. }
  391. else
  392. {
  393. Application->MessageBox(cxLabel2->Caption.c_str(), L"Save Snap Shot Fail", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  394. }
  395. #endif
  396. }
  397. //---------------------------------------------------------------------------
  398. void __fastcall TFrmCctvCamCtrl::ClearPreset()
  399. {
  400. }
  401. //---------------------------------------------------------------------------
  402. void __fastcall TFrmCctvCamCtrl::InitPreset()
  403. {
  404. }
  405. //---------------------------------------------------------------------------
  406. void __fastcall TFrmCctvCamCtrl::reMsgDblClick(TObject *Sender)
  407. {
  408. reMsg->Lines->Clear();
  409. }
  410. //---------------------------------------------------------------------------
  411. void __fastcall TFrmCctvCamCtrl::BtnStatRefreshClick(TObject *Sender)
  412. {
  413. TmrRefresh->Enabled = false;
  414. BtnStatRefresh->Enabled = false;
  415. if (!DMDb->Connect())
  416. {
  417. if (g_AppCfg.sLang != "kr")
  418. {
  419. Application->MessageBox(L"Database connection failed.\r\n\r\nPlease restart the program.",
  420. L"Database connection error !!!",
  421. MB_OK|MB_ICONERROR);
  422. }
  423. else
  424. {
  425. Application->MessageBox(L"데이터베이스 연결에 실패하였습니다.\r\n\r\n프로그램을 다시 시작하십시요.",
  426. L"데이터베이스 연결 오류!!!",
  427. MB_OK|MB_ICONERROR);
  428. }
  429. BtnStatRefresh->Enabled = true;
  430. TmrRefresh->Enabled = true;
  431. return;
  432. }
  433. CctvCtlrManager->LoadStatusFromDb(DMDb->GetConnection());
  434. FRAMECctvStateList1->RefreshStatus();
  435. RefreshPingList();
  436. DMDb->Close();;
  437. BtnStatRefresh->Enabled = true;
  438. TmrRefresh->Enabled = true;
  439. }
  440. //---------------------------------------------------------------------------
  441. void __fastcall TFrmCctvCamCtrl::TmrRefreshTimer(TObject *Sender)
  442. {
  443. BtnStatRefreshClick(NULL);
  444. }
  445. //---------------------------------------------------------------------------
  446. void __fastcall TFrmCctvCamCtrl::IdHTTP1Authorization(TObject *Sender, TIdAuthentication *Authentication, bool &Handled)
  447. {
  448. #if 1
  449. IdHTTP1->Request->Username = FStrmUser;
  450. IdHTTP1->Request->Password = FStrmPswd;
  451. #endif
  452. Authentication->Username = FStrmUser;
  453. Authentication->Password = FStrmPswd;
  454. TIdDigestAuthentication *pAuth1 = (TIdDigestAuthentication*)IdHTTP1->Request->Authentication;
  455. TIdDigestAuthentication *pAuth2 = (TIdDigestAuthentication*)Authentication;
  456. pAuth1->Uri = IdHTTP1->Request->URL;
  457. pAuth2->Method = "GET";
  458. Handled = true;
  459. }
  460. //---------------------------------------------------------------------------
  461. void __fastcall TFrmCctvCamCtrl::BtnUpMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
  462. {
  463. // PANControl
  464. if (!FStrmPlay) return;
  465. if (!FSelCtlr) return;
  466. if (FSelCtlr->CCTV_CTLR_IP.Trim() == "") return;
  467. String sPTZSpeed = String(PTZSpeed->Position);
  468. try
  469. {
  470. String sCmdHtml = "";
  471. TImageBtn *pBtn = (TImageBtn*)Sender;
  472. if (FSelCtlr->CCTV_TYPE == 2)
  473. {
  474. // Truen
  475. // url ="/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=" + ch + "&PTZ_MOVE=";
  476. switch(pBtn->Tag)
  477. {
  478. case 0: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=home,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // HOME
  479. case 1: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=up,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Tilt Up
  480. case 2: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=down,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Tilt Down
  481. case 3: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=left,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Pan left
  482. case 4: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=right,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Pan right
  483. case 9: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=zoomin,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Zoom In
  484. case 10: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=zoomout,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Zoom Out
  485. case 12: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=focusnear,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Focus In
  486. case 13: sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=focusfar,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Focus Out
  487. default: return;
  488. }
  489. }
  490. else
  491. if (FSelCtlr->CCTV_TYPE == 3)
  492. {
  493. // Pelco
  494. }
  495. else
  496. if (FSelCtlr->CCTV_TYPE == 4)
  497. {
  498. // ESCA
  499. switch(pBtn->Tag)
  500. {
  501. case 0: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=home,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // HOME
  502. case 1: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=up,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Tilt Up
  503. case 2: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=down,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Tilt Down
  504. case 3: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=left,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Pan left
  505. case 4: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=right,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Pan right
  506. case 9: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=zoomin,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Zoom In
  507. case 10: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=zoomout,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Zoom Out
  508. case 12: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=focusnear,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Focus In
  509. case 13: sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=focusfar,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); break; // Focus Out
  510. default: return;
  511. }
  512. }
  513. if (sCmdHtml == "") return;
  514. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  515. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions << hoInProcessAuth;
  516. String sResult = IdHTTP1->Get(sCmdHtml);
  517. reMsg->Lines->Add(sResult.Trim());
  518. IdHTTP1->Disconnect();
  519. }
  520. catch(...) {}
  521. }
  522. //---------------------------------------------------------------------------
  523. void __fastcall TFrmCctvCamCtrl::BtnUpMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
  524. {
  525. // PANControl Stop
  526. if (!FStrmPlay) return;
  527. if (!FSelCtlr) return;
  528. if (FSelCtlr->CCTV_CTLR_IP.Trim() == "") return;
  529. String sPTZSpeed = String(PTZSpeed->Position);
  530. try
  531. {
  532. String sCmdHtml = "";
  533. TImageBtn *pBtn = (TImageBtn*)Sender;
  534. if (FSelCtlr->CCTV_TYPE == 2)
  535. {
  536. // Truen
  537. sCmdHtml.printf(L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=stop,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); // stop
  538. }
  539. else
  540. if (FSelCtlr->CCTV_TYPE == 3)
  541. {
  542. // Pelco
  543. }
  544. else
  545. if (FSelCtlr->CCTV_TYPE == 4)
  546. {
  547. // ESCA
  548. sCmdHtml.printf(L"%s/httpapx/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=stop,%s&PTZ_TIMEOUT=5000", FStrmHttp.c_str(), sPTZSpeed.c_str()); // stop
  549. }
  550. if (sCmdHtml == "") return;
  551. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  552. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions << hoInProcessAuth;
  553. String sResult = IdHTTP1->Get(sCmdHtml);
  554. reMsg->Lines->Add(sResult.Trim());
  555. IdHTTP1->Disconnect();
  556. }
  557. catch(...) {}
  558. }
  559. //---------------------------------------------------------------------------
  560. void __fastcall TFrmCctvCamCtrl::EdPresetNameKeyPress(TObject *Sender, wchar_t &Key)
  561. {
  562. if (Key == VK_SPACE)
  563. {
  564. Key = 0;
  565. }
  566. }
  567. //---------------------------------------------------------------------------