ApiControlController.java 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.genersoft.iot.vmp.web.gb28181;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.genersoft.iot.vmp.gb28181.bean.Device;
  4. import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
  5. import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.web.bind.annotation.*;
  10. /**
  11. * API兼容:设备控制
  12. */
  13. @CrossOrigin
  14. @RestController
  15. @RequestMapping(value = "/api/v1/control")
  16. public class ApiControlController {
  17. private final static Logger logger = LoggerFactory.getLogger(ApiControlController.class);
  18. @Autowired
  19. private SIPCommander cmder;
  20. @Autowired
  21. private IVideoManagerStorager storager;
  22. /**
  23. * 设备控制 - 云台控制
  24. * @param serial 设备编号
  25. * @param command 控制指令 允许值: left, right, up, down, upleft, upright, downleft, downright, zoomin, zoomout, stop
  26. * @param channel 通道序号
  27. * @param code 通道编号
  28. * @param speed 速度(0~255) 默认值: 129
  29. * @return
  30. */
  31. @RequestMapping(value = "/ptz")
  32. private JSONObject list(String serial,String command,
  33. @RequestParam(required = false)Integer channel,
  34. @RequestParam(required = false)String code,
  35. @RequestParam(required = false)Integer speed){
  36. if (logger.isDebugEnabled()) {
  37. logger.debug("模拟接口> 设备云台控制 API调用,deviceId:{} ,channelId:{} ,command:{} ,speed:{} ",
  38. serial, code, command, speed);
  39. }
  40. if (channel == null) {channel = 0;}
  41. if (speed == null) {speed = 0;}
  42. Device device = storager.queryVideoDevice(serial);
  43. if (device == null) {
  44. JSONObject result = new JSONObject();
  45. result.put("error","device[ " + serial + " ]未找到");
  46. return result;
  47. }
  48. int cmdCode = 0;
  49. switch (command){
  50. case "left":
  51. cmdCode = 2;
  52. break;
  53. case "right":
  54. cmdCode = 1;
  55. break;
  56. case "up":
  57. cmdCode = 8;
  58. break;
  59. case "down":
  60. cmdCode = 4;
  61. break;
  62. case "upleft":
  63. cmdCode = 10;
  64. break;
  65. case "upright":
  66. cmdCode = 9;
  67. break;
  68. case "downleft":
  69. cmdCode = 6;
  70. break;
  71. case "downright":
  72. cmdCode = 5;
  73. break;
  74. case "zoomin":
  75. cmdCode = 16;
  76. break;
  77. case "zoomout":
  78. cmdCode = 32;
  79. break;
  80. case "stop":
  81. cmdCode = 0;
  82. break;
  83. default:
  84. break;
  85. }
  86. // 默认值 50
  87. cmder.frontEndCmd(device, code, cmdCode, speed, speed, speed);
  88. return null;
  89. }
  90. }