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.

189 lines
4.7 KiB

  1. #include "XNetSDKTest.h"
  2. #include "XNetSDKSyn.h"
  3. #include "OPPTZControl.h"
  4. #include "Uart_PTZ.h"
  5. #ifdef WIN32
  6. #include <Windows.h>
  7. #else
  8. #include <unistd.h>
  9. #define Sleep(x) usleep((x) * 1000)
  10. #endif
  11. USE_NS_NETSDK_CFG
  12. int TestDevPTZ()
  13. {
  14. printf("%s\r\n", __FUNCTION__);
  15. char c = 0;
  16. while((c = getchar()) != 'q')
  17. {
  18. switch(c)
  19. {
  20. //方向控制:左,步长4
  21. case 'a':
  22. {
  23. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeft, 4, false);
  24. Sleep(300);
  25. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeft, 4, true);
  26. }
  27. break;
  28. //方向控制:右,步长4
  29. case 'b':
  30. {
  31. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRight, 4, false);
  32. Sleep(300);
  33. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRight, 4, true);
  34. }
  35. break;
  36. //方向控制:上,步长4
  37. case 'c':
  38. {
  39. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionUp, 4, false);
  40. Sleep(300);
  41. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRight, 4, true);
  42. }
  43. break;
  44. //方向控制:下,步长4
  45. case 'd':
  46. {
  47. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionDown, 4, false);
  48. Sleep(300);
  49. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionDown, 4, true);
  50. }
  51. break;
  52. //方向控制:左上,步长4
  53. case 'e':
  54. {
  55. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftUp, 4, false);
  56. Sleep(300);
  57. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftUp, 4, true);
  58. }
  59. break;
  60. //方向控制:右上,步长4
  61. case 'f':
  62. {
  63. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightUp, 4, false);
  64. Sleep(300);
  65. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightUp, 4, true);
  66. }
  67. break;
  68. //方向控制:左下,步长4
  69. case 'g':
  70. {
  71. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftDown, 4, false);
  72. Sleep(300);
  73. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftDown, 4, true);
  74. }
  75. break;
  76. //方向控制:右下,步长4
  77. case 'h':
  78. {
  79. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightDown, 4, false);
  80. Sleep(300);
  81. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightDown, 4, true);
  82. }
  83. break;
  84. //光圈缩小
  85. case 'i':
  86. {
  87. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisSmall, 0, false);
  88. Sleep(300);
  89. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisSmall, 0, true);
  90. }
  91. break;
  92. //光圈扩大
  93. case 'k':
  94. {
  95. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisLarge, 0, false);
  96. Sleep(300);
  97. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisLarge, 0, true);
  98. }
  99. break;
  100. //变焦(焦点前调)
  101. case 'l':
  102. {
  103. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusNear, 0, false);
  104. Sleep(300);
  105. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusNear, 0, true);
  106. }
  107. break;
  108. //变焦(焦点后调)
  109. case 'm':
  110. {
  111. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusFar, 0, false);
  112. Sleep(300);
  113. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusNear, 0, false);
  114. }
  115. break;
  116. //变倍小
  117. case 'n':
  118. {
  119. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomWide, 0, false);
  120. Sleep(300);
  121. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomWide, 0, true);
  122. }
  123. break;
  124. //变倍大
  125. case 'o':
  126. {
  127. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomTile, 0, false);
  128. Sleep(300);
  129. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomTile, 0, true);
  130. }
  131. break;
  132. //复位
  133. case 'p':
  134. {
  135. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_Reset, 0, false);
  136. Sleep(300);
  137. XSDK_DevPtzControl(g_hDevice, 0, JPTZ_Reset, 0, true);
  138. }
  139. break;
  140. //云台协议
  141. case 'r':
  142. {
  143. //获取云台配置
  144. int nResult = 0;
  145. char szOutBuffer[4096] = {0};
  146. int nInOutSize = sizeof(szOutBuffer);
  147. char szOutBuffer1[4096] = {0};
  148. int nInOutSize1 = sizeof(szOutBuffer1);
  149. nResult = XSDK_DevGetSysConfigSyn(g_hDevice, JK_Uart_PTZ, szOutBuffer, &nInOutSize, 4000, EXCMD_CONFIG_GET);
  150. if (nResult < 0)
  151. {
  152. break;
  153. }
  154. //获取云台支持的协议
  155. nResult = XSDK_DevGetSysConfigSyn(g_hDevice, "PTZProtocol", szOutBuffer1, &nInOutSize1, 4000, EXCMD_ABILITY_GET);
  156. JObjArrayObject<JStrObj> cfg(NULL, "PTZProtocol");
  157. cfg.Parse(szOutBuffer1);
  158. for(int i = 0;i < cfg.objs.Size();i++)
  159. {
  160. printf("PTZProtocol[%s]\r\n", cfg.objs[i].ToString());
  161. }
  162. JObjArrayObject<Uart_PTZ> uart(NULL, JK_Uart_PTZ);
  163. uart.Parse(szOutBuffer);
  164. printf("ProtocolName = %s\r\n", uart.objs[0].ProtocolName.Value());
  165. const char * ProtocolName = cfg.objs[0].ToString();
  166. uart.objs[0].ProtocolName.SetValue(ProtocolName);
  167. char outbuffer[100] = {0};
  168. int len = 0;
  169. const char *pCfg = uart.ToString();
  170. nResult = XSDK_DevSetSysConfigSyn(g_hDevice, JK_Uart_PTZ, pCfg, strlen(pCfg),outbuffer, &len, 4000);
  171. }
  172. break;
  173. }
  174. }
  175. return 0;
  176. }