ApiControlController.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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(String.format("模拟接口> 设备云台控制 API调用,deviceId:%s ,channelId:%s ,command:%d ,speed:%d ",
  38. serial, code, command, speed));
  39. }
  40. Device device = storager.queryVideoDevice(serial);
  41. int cmdCode = 0;
  42. switch (command){
  43. case "left":
  44. cmdCode = 2;
  45. break;
  46. case "right":
  47. cmdCode = 1;
  48. break;
  49. case "up":
  50. cmdCode = 8;
  51. break;
  52. case "down":
  53. cmdCode = 4;
  54. break;
  55. case "upleft":
  56. cmdCode = 10;
  57. break;
  58. case "upright":
  59. cmdCode = 9;
  60. break;
  61. case "downleft":
  62. cmdCode = 6;
  63. break;
  64. case "downright":
  65. cmdCode = 5;
  66. break;
  67. case "zoomin":
  68. cmdCode = 16;
  69. break;
  70. case "zoomout":
  71. cmdCode = 32;
  72. break;
  73. case "stop":
  74. cmdCode = 0;
  75. break;
  76. default:
  77. break;
  78. }
  79. // 默认值 50
  80. cmder.frontEndCmd(device, code, cmdCode, speed, speed, speed);
  81. return null;
  82. }
  83. }