Commit 76a75bf3d06b25cefee22245b4fb1eca0225f181

Authored by Lawrence
1 parent 60b8934a

修正云台指令码变焦速度编码错误

src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -101,7 +101,7 @@ public class SIPCommander implements ISIPCommander { @@ -101,7 +101,7 @@ public class SIPCommander implements ISIPCommander {
101 * @param upDown 镜头上移下移 0:停止 1:上移 2:下移 101 * @param upDown 镜头上移下移 0:停止 1:上移 2:下移
102 * @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大 102 * @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大
103 * @param moveSpeed 镜头移动速度 默认 0XFF (0-255) 103 * @param moveSpeed 镜头移动速度 默认 0XFF (0-255)
104 - * @param zoomSpeed 镜头缩放速度 默认 0X1 (0-255) 104 + * @param zoomSpeed 镜头缩放速度 默认 0X1 (0-15)
105 */ 105 */
106 public static String cmdString(int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) { 106 public static String cmdString(int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) {
107 int cmdCode = 0; 107 int cmdCode = 0;
@@ -127,10 +127,12 @@ public class SIPCommander implements ISIPCommander { @@ -127,10 +127,12 @@ public class SIPCommander implements ISIPCommander {
127 strTmp = String.format("%02X", moveSpeed); 127 strTmp = String.format("%02X", moveSpeed);
128 builder.append(strTmp, 0, 2); 128 builder.append(strTmp, 0, 2);
129 builder.append(strTmp, 0, 2); 129 builder.append(strTmp, 0, 2);
130 - strTmp = String.format("%X", zoomSpeed); 130 + // strTmp = String.format("%X", zoomSpeed);
  131 + int zs=(zoomSpeed<<4 & 0XF0);
  132 + strTmp = String.format("%X", zs);
131 builder.append(strTmp, 0, 1).append("0"); 133 builder.append(strTmp, 0, 1).append("0");
132 //计算校验码 134 //计算校验码
133 - int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + (zoomSpeed << 4 & 0XF0)) % 0X100; 135 + int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + zs/*(zoomSpeed << 4 & 0XF0)*/) % 0X100;
134 strTmp = String.format("%02X", checkCode); 136 strTmp = String.format("%02X", checkCode);
135 builder.append(strTmp, 0, 2); 137 builder.append(strTmp, 0, 2);
136 return builder.toString(); 138 return builder.toString();
@@ -152,13 +154,14 @@ public class SIPCommander implements ISIPCommander { @@ -152,13 +154,14 @@ public class SIPCommander implements ISIPCommander {
152 public boolean ptzCmd(Device device, String channelId, int leftRight, int upDown, int inOut, int moveSpeed, 154 public boolean ptzCmd(Device device, String channelId, int leftRight, int upDown, int inOut, int moveSpeed,
153 int zoomSpeed) { 155 int zoomSpeed) {
154 try { 156 try {
  157 + String cmdStr= cmdString(leftRight, upDown, inOut, moveSpeed, zoomSpeed);
155 StringBuffer ptzXml = new StringBuffer(200); 158 StringBuffer ptzXml = new StringBuffer(200);
156 ptzXml.append("<?xml version=\"1.0\" ?>"); 159 ptzXml.append("<?xml version=\"1.0\" ?>");
157 ptzXml.append("<Control>"); 160 ptzXml.append("<Control>");
158 ptzXml.append("<CmdType>DeviceControl</CmdType>"); 161 ptzXml.append("<CmdType>DeviceControl</CmdType>");
159 ptzXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>"); 162 ptzXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>");
160 ptzXml.append("<DeviceID>" + channelId + "</DeviceID>"); 163 ptzXml.append("<DeviceID>" + channelId + "</DeviceID>");
161 - ptzXml.append("<PTZCmd>" + cmdString(leftRight, upDown, inOut, moveSpeed, zoomSpeed) + "</PTZCmd>"); 164 + ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>");
162 ptzXml.append("<Info>"); 165 ptzXml.append("<Info>");
163 ptzXml.append("</Info>"); 166 ptzXml.append("</Info>");
164 ptzXml.append("</Control>"); 167 ptzXml.append("</Control>");
@@ -166,7 +169,6 @@ public class SIPCommander implements ISIPCommander { @@ -166,7 +169,6 @@ public class SIPCommander implements ISIPCommander {
166 Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag"); 169 Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag");
167 170
168 transmitRequest(device, request); 171 transmitRequest(device, request);
169 -  
170 return true; 172 return true;
171 } catch (SipException | ParseException | InvalidArgumentException e) { 173 } catch (SipException | ParseException | InvalidArgumentException e) {
172 e.printStackTrace(); 174 e.printStackTrace();