From 76a75bf3d06b25cefee22245b4fb1eca0225f181 Mon Sep 17 00:00:00 2001 From: Lawrence <1934378145@qq.com> Date: 星期三, 10 六月 2020 13:28:27 +0800 Subject: [PATCH] 修正云台指令码变焦速度编码错误 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index 82dcee8..9b9ca2b 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -94,6 +94,51 @@ 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-15) + */ + 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); + int zs=(zoomSpeed<<4 & 0XF0); + strTmp = String.format("%X", zs); + builder.append(strTmp, 0, 1).append("0"); + //璁$畻鏍¢獙鐮� + int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + zs/*(zoomSpeed << 4 & 0XF0)*/) % 0X100; + strTmp = String.format("%02X", checkCode); + builder.append(strTmp, 0, 2); + return builder.toString(); +} + + /** * 浜戝彴鎺у埗锛屾敮鎸佹柟鍚戜笌缂╂斁鎺у埗 * @@ -109,13 +154,14 @@ public boolean ptzCmd(Device device, String channelId, int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) { try { + String cmdStr= cmdString(leftRight, upDown, inOut, moveSpeed, zoomSpeed); StringBuffer ptzXml = new StringBuffer(200); ptzXml.append("<?xml version=\"1.0\" ?>"); ptzXml.append("<Control>"); ptzXml.append("<CmdType>DeviceControl</CmdType>"); ptzXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>"); ptzXml.append("<DeviceID>" + channelId + "</DeviceID>"); - ptzXml.append("<PTZCmd>" + PtzCmdHelper.create(leftRight, upDown, inOut, moveSpeed, zoomSpeed) + "</PTZCmd>"); + ptzXml.append("<PTZCmd>" + cmdStr + "</PTZCmd>"); ptzXml.append("<Info>"); ptzXml.append("</Info>"); ptzXml.append("</Control>"); @@ -123,7 +169,6 @@ Request request = headerProvider.createMessageRequest(device, ptzXml.toString(), "ViaPtzBranch", "FromPtzTag", "ToPtzTag"); transmitRequest(device, request); - return true; } catch (SipException | ParseException | InvalidArgumentException e) { e.printStackTrace(); -- Gitblit v1.8.0