#include "XNetSDKTest.h" #include "OPPTZControl.h" #include "XNetSDKSyn.h" #ifdef WIN32 #include #else #include #define Sleep(x) usleep((x) * 1000) #endif USE_NS_NETSDK_CFG int XSDK_SetPtzTourPoint(XSDK_HANDLE hDevice, int nChannel, int nPresetPoint, int nStep, int nTourIndex, bool bAdd) { char outbuffer[100] = {0}; int len = 0; XSDK_CFG::OPPTZControl ptz; ptz.Command = bAdd ? JPTZ_AddTour : JPTZ_DeleteTour; //添加或删除预置点 ptz.mParameter.Channel = nChannel; //通道号 ptz.mParameter.Preset = nPresetPoint; //巡航点(已设置的预置点) ptz.mParameter.Step = nStep; //步长 ptz.mParameter.Tour = nTourIndex; //巡航路线值 const char *pCfg = ptz.ToString(); return XSDK_DevSetSysConfigSyn(g_hDevice, JK_OPPTZControl, pCfg, strlen(pCfg), outbuffer, &len, 5000, EXCMD_PTZ_REQ); } int TestPTZPreset() { printf("%s\r\n", __FUNCTION__); char c = 0; while((c = getchar()) != 'q') { switch(c) { ///设置预置点1 case 'a': { XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_SetPreset, 1); } break; ///转到预置点1 case 'b': { XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_GotoPreset, 1); } break; ////清除预置点1 case 'c': { XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_ClearPreset, 1); } break; ///设置预置点2,设置2前转动一下云台 case 'd': { XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_SetPreset, 2); } break; ///转到预置点2 case 'e': { XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_GotoPreset, 2); } break; ////清除预置点2 case 'f': { XSDK_DevPtzPreset(g_hDevice, 0, S_XPTZ_ClearPreset, 2); } break; case 'g': { int nRet = 0; nRet = XSDK_SetPtzTourPoint(g_hDevice, 0, 1, 4, 1, true); if(nRet >= 0) { nRet = XSDK_SetPtzTourPoint(g_hDevice, 0, 2, 4, 1, true); } } break; case 'h': { int nRet = 0; XSDK_SetPtzTourPoint(g_hDevice, 0, 1, 4, 1, false); if(nRet >= 0) { nRet = XSDK_SetPtzTourPoint(g_hDevice, 0, 2, 4, 1, false); } } break; ///巡航前需要设置至少两个预置点 case 't': { XSDK_DevPtzTour(g_hDevice, 0, 1, true); // XSDK_DevPtzTour(g_hDevice, 0, 1, false); } break; } } return 0; }