package com.netsdk.demo.customize.ptzNewDemo.module;
|
|
import com.netsdk.lib.NetSDKLib;
|
import com.netsdk.lib.ToolKits;
|
import com.netsdk.lib.structure.NET_IN_PTZBASE_MOVEABSOLUTELY_INFO;
|
import com.netsdk.lib.structure.NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO;
|
|
/**
|
* PTZ 控制接口
|
*
|
* @author 47040
|
* @since Created in 2021/3/25 22:06
|
*/
|
public class PtzControlModule {
|
|
static NetSDKLib NetSdk = NetSDKLib.NETSDK_INSTANCE;
|
|
/**
|
* 向上
|
*/
|
public static boolean ptzControlUpStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
|
lParam1, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlUpEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 向下
|
*/
|
public static boolean ptzControlDownStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL,
|
lParam1, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlDownEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 向左
|
*/
|
public static boolean ptzControlLeftStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL,
|
lParam1, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlLeftEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 向右
|
*/
|
public static boolean ptzControlRightStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL,
|
lParam1, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlRightEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 向左上
|
*/
|
public static boolean ptzControlLeftUpStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx2(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP,
|
lParam1, lParam2, 0, 0, null);
|
}
|
|
public static boolean ptzControlLeftUpEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx2(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP,
|
0, 0, 0, 1, null);
|
}
|
|
/**
|
* 向右上
|
*/
|
public static boolean ptzControlRightUpStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP,
|
lParam1, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlRightUpEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 向左下
|
*/
|
public static boolean ptzControlLeftDownStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN,
|
lParam1, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlLeftDownEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 向右下
|
*/
|
public static boolean ptzControlRightDownStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam1, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN,
|
lParam1, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlRightDownEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 变倍+
|
*/
|
public static boolean ptzControlZoomAddStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL,
|
0, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlZoomAddEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 变倍-
|
*/
|
public static boolean ptzControlZoomDecStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL,
|
0, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlZoomDecEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 变焦+
|
*/
|
public static boolean ptzControlFocusAddStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL,
|
0, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlFocusAddEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 变焦-
|
*/
|
public static boolean ptzControlFocusDecStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL,
|
0, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlFocusDecEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 光圈+
|
*/
|
public static boolean ptzControlIrisAddStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL,
|
0, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlIrisAddEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 光圈-
|
*/
|
public static boolean ptzControlIrisDecStart(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int lParam2) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL,
|
0, lParam2, 0, 0);
|
}
|
|
public static boolean ptzControlIrisDecEnd(NetSDKLib.LLong m_hLoginHandle, int nChannelID) {
|
return NetSdk.CLIENT_DHPTZControlEx(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL,
|
0, 0, 0, 1);
|
}
|
|
/**
|
* 精确绝对移动 ( BaseMoveAbsolutely 协议 )
|
*
|
* @param m_hLoginHandle 登录句柄
|
* @param nChannelID 通道号
|
* @param xParam x轴转角(0-3600,部分设备支持负数,请以实际测试为准)
|
* @param yParam y轴转角(早期云台只支持 0-900 即正 90度转角, 现在很多设备已支持负转角,请以实际测试为准)
|
* @param zoomMapValue 倍率映射值
|
* @return 运行是否成功
|
*/
|
public static boolean ptzControlBaseMoveAbsolutely(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int xParam, int yParam, int zoomMapValue) {
|
|
NET_IN_PTZBASE_MOVEABSOLUTELY_INFO stuBaseMoveInfo = new NET_IN_PTZBASE_MOVEABSOLUTELY_INFO();
|
stuBaseMoveInfo.nZoomFlag = 3; // zoom 倍率映射值
|
stuBaseMoveInfo.stuPosition.nPosX = xParam;
|
stuBaseMoveInfo.stuPosition.nPosY = yParam;
|
stuBaseMoveInfo.stuPosition.nZoom = zoomMapValue;
|
|
stuBaseMoveInfo.write();
|
if (!NetSdk.CLIENT_DHPTZControlEx2(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_BASE_MOVE_ABSOLUTELY,
|
0, 0, 0, 0, stuBaseMoveInfo.getPointer())) {
|
System.err.println("Move Absolutely Failed!" + ToolKits.getErrorCode());
|
return false;
|
} else {
|
System.out.println("Move Absolutely Succeed!");
|
return true;
|
}
|
|
}
|
|
/**
|
* 绝对移动 ( Base MoveAbsolutely 协议 )
|
*
|
* @param m_hLoginHandle 登录句柄
|
* @param nChannelID 通道号
|
* @param xParam x轴转角(0-3600,部分设备支持负数,请以实际测试为准)
|
* @param yParam y轴转角(早期云台只支持 0-900 即正 90度转角, 现在很多设备已支持负转角,请以实际测试为准)
|
* @param zoomReal 变倍大小 (10倍放大)
|
* @return 运行是否成功
|
*/
|
public static boolean ptzControlMoveAbsolutely(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int xParam, int yParam, int zoomReal) {
|
|
NetSDKLib.PTZ_CONTROL_ABSOLUTELY stuPTZAbs = new NetSDKLib.PTZ_CONTROL_ABSOLUTELY();
|
|
stuPTZAbs.stuPosition.nPositionX = xParam;
|
stuPTZAbs.stuPosition.nPositionY = yParam;
|
stuPTZAbs.stuPosition.nZoom = zoomReal;
|
|
// 速度这里就统一0.5了,有需要可以自己改
|
stuPTZAbs.stuSpeed.fPositionX = 0.5f;
|
stuPTZAbs.stuSpeed.fPositionY = 0.5f;
|
stuPTZAbs.stuSpeed.fZoom = 0.5f;
|
|
stuPTZAbs.write();
|
if (!NetSdk.CLIENT_DHPTZControlEx2(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_MOVE_ABSOLUTELY,
|
0, 0, 0, 0, stuPTZAbs.getPointer())) {
|
System.err.println("Move Absolutely Failed!" + ToolKits.getErrorCode());
|
return false;
|
} else {
|
System.out.println("Move Absolutely Succeed!");
|
return true;
|
}
|
}
|
|
/**
|
* 三维定位 ( ExactGoto 协议 )
|
*
|
* @param m_hLoginHandle 登录句柄
|
* @param nChannelID 通道号
|
* @param xParam x轴转角(0-3600,部分设备支持负数,请以实际测试为准)
|
* @param yParam y轴转角(早期云台只支持 0-900 即正 90度转角, 现在很多设备已支持负转角,请以实际测试为准)
|
* @param zoomRelative 相对变倍大小(设备支持 0-128 放大)
|
* @return 运行是否成功
|
*/
|
public static boolean ptzControlExactGotoControl(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int xParam, int yParam, int zoomRelative) {
|
|
return NetSdk.CLIENT_DHPTZControlEx2(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_EXACTGOTO, // 精确控制
|
xParam, yParam, zoomRelative, 1, null);
|
}
|
|
|
/**
|
* 设置位置聚焦值 ( set focus map )
|
*
|
* @param m_hLoginHandle 登录句柄
|
* @param nChannelID 通道号
|
* @param focusMapValue 聚焦值
|
* @return 运行是否成功
|
*/
|
public static boolean ptzControlSetFocusMapValue(NetSDKLib.LLong m_hLoginHandle, int nChannelID, int focusMapValue) {
|
NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO focusMapInfo = new NET_IN_PTZBASE_SET_FOCUS_MAP_VALUE_INFO();
|
focusMapInfo.nfocusMapValue = focusMapValue;
|
|
focusMapInfo.write();
|
if (!NetSdk.CLIENT_DHPTZControlEx2(m_hLoginHandle, nChannelID,
|
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_BASE_SET_FOCUS_MAP_VALUE,
|
0, 0, 0, 0, focusMapInfo.getPointer())) {
|
System.err.println("Set Focus Map Failed!" + ToolKits.getErrorCode());
|
return false;
|
} else {
|
System.out.println("Set Focus Map Succeed!");
|
return true;
|
}
|
}
|
}
|