#include "XNetSDKTest.h" #include "XNetSDKSyn.h" #include "OPPTZControl.h" #include "Uart_PTZ.h" #ifdef WIN32 #include #else #include #define Sleep(x) usleep((x) * 1000) #endif USE_NS_NETSDK_CFG int TestDevPTZ() { printf("%s\r\n", __FUNCTION__); char c = 0; while((c = getchar()) != 'q') { switch(c) { //方向控制:左,步长4 case 'a': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeft, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeft, 4, true); } break; //方向控制:右,步长4 case 'b': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRight, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRight, 4, true); } break; //方向控制:上,步长4 case 'c': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionUp, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRight, 4, true); } break; //方向控制:下,步长4 case 'd': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionDown, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionDown, 4, true); } break; //方向控制:左上,步长4 case 'e': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftUp, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftUp, 4, true); } break; //方向控制:右上,步长4 case 'f': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightUp, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightUp, 4, true); } break; //方向控制:左下,步长4 case 'g': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftDown, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionLeftDown, 4, true); } break; //方向控制:右下,步长4 case 'h': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightDown, 4, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_DirectionRightDown, 4, true); } break; //光圈缩小 case 'i': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisSmall, 0, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisSmall, 0, true); } break; //光圈扩大 case 'k': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisLarge, 0, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_IrisLarge, 0, true); } break; //变焦(焦点前调) case 'l': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusNear, 0, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusNear, 0, true); } break; //变焦(焦点后调) case 'm': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusFar, 0, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_FocusNear, 0, false); } break; //变倍小 case 'n': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomWide, 0, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomWide, 0, true); } break; //变倍大 case 'o': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomTile, 0, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_ZoomTile, 0, true); } break; //复位 case 'p': { XSDK_DevPtzControl(g_hDevice, 0, JPTZ_Reset, 0, false); Sleep(300); XSDK_DevPtzControl(g_hDevice, 0, JPTZ_Reset, 0, true); } break; //云台协议 case 'r': { //获取云台配置 int nResult = 0; char szOutBuffer[4096] = {0}; int nInOutSize = sizeof(szOutBuffer); char szOutBuffer1[4096] = {0}; int nInOutSize1 = sizeof(szOutBuffer1); nResult = XSDK_DevGetSysConfigSyn(g_hDevice, JK_Uart_PTZ, szOutBuffer, &nInOutSize, 4000, EXCMD_CONFIG_GET); if (nResult < 0) { break; } //获取云台支持的协议 nResult = XSDK_DevGetSysConfigSyn(g_hDevice, "PTZProtocol", szOutBuffer1, &nInOutSize1, 4000, EXCMD_ABILITY_GET); JObjArrayObject cfg(NULL, "PTZProtocol"); cfg.Parse(szOutBuffer1); for(int i = 0;i < cfg.objs.Size();i++) { printf("PTZProtocol[%s]\r\n", cfg.objs[i].ToString()); } JObjArrayObject uart(NULL, JK_Uart_PTZ); uart.Parse(szOutBuffer); printf("ProtocolName = %s\r\n", uart.objs[0].ProtocolName.Value()); const char * ProtocolName = cfg.objs[0].ToString(); uart.objs[0].ProtocolName.SetValue(ProtocolName); char outbuffer[100] = {0}; int len = 0; const char *pCfg = uart.ToString(); nResult = XSDK_DevSetSysConfigSyn(g_hDevice, JK_Uart_PTZ, pCfg, strlen(pCfg),outbuffer, &len, 4000); } break; } } return 0; }