FRAME_SamsungCamF.cpp 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FRAME_SamsungCamF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. #pragma link "cxButtons"
  8. #pragma link "cxCheckBox"
  9. #pragma link "cxContainer"
  10. #pragma link "cxControls"
  11. #pragma link "cxEdit"
  12. #pragma link "cxGraphics"
  13. #pragma link "cxLookAndFeelPainters"
  14. #pragma link "cxLookAndFeels"
  15. #pragma link "dxSkinBlack"
  16. #pragma link "dxSkinBlue"
  17. #pragma link "dxSkinCaramel"
  18. #pragma link "dxSkinCoffee"
  19. #pragma link "dxSkinDarkRoom"
  20. #pragma link "dxSkinDarkSide"
  21. #pragma link "dxSkinFoggy"
  22. #pragma link "dxSkinGlassOceans"
  23. #pragma link "dxSkiniMaginary"
  24. #pragma link "dxSkinLilian"
  25. #pragma link "dxSkinLiquidSky"
  26. #pragma link "dxSkinLondonLiquidSky"
  27. #pragma link "dxSkinMcSkin"
  28. #pragma link "dxSkinMoneyTwins"
  29. #pragma link "dxSkinOffice2007Black"
  30. #pragma link "dxSkinOffice2007Blue"
  31. #pragma link "dxSkinOffice2007Green"
  32. #pragma link "dxSkinOffice2007Pink"
  33. #pragma link "dxSkinOffice2007Silver"
  34. #pragma link "dxSkinOffice2010Black"
  35. #pragma link "dxSkinOffice2010Blue"
  36. #pragma link "dxSkinOffice2010Silver"
  37. #pragma link "dxSkinsCore"
  38. #pragma link "dxSkinSeven"
  39. #pragma link "dxSkinSharp"
  40. #pragma link "dxSkinSilver"
  41. #pragma link "dxSkinStardust"
  42. #pragma link "ImageBtn"
  43. #pragma link "XNSSDKDEVICELib_OCX"
  44. #pragma link "XNSSDKWINDOWLib_OCX"
  45. #pragma resource "*.dfm"
  46. TFRAMESansungCam *FRAMESamsungCam;
  47. //---------------------------------------------------------------------------
  48. __fastcall TFRAMESansungCam::TFRAMESansungCam(TComponent* Owner)
  49. : TFrame(Owner)
  50. {
  51. PnlVmsCam->ParentColor = false;
  52. PnlVmsCam->Color = clBlack;
  53. XnsSdkWindow1->Parent = PnlVmsCam;
  54. XnsSdkWindow1->Align = alClient;
  55. //SetupWebCamera();
  56. }
  57. //---------------------------------------------------------------------------
  58. bool __fastcall TFRAMESansungCam::SetupWebCamera()
  59. {
  60. //// Samsung ip camera activex initialize start
  61. String sLog;
  62. long nRet = XnsSdkDevice1->Initialize();
  63. if (nRet != ERR_SUCCESS && nRet != ERR_ALREADY_INITIALIZE)
  64. {
  65. sLog.printf(L"Samsung XnsSdkDevice Initialize() fail: return=[%d](%s)\n", nRet, XnsSdkDevice1->GetErrorString(nRet));
  66. ShowMessage(sLog);
  67. return false;
  68. }
  69. nRet = XnsSdkWindow1->Initialize(NULL, NULL);
  70. if (nRet != ERR_SUCCESS && nRet != ERR_ALREADY_INITIALIZE)
  71. {
  72. sLog.printf(L"Samsung XnsSdkWindow Initialize() fail: return=[%d](%s)\n", nRet, XnsSdkDevice1->GetErrorString(nRet));
  73. ShowMessage(sLog);
  74. return false;
  75. }
  76. m_lDeviceId = XnsSdkDevice1->CreateDeviceEx();
  77. m_hDevice = XnsSdkDevice1->GetDeviceHandle(m_lDeviceId);
  78. if (m_hDevice == 0)
  79. {
  80. sLog = "CreateDevice() fail";
  81. ShowMessage(sLog);
  82. return false;
  83. }
  84. #if 0
  85. WideString sFindModel = "samsung";
  86. long nFind = XnsSdkDevice1->FindModel(sFindModel.c_bstr());
  87. long nCount = XnsSdkDevice1->GetFindSize(nFind);
  88. String sModel;
  89. CboModel->Properties->Items->Clear();
  90. for (int ii = 0 ; ii < nCount ; ii++)
  91. {
  92. sModel = XnsSdkDevice1->GetFindString(nFind, ii);
  93. CboModel->Properties->Items->Add(sModel);
  94. }
  95. XnsSdkDevice1->CloseFind(nFind);
  96. CboModel->ItemIndex = 0;
  97. #endif
  98. return true;
  99. }
  100. //---------------------------------------------------------------------------
  101. void __fastcall TFRAMESansungCam::BtnCamCtlMouseDown(TObject *Sender, TMouseButton Button,
  102. TShiftState Shift, int X, int Y)
  103. {
  104. //PTZ Control
  105. // XPTZ_UP 1 Tilt up
  106. // XPTZ_DOWN 2 Tilt down
  107. // XPTZ_LEFT 3 Pan left
  108. // XPTZ_RIGHT 4 Pan right
  109. // XPTZ_UPLEFT 5 Tilt up and pan left
  110. // XPTZ_UPRIGHT 6 Tilt up and pan right
  111. // XPTZ_DOWNLEFT 7 Tilt down and pan left
  112. // XPTZ_DOWNRIGHT 8 Tilt down and pan right
  113. // XPTZ_ZOOMIN 9 Zoom in
  114. // XPTZ_ZOOMOUT 10 Zoom out
  115. // XPTZ_STOP 11 Stop the PTZ moving
  116. // XPTZ_FOCUS_NEAR 12 Focus near
  117. // XPTZ_FOCUS_FAR 13 Focus far
  118. // XPTZ_FOCUS_STOP 14 Stop focus moving
  119. // XPTZ_IRIS_OPEN 15 Open iris
  120. // XPTZ_IRIS_CLOSE 16 Close iris
  121. try
  122. {
  123. TImageBtn *pBtn = (TImageBtn*)Sender;
  124. // PTZ_FOCUS_NEAR 12 Focus near
  125. // PTZ_FOCUS_FAR 13 Focus far
  126. // PTZ_FOCUS_STOP 14 Stop focus moving
  127. if (pBtn->Tag == 0)
  128. {
  129. }
  130. else
  131. {
  132. moveCamera((int)pBtn->Tag);
  133. }
  134. }
  135. catch(...) {}
  136. }
  137. //---------------------------------------------------------------------------
  138. void __fastcall TFRAMESansungCam::BtnCamCtlMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
  139. int X, int Y)
  140. {
  141. //PTZ Control Stop
  142. try
  143. {
  144. TImageBtn *pBtn = (TImageBtn*)Sender;
  145. // PTZ_FOCUS_NEAR 12 Focus near
  146. // PTZ_FOCUS_FAR 13 Focus far
  147. // PTZ_FOCUS_STOP 14 Stop focus moving
  148. if (pBtn->Tag == PTZ_FOCUS_NEAR || pBtn->Tag == PTZ_FOCUS_FAR)
  149. {
  150. moveCamera(PTZ_FOCUS_STOP);
  151. }
  152. else if (pBtn->Tag == 0)
  153. {
  154. }
  155. else
  156. {
  157. moveCamera(PTZ_STOP);
  158. }
  159. }
  160. catch(...) {}
  161. }
  162. //---------------------------------------------------------------------------
  163. void __fastcall TFRAMESansungCam::moveCamera(int ACommand)
  164. {
  165. long ret;
  166. if (m_hDevice == 0 || m_nControlId == 0) return;
  167. int nPtzSpeed = PTZSpeed->Position;
  168. if (ACommand == XPTZ_STOP ||
  169. ACommand == PTZ_FOCUS_STOP)
  170. {
  171. nPtzSpeed = 0;
  172. }
  173. //WLOGD(_T("MoveCamera, command=[%d], speed=%d\n"), nCommand, m_nPtzSpeed);
  174. // if( nCommand != XPTZ_STOP)
  175. // m_ctrlXnsDevice.ControlPtz(m_hDevice, m_nControlId, XPTZ_STOP, 30);
  176. // Returns the capabilities of the control module.
  177. long bIsCap = XnsSdkDevice1->GetControlCapability(m_hDevice, m_nControlId, XCTL_CAP_PTZ_SPEED);
  178. // [ XNS ACTIVEX HELP ]
  179. // -----------------------------------------------------------------------
  180. // Moves the camera to the predefined PTZ position. This function is
  181. // valid as long as the application is receiving media stream from the
  182. // camera.
  183. // -----------------------------------------------------------------------
  184. // Command Value Description
  185. // -----------------------------------------------------------------------
  186. // XPTZ_UP 1 Tilt up
  187. // XPTZ_DOWN 2 Tilt down
  188. // XPTZ_LEFT 3 Pan left
  189. // XPTZ_RIGHT 4 Pan right
  190. // XPTZ_UPLEFT 5 Tilt up and pan left
  191. // XPTZ_UPRIGHT 6 Tilt up and pan right
  192. // XPTZ_DOWNLEFT 7 Tilt down and pan left
  193. // XPTZ_DOWNRIGHT 8 Tilt down and pan right
  194. // XPTZ_ZOOMIN 9 Zoom in
  195. // XPTZ_ZOOMOUT 10 Zoom out
  196. // XPTZ_STOP 11 Stop the PTZ moving
  197. // XPTZ_FOCUS_NEAR 12 Focus near
  198. // XPTZ_FOCUS_FAR 13 Focus far
  199. // XPTZ_FOCUS_STOP 14 Stop focus moving
  200. // XPTZ_IRIS_OPEN 15 Open iris
  201. // XPTZ_IRIS_CLOSE 16 Close iris
  202. // -----------------------------------------------------------------------
  203. if (bIsCap)
  204. {
  205. ret = XnsSdkDevice1->ControlPtz(
  206. m_hDevice, // [in] Device handle. This value is returned from CreateDevice().
  207. m_nControlId, // [in] Control ID.
  208. ACommand, // [in] PTZ command
  209. nPtzSpeed // [in] If nPtzCommand is a speed-related command,
  210. // this value indicates the PTZ operation speed.
  211. // (1~100) This value is valid only if the camera
  212. // supports the XCTL_CAP_PTZ_SPEED capability.
  213. );
  214. }
  215. else
  216. {
  217. ret = XnsSdkDevice1->ControlPtz(m_hDevice, m_nControlId, ACommand, (long)nPtzSpeed);
  218. }
  219. if (ret != ERR_SUCCESS)
  220. {
  221. String sErr;
  222. sErr.printf(L"ControlPtz() fail:: error=[%d](%s)", ret, XnsSdkDevice1->GetErrorString(ret));
  223. ShowMessage(sErr);
  224. }
  225. }
  226. //---------------------------------------------------------------------------
  227. void __fastcall TFRAMESansungCam::XnsSdkWindow1LButtonDblClk(TObject *Sender, long nDeviceID,
  228. long nControlID, long nRecDay)
  229. {
  230. ShowMessage("XnsSdkWindow1LButtonDblClk");
  231. }
  232. //---------------------------------------------------------------------------
  233. void __fastcall TFRAMESansungCam::PnlVmsCamDblClick(TObject *Sender)
  234. {
  235. ShowMessage("PnlVmsCamDblClick");
  236. }
  237. //---------------------------------------------------------------------------
  238. void __fastcall TFRAMESansungCam::PnlCamConrtolDblClick(TObject *Sender)
  239. {
  240. ShowMessage("PnlCamConrtolDblClick");
  241. }
  242. //---------------------------------------------------------------------------