123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- package com.persagy.cameractl.controller;
- import java.util.HashMap;
- import java.util.Map;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- import com.persagy.cameractl.sdk40.HCNetSDK;
- import com.persagy.cameractl.sdk40.HCNetSDK.NET_DVR_USER_LOGIN_INFO;
- import com.persagy.cameractl.utils.Camera;
- import com.persagy.cameractl.utils.ResultClass;
- import com.sun.jna.Structure;
- import com.sun.jna.Union;
- import com.sun.jna.ptr.IntByReference;
- /**
- * 测试类
- *
- * @version 1.0.0
- * @company persagy
- * @author zhangqiankun
- * @date 2022年6月20日 下午5:43:10
- */
- @RestController
- public class Test2Controller {
- public static Logger logger = LoggerFactory.getLogger(Test2Controller.class);
-
- /** 项目根路径*/
- public static final String SERVER_ROOT_PATH = System.getProperty("user.dir");
-
- public static volatile HCNetSDK hCNetSDK;
- private volatile boolean isInit = false;
-
- //@Autowired
- //private CameraApiConfig cameraApiConfig;
-
- @RequestMapping(value = "/sso", method = RequestMethod.POST)
- public ResultClass hello(@RequestBody Camera camera) throws Exception {
- ResultClass returnResult = new ResultClass();
- returnResult.name = false;
-
- // SDK初始化
- boolean init = this.init();
- if (!init) {
- returnResult.reason = "SDK初始化失败";
- return returnResult;
- }
-
- HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
- //NET_DVR_USER_LOGIN_INFO m_strLoginInfo = this.getLoginObject(cameraApiConfig.getDecodeDeviceUserName(), cameraApiConfig.getDecodeDevicePassword(), cameraApiConfig.getDecodeDeviceIp(), (short)cameraApiConfig.getDecodeDevicePort());
- NET_DVR_USER_LOGIN_INFO m_strLoginInfo = this.getLoginObject(camera.userName, camera.password, camera.cameraIp, (short)camera.cameraPort);
- int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
- if (lUserID == -1) {
- int errCode = hCNetSDK.NET_DVR_GetLastError();
- returnResult.reason = "设备注册失败,错误码: " + errCode;
- return returnResult;
- }
-
- HCNetSDK.NET_DVR_STREAM_INFO struStreamID = new HCNetSDK.NET_DVR_STREAM_INFO();
- struStreamID.dwSize = struStreamID.size();
- struStreamID.byID = "18083116593134708100".getBytes();
- struStreamID.write();
-
- NET_DVR_STREAM_SRC_INFO_V40 NET_DVR_STREAM_SRC_INFO_V40 = new NET_DVR_STREAM_SRC_INFO_V40();
-
- IntByReference lpBytesReturned = new IntByReference(0);
- boolean deviceConfig = hCNetSDK.NET_DVR_GetDeviceConfig(lUserID, 6024, 1, struStreamID.getPointer(), struStreamID.size(),
- lpBytesReturned.getPointer(), NET_DVR_STREAM_SRC_INFO_V40.getPointer(), NET_DVR_STREAM_SRC_INFO_V40.size());
- if (!deviceConfig) {
- returnResult.reason = "获取流来源信息失败,错误码: " + hCNetSDK.NET_DVR_GetLastError();
- return returnResult;
- }
- NET_DVR_STREAM_SRC_INFO_V40.read();
- returnResult.name = true;
-
- Map<String, Object> temp = new HashMap<String, Object>();
- temp.put("ip", new String(NET_DVR_STREAM_SRC_INFO_V40.uGetStream.struChanInfo.byAddress));
- temp.put("username", new String(NET_DVR_STREAM_SRC_INFO_V40.uGetStream.struChanInfo.sUserName));
- temp.put("password", new String(NET_DVR_STREAM_SRC_INFO_V40.uGetStream.struChanInfo.sPassword));
- temp.put("port", NET_DVR_STREAM_SRC_INFO_V40.uGetStream.struChanInfo.wDVRPort);
- temp.put("channel", NET_DVR_STREAM_SRC_INFO_V40.uGetStream.struChanInfo.dwChannel);
- temp.put("protocol", NET_DVR_STREAM_SRC_INFO_V40.uGetStream.struChanInfo.byTransProtocol);
- returnResult.resultData = temp;
-
- //退出程序时调用,每一台设备分别注销
- if (hCNetSDK.NET_DVR_Logout(lUserID)) {
- logger.info("logout success");
- }
-
- return returnResult;
- }
-
- private boolean init() {
- if (!isInit) {
- // 初始化
- hCNetSDK = HCNetSDK.INSTANCE;
- isInit = hCNetSDK.NET_DVR_Init();
- }
- return isInit;
- }
-
- private HCNetSDK.NET_DVR_USER_LOGIN_INFO getLoginObject(String m_sUsername, String m_sPassword, String m_sDeviceIP, short wPort) {
- HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
- m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
- System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
- m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
- System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
- m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
- System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
- m_strLoginInfo.wPort = wPort; //SDK端口
- m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
- m_strLoginInfo.write();
-
- return m_strLoginInfo;
- }
-
-
- public static class NET_DVR_STREAM_SRC_INFO_V40 extends Structure {
- public int dwSize;
- public byte byGetStreamType;
- public byte[] byRes1 = new byte[3];
- public NET_DVR_STREAM_TYPE_V40_UNION uGetStream = new NET_DVR_STREAM_TYPE_V40_UNION();
- public byte[] byRes = new byte[512];
- }
-
- public static class NET_DVR_STREAM_TYPE_V40_UNION extends Union {
- public NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40 struChanInfo = new NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40();
- public NET_DVR_PU_STREAM_URL struPuStreamUrl = new NET_DVR_PU_STREAM_URL();
- public NET_DVR_PU_STREAM_URL_CFG_V40 struStreamUrlCfg = new NET_DVR_PU_STREAM_URL_CFG_V40();
- public NET_DVR_RTSP_PROTOCAL_CFG struRtspCfg = new NET_DVR_RTSP_PROTOCAL_CFG();
- public NET_DVR_STREAM_URL_V40 struStreamUrlV40 = new NET_DVR_STREAM_URL_V40();
- }
-
- public static class NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40 extends Structure {
- public byte byEnable;
- public byte byProType;
- public byte byZeroChan;
- public byte byRes1;
- public byte[] sUserName = new byte[32];
- public byte[] sPassword = new byte[16];
- public byte[] byAddress = new byte[64];
- public short wDVRPort;
- public byte byStreamType;
- public byte byOnline;
- public int dwChannel;
- public byte byTransProtocol;
- public byte byLocalBackUp;
- public byte[] byRes2 = new byte[2];
- public byte[] byVAGChanNo = new byte[32];
- public byte[] byRes = new byte[340];
- }
-
- public static class NET_DVR_PU_STREAM_URL extends Structure {
- public byte byEnable;//是否启用:0- 禁用,1- 启用
- public byte[] strURL = new byte[240];//取流URL路径
- public byte byTransPortocol;//传输协议类型:0-TCP,1-UDP
- public short wIPID;//设备ID号,wIPID = iDevInfoIndex + iGroupNO*64 +1
- public byte byChannel;//设备通道号
- public byte[] byRes = new byte[7];//保留,置为0
- }
-
- public static class NET_DVR_PU_STREAM_URL_CFG_V40 extends Structure {
- public byte byEnable;
- public byte[] byRes = new byte[3];
- public byte[] byStreamMediaIP = new byte[64];
- public short wStreamMediaPort;
- public byte byTransmitType;
- public byte byRes1;
- public byte[] byDevIP = new byte[64];
- public short wDevPort;
- public byte byChannel;
- public byte byTransMode;
- public byte byProType;
- public byte byTransProtocol;
- public byte[] byRes3 = new byte[2];
- public byte[] sUserName = new byte[32];
- public byte[] sPassWord = new byte[16];
- public byte[] byRes2 = new byte[308];
- }
-
- public static class NET_DVR_RTSP_PROTOCAL_CFG extends Structure {
- public byte byEnable;
- public byte byLocalBackUp;
- public byte[] byRes = new byte[2];
- public byte[] strURL = new byte[256];
- public int dwProtocalType;
- public byte[] sUserName = new byte[32];
- public byte[] sPassWord = new byte[16];
- public byte[] byAddress = new byte[64];
- public short wPort;
- public byte[] byRes1 = new byte[122];
- }
-
- public static class NET_DVR_STREAM_URL_V40 extends Structure {
- public byte byEnable;
- public byte byStreamType;
- public byte byLocalBackUp;
- public byte byRes;
- public byte[] strURL = new byte[256];
- public int dwProtocalType;
- public byte[] sUserName = new byte[32];
- public byte[] sPassWord = new byte[16];
- public byte[] byAddress = new byte[64];
- public short wIPPort;
- public short wChanNo;
- public byte[] byVAGChanNo = new byte[32];
- public byte[] byRes1 = new byte[88];
- }
-
-
- public static class NET_DVR_STREAM_SRC_CFG extends Structure {
- public int dwSize;
- public HCNetSDK.NET_DVR_STREAM_INFO struStreamID = new HCNetSDK.NET_DVR_STREAM_INFO();
- public NET_DVR_STREAM_SRC_INFO struStreamSrcInfo = new NET_DVR_STREAM_SRC_INFO();
- }
-
- public static class NET_DVR_STREAM_SRC_INFO extends Structure {
- public int dwSize;
- public NET_DVR_STREAM_MODE_TYPE struStreamSrcInfo = new NET_DVR_STREAM_MODE_TYPE();
- }
-
- public static class NET_DVR_STREAM_MODE_TYPE extends Structure {
- public byte byGetStreamType;
- public byte[] byRes = new byte[3];
- public NET_DVR_STREAM_TYPE_UNION uGetStream = new NET_DVR_STREAM_TYPE_UNION();
- }
-
- public static class NET_DVR_STREAM_TYPE_UNION extends Union {
- public NET_DVR_DIRECT_CONNECT_CHAN_INFO struChanInfo = new NET_DVR_DIRECT_CONNECT_CHAN_INFO();
- public HCNetSDK.NET_DVR_PU_STREAM_URL struStreamUrl = new HCNetSDK.NET_DVR_PU_STREAM_URL();
- public NET_DVR_PU_STREAM_URL_CFG struStreamUrlCfg = new NET_DVR_PU_STREAM_URL_CFG();
- }
-
- public static class NET_DVR_DIRECT_CONNECT_CHAN_INFO extends Structure {
- public byte byEnable;
- public byte byProType;
- public byte byZeroChan;
- public byte byPriority;
- public byte[] sUserName = new byte[32];
- public byte[] sPassword = new byte[16];
- public byte[] byDomain = new byte[64];
- public HCNetSDK.NET_DVR_IPADDR struIP;
- public short wDVRPort;
- public byte byStreamType;
- public byte byOnline;
- public int dwChannel;
- public byte byTransProtocol;
- public byte byLocalBackUp;
- public short wDirectLastTime;
- public byte[] byChanNo = new byte[24];
- }
-
- public static class NET_DVR_PU_STREAM_URL_CFG extends Structure {
- public byte byEnable;
- public byte[] byRes = new byte[3];
- public byte[] byStreamMediaIP = new byte[64];
- public short wStreamMediaPort;
- public byte byTransmitType;
- public byte[] byRes1 = new byte[33];
- public byte[] byDevIP = new byte[64];
- public short wDevPort;
- public short byChannel;
- public byte byTransMode;
- public byte byProType;
- public byte byTransProtocol;
- public byte[] byRes3 = new byte[2];
- public byte[] sUserName = new byte[32];
- public byte[] sPassWord = new byte[16];
- public byte[] byRes2 = new byte[28];
- }
-
- /*@RequestMapping(value = "/sso", method = RequestMethod.POST)
- public ResultClass hello(@RequestBody Camera camera) throws Exception {
- ResultClass returnResult = new ResultClass();
- returnResult.name = false;
-
- // SDK初始化
- boolean init = this.init();
- if (!init) {
- returnResult.reason = "SDK初始化失败";
- return returnResult;
- }
-
- HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
- //NET_DVR_USER_LOGIN_INFO m_strLoginInfo = this.getLoginObject(cameraApiConfig.getDecodeDeviceUserName(), cameraApiConfig.getDecodeDevicePassword(), cameraApiConfig.getDecodeDeviceIp(), (short)cameraApiConfig.getDecodeDevicePort());
- NET_DVR_USER_LOGIN_INFO m_strLoginInfo = this.getLoginObject(camera.userName, camera.password, camera.cameraIp, (short)camera.cameraPort);
- int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
- if (lUserID == -1) {
- int errCode = hCNetSDK.NET_DVR_GetLastError();
- returnResult.reason = "设备注册失败,错误码: " + errCode;
- return returnResult;
- }
-
- NET_DVR_STREAM_SRC_CFG net_dvr_stream_src_cfg = new NET_DVR_STREAM_SRC_CFG();
- boolean deviceConfig = hCNetSDK.NET_DVR_GetDeviceConfig(lUserID, 9105, 0xffffffff, null, 0, null, net_dvr_stream_src_cfg.getPointer(), net_dvr_stream_src_cfg.size());
- if (!deviceConfig) {
- returnResult.reason = "获取设备流配置失败,错误码: " + hCNetSDK.NET_DVR_GetLastError();
- return returnResult;
- }
- net_dvr_stream_src_cfg.read();
- returnResult.name = true;
- returnResult.resultData = net_dvr_stream_src_cfg.toString();
-
- //退出程序时调用,每一台设备分别注销
- if (hCNetSDK.NET_DVR_Logout(lUserID)) {
- logger.info("logout success");
- }
-
- return returnResult;
- }*/
- }
|