forked from Thirdparty/wvp
实现PTZ控制代码
parent
e4894a45a4
commit
89c6224062
|
@ -94,6 +94,49 @@ public class SIPCommander implements ISIPCommander {
|
|||
return ptzCmd(device, channelId, 0, 0, inOut, 0, zoomSpeed);
|
||||
}
|
||||
|
||||
/**
|
||||
* 云台指令码计算
|
||||
*
|
||||
* @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
|
||||
* @param upDown 镜头上移下移 0:停止 1:上移 2:下移
|
||||
* @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大
|
||||
* @param moveSpeed 镜头移动速度 默认 0XFF (0-255)
|
||||
* @param zoomSpeed 镜头缩放速度 默认 0X1 (0-255)
|
||||
*/
|
||||
public static String cmdString(int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) {
|
||||
int cmdCode = 0;
|
||||
if (leftRight == 2) {
|
||||
cmdCode|=0x01; // 右移
|
||||
} else if(leftRight == 1) {
|
||||
cmdCode|=0x02; // 左移
|
||||
}
|
||||
if (upDown == 2) {
|
||||
cmdCode|=0x04; // 下移
|
||||
} else if(upDown == 1) {
|
||||
cmdCode|=0x08; // 上移
|
||||
}
|
||||
if (inOut == 2) {
|
||||
cmdCode |= 0x10; // 放大
|
||||
} else if(inOut == 1) {
|
||||
cmdCode |= 0x20; // 缩小
|
||||
}
|
||||
StringBuilder builder = new StringBuilder("A50F01");
|
||||
String strTmp;
|
||||
strTmp = String.format("%02X", cmdCode);
|
||||
builder.append(strTmp, 0, 2);
|
||||
strTmp = String.format("%02X", moveSpeed);
|
||||
builder.append(strTmp, 0, 2);
|
||||
builder.append(strTmp, 0, 2);
|
||||
strTmp = String.format("%X", zoomSpeed);
|
||||
builder.append(strTmp, 0, 1).append("0");
|
||||
//计算校验码
|
||||
int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + (zoomSpeed << 4 & 0XF0)) % 0X100;
|
||||
strTmp = String.format("%02X", checkCode);
|
||||
builder.append(strTmp, 0, 2);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 云台控制,支持方向与缩放控制
|
||||
*
|
||||
|
@ -115,7 +158,7 @@ public class SIPCommander implements ISIPCommander {
|
|||
ptzXml.append("<CmdType>DeviceControl</CmdType>");
|
||||
ptzXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>");
|
||||
ptzXml.append("<DeviceID>" + channelId + "</DeviceID>");
|
||||
ptzXml.append("<PTZCmd>" + "</PTZCmd>");
|
||||
ptzXml.append("<PTZCmd>" + cmdString(leftRight, upDown, inOut, moveSpeed, zoomSpeed) + "</PTZCmd>");
|
||||
ptzXml.append("<Info>");
|
||||
ptzXml.append("</Info>");
|
||||
ptzXml.append("</Control>");
|
||||
|
|
|
@ -26,7 +26,8 @@ spring:
|
|||
server:
|
||||
port: 8080
|
||||
sip:
|
||||
ip: 10.200.64.63
|
||||
# ip: 10.200.64.63
|
||||
ip: 192.168.0.102
|
||||
port: 5060
|
||||
# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
|
||||
# 后两位为行业编码,定义参照附录D.3
|
||||
|
@ -34,7 +35,8 @@ sip:
|
|||
domain: 3701020049
|
||||
id: 37010200492000000001
|
||||
# 默认设备认证密码,后续扩展使用设备单独密码
|
||||
password: admin
|
||||
password: admin123
|
||||
media:
|
||||
ip: 10.200.64.88
|
||||
# ip: 10.200.64.88
|
||||
ip: 192.168.0.102
|
||||
port: 10000
|
Loading…
Reference in New Issue