You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
2.3 KiB

  1. #include "XNetSDKTest.h"
  2. #include "OPPTZControl.h"
  3. #include "XNetSDKSyn.h"
  4. #ifdef WIN32
  5. #include <Windows.h>
  6. #else
  7. #include <unistd.h>
  8. #define Sleep(x) usleep((x) * 1000)
  9. #endif
  10. USE_NS_NETSDK_CFG
  11. int XSDK_SetPtzTourPoint(XSDK_HANDLE hDevice, int nChannel, int nPresetPoint, int nStep, int nTourIndex, bool bAdd)
  12. {
  13. char outbuffer[100] = {0};
  14. int len = 0;
  15. XSDK_CFG::OPPTZControl ptz;
  16. ptz.Command = bAdd ? JPTZ_AddTour : JPTZ_DeleteTour; //添加或删除预置点
  17. ptz.mParameter.Channel = nChannel; //通道号
  18. ptz.mParameter.Preset = nPresetPoint; //巡航点(已设置的预置点)
  19. ptz.mParameter.Step = nStep; //步长
  20. ptz.mParameter.Tour = nTourIndex; //巡航路线值
  21. const char *pCfg = ptz.ToString();
  22. return XSDK_DevSetSysConfigSyn(g_hDevice, JK_OPPTZControl, pCfg, strlen(pCfg), outbuffer, &len, 5000, EXCMD_PTZ_REQ);
  23. }
  24. int TestPTZPreset()
  25. {
  26. printf("%s\r\n", __FUNCTION__);
  27. char c = 0;
  28. while((c = getchar()) != 'q')
  29. {
  30. switch(c)
  31. {
  32. ///设置预置点1
  33. case 'a':
  34. {
  35. XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_SetPreset, 1);
  36. }
  37. break;
  38. ///转到预置点1
  39. case 'b':
  40. {
  41. XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_GotoPreset, 1);
  42. }
  43. break;
  44. ////清除预置点1
  45. case 'c':
  46. {
  47. XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_ClearPreset, 1);
  48. }
  49. break;
  50. ///设置预置点2,设置2前转动一下云台
  51. case 'd':
  52. {
  53. XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_SetPreset, 2);
  54. }
  55. break;
  56. ///转到预置点2
  57. case 'e':
  58. {
  59. XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_GotoPreset, 2);
  60. }
  61. break;
  62. ////清除预置点2
  63. case 'f':
  64. {
  65. XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_ClearPreset, 2);
  66. }
  67. break;
  68. case 'g':
  69. {
  70. int nRet = 0;
  71. nRet = XSDK_SetPtzTourPoint(g_hDevice, 0, 1, 4, 1, true);
  72. if(nRet >= 0)
  73. {
  74. nRet = XSDK_SetPtzTourPoint(g_hDevice, 0, 2, 4, 1, true);
  75. }
  76. }
  77. break;
  78. case 'h':
  79. {
  80. int nRet = 0;
  81. XSDK_SetPtzTourPoint(g_hDevice, 0, 1, 4, 1, false);
  82. if(nRet >= 0)
  83. {
  84. nRet = XSDK_SetPtzTourPoint(g_hDevice, 0, 2, 4, 1, false);
  85. }
  86. }
  87. break;
  88. ///巡航前需要设置至少两个预置点
  89. case 't':
  90. {
  91. XSDK_DevPtzTour(g_hDevice, 0, 1, true);
  92. // XSDK_DevPtzTour(g_hDevice, 0, 1, false);
  93. }
  94. break;
  95. }
  96. }
  97. return 0;
  98. }