FrameTruenHttpF.cpp 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FrameTruenHttpF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. #pragma link "cxButtons"
  8. #pragma link "cxGraphics"
  9. #pragma link "cxLookAndFeelPainters"
  10. #pragma link "cxLookAndFeels"
  11. #pragma link "dxSkinBlack"
  12. #pragma link "dxSkinMcSkin"
  13. #pragma link "dxSkinsCore"
  14. #pragma link "ImageBtn"
  15. #pragma link "cxContainer"
  16. #pragma link "cxControls"
  17. #pragma link "cxEdit"
  18. #pragma link "cxLabel"
  19. #pragma link "AcesTechXPlayer2Lib_OCX"
  20. #pragma link "IdBaseComponent"
  21. #pragma link "IdComponent"
  22. #pragma link "IdHTTP"
  23. #pragma link "IdTCPClient"
  24. #pragma link "IdTCPConnection"
  25. #pragma link "cxTextEdit"
  26. #pragma resource "*.dfm"
  27. TFrameTruenHttp *FrameTruenHttp;
  28. //---------------------------------------------------------------------------
  29. __fastcall TFrameTruenHttp::TFrameTruenHttp(TComponent* Owner)
  30. : TFrame(Owner)
  31. {
  32. FStrmPlay = false;
  33. reMsg->Lines->Clear();
  34. FStrmHandle = 0;
  35. }
  36. //---------------------------------------------------------------------------
  37. void __fastcall TFrameTruenHttp::BtnWebCamControlMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
  38. {
  39. TImageBtn *pBtn = (TImageBtn*)Sender;
  40. String sPTZSpeed = String(PTZSpeed->Position);
  41. FStrmHttp = EdHttpUrl->Text.Trim();
  42. if (FStrmHttp == "")
  43. {
  44. return;
  45. }
  46. #if 0
  47. http://<server>/httpapi/<api_group_name>?action=<action_name>&<parameter>=<value>[&<parameter>=<value>...]
  48. http://<server>/httpapi/SendPTZ?action=<action_name>&<parameter>=<value>[&<parameter>=<value>...]
  49. PTZ_TIMEOUT <int> 10 ~ 5000
  50. Speed: 1 ~ 10 (10: the fastest)
  51. stop
  52. continue
  53. home
  54. irisopen
  55. irisclose
  56. left
  57. right
  58. up
  59. down
  60. zoomin
  61. zoomout
  62. focusnear
  63. focusfar
  64. To pan-left the camera for the first video channel for 500ms with speed 4
  65. http://<server>/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=left,4&PTZ_TIMEOUT=500
  66. L"%s/httpapi/SendPTZ?action=sendptz&PTZ_CHANNEL=1&PTZ_MOVE=left,%s&PTZ_TIMEOUT=5000"
  67. #endif
  68. // 자체적인 타임아웃을 사용하고 있기 때문에 명령을 내릴때 타임아웃값을 함께 내리도록 한다.
  69. try
  70. {
  71. String sCmdHtml = "";
  72. TImageBtn *pBtn = (TImageBtn*)Sender;
  73. switch(pBtn->Tag)
  74. {
  75. 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
  76. 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
  77. 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
  78. case 4: 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
  79. case 3: 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
  80. 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
  81. 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
  82. 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
  83. 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
  84. default: return;
  85. }
  86. if (sCmdHtml == "") return;
  87. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  88. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions << hoInProcessAuth;
  89. String sResult = IdHTTP1->Get(sCmdHtml);
  90. reMsg->Lines->Add(sResult);
  91. IdHTTP1->Disconnect();
  92. }
  93. catch(...) {}
  94. }
  95. //---------------------------------------------------------------------------
  96. void __fastcall TFrameTruenHttp::BtnWebCamControlMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
  97. {
  98. TImageBtn *pBtn = (TImageBtn*)Sender;
  99. String sPTZSpeed = String(PTZSpeed->Position);
  100. FStrmHttp = EdHttpUrl->Text.Trim();
  101. if (FStrmHttp == "")
  102. {
  103. return;
  104. }
  105. try
  106. {
  107. String sCmdHtml = "";
  108. 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
  109. if (sCmdHtml == "") return;
  110. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions >> hoInProcessAuth;
  111. IdHTTP1->HTTPOptions = IdHTTP1->HTTPOptions << hoInProcessAuth;
  112. String sResult = IdHTTP1->Get(sCmdHtml);
  113. reMsg->Lines->Add(sResult);
  114. IdHTTP1->Disconnect();
  115. }
  116. catch(...) {}
  117. }
  118. //---------------------------------------------------------------------------
  119. void __fastcall TFrameTruenHttp::OpenStream()
  120. {
  121. FStrmUrl = EdStreamUrl->Text.Trim();
  122. FStrmUser = EdStreamId->Text.Trim();
  123. FStrmPswd = EdStreamPswd->Text.Trim();
  124. AcesTechXPlayer21->URL = FStrmUrl;
  125. FStrmHandle = AcesTechXPlayer21->ConnectAsync();
  126. if (FStrmHandle > 0)
  127. {
  128. }
  129. }
  130. //---------------------------------------------------------------------------
  131. void __fastcall TFrameTruenHttp::CloseStream()
  132. {
  133. if (FStrmHandle > 0)
  134. {
  135. AcesTechXPlayer21->Close();
  136. }
  137. }
  138. //---------------------------------------------------------------------------
  139. void __fastcall TFrameTruenHttp::BtnCameraConDisconnClick(TObject *Sender)
  140. {
  141. TcxButton *btn = (TcxButton*)Sender;
  142. if (btn->Tag == 1) {
  143. // 연결
  144. btn->Tag = 0;
  145. btn->Caption = "영상 연결 해제";
  146. OpenStream();
  147. }
  148. else {
  149. // 연결 종료
  150. btn->Tag = 1;
  151. btn->Caption = "영상 연결";
  152. CloseStream();
  153. }
  154. }
  155. //---------------------------------------------------------------------------
  156. void __fastcall TFrameTruenHttp::IdHTTP1Authorization(TObject *Sender, TIdAuthentication *Authentication, bool &Handled)
  157. {
  158. // 요기는 확인해 봐야 함.........
  159. #if 1
  160. IdHTTP1->Request->Username = FStrmUser;
  161. IdHTTP1->Request->Password = FStrmPswd;
  162. #endif
  163. Authentication->Username = FStrmUser;
  164. Authentication->Password = FStrmPswd;
  165. TIdDigestAuthentication *pAuth1 = (TIdDigestAuthentication*)IdHTTP1->Request->Authentication;
  166. TIdDigestAuthentication *pAuth2 = (TIdDigestAuthentication*)Authentication;
  167. pAuth1->Uri = IdHTTP1->Request->URL;
  168. pAuth2->Method = "GET";
  169. Handled = true;
  170. }
  171. //---------------------------------------------------------------------------
  172. void __fastcall TFrameTruenHttp::reMsgDblClick(TObject *Sender)
  173. {
  174. reMsg->Lines->Clear();
  175. }
  176. //---------------------------------------------------------------------------