From 28b9d3d94ad01ee45a2f8f8d6f4f54e9aa3cb6b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Fri, 13 Oct 2023 14:49:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=A0=E9=99=A4=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leaper/web/controller/TestController.java | 37 ++++++++++++++- .../java/com/leaper/web/lib/hik/HCNetSDK.java | 4 ++ .../com/leaper/web/service/FtpsUtils.java | 37 +-------------- .../leaper/web/service/sftp/SftpHelper.java | 3 +- .../web/service/test/MyServerHandler.java | 33 +++++++++++++ .../leaper/web/service/test/MyService.java | 46 +++++++++++++++++++ web/src/main/resources/application-test.yml | 4 +- 7 files changed, 123 insertions(+), 41 deletions(-) create mode 100644 web/src/main/java/com/leaper/web/service/test/MyServerHandler.java create mode 100644 web/src/main/java/com/leaper/web/service/test/MyService.java diff --git a/web/src/main/java/com/leaper/web/controller/TestController.java b/web/src/main/java/com/leaper/web/controller/TestController.java index cb0f1aa..323b0af 100644 --- a/web/src/main/java/com/leaper/web/controller/TestController.java +++ b/web/src/main/java/com/leaper/web/controller/TestController.java @@ -1,5 +1,11 @@ package com.leaper.web.controller; +import com.leaper.web.lib.CameraConnMap; +import com.leaper.web.lib.hik.HCNetSDK; +import com.leaper.web.lib.hik.HikLoginModuleImpl; +import com.sun.jna.Memory; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.IntByReference; import com.zhehekeji.core.pojo.Result; import com.leaper.web.service.TestService; import io.swagger.annotations.Api; @@ -8,6 +14,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import static com.leaper.web.lib.hik.HCNetSDK.NET_DVR_GET_PTZPOS; + @Api(value = "TestController",tags = "扫码测试") @RequestMapping("/test") @RestController @@ -29,6 +37,33 @@ public class TestController { return Result.success(); } + @GetMapping("getCremareInfo") + public Result getCremareInfo(){ + HCNetSDK.NET_DVR_PTZPOS ptzpos = new HCNetSDK.NET_DVR_PTZPOS(); + Pointer pointer = ptzpos.getPointer(); + IntByReference pInt = new IntByReference(1); + int lUserId = CameraConnMap.getConnId(1).intValue(); + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetDVRConfig(lUserId,293,1,pointer,ptzpos.size(),pInt); + if (ok == false) { + System.out.println("获取参数失败 错误码:" + HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError()); + } + ptzpos.read(); + return Result.success(ptzpos.toString()); + } + @GetMapping("setCremareInfo") + public Result setCremareInfo(){ + HCNetSDK.NET_DVR_PTZPOS ptzpos = new HCNetSDK.NET_DVR_PTZPOS(); + ptzpos.wAction = 1; + ptzpos.wPanPos=16; + ptzpos.wTiltPos = 0; + ptzpos.wZoomPos = 0x1100; + ptzpos.write(); + Boolean ok = HikLoginModuleImpl.hcNetsdk.NET_DVR_SetDVRConfig(CameraConnMap.getConnId(1).intValue(),292,1,ptzpos.getPointer(),ptzpos.size()); + if (ok == false) { + System.out.println("获取参数失败 错误码:" + HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError()); + } + return Result.success(ptzpos.toString()); + } -} +} \ No newline at end of file diff --git a/web/src/main/java/com/leaper/web/lib/hik/HCNetSDK.java b/web/src/main/java/com/leaper/web/lib/hik/HCNetSDK.java index 501acdb..3ea4cb3 100644 --- a/web/src/main/java/com/leaper/web/lib/hik/HCNetSDK.java +++ b/web/src/main/java/com/leaper/web/lib/hik/HCNetSDK.java @@ -3134,6 +3134,10 @@ DVR实现巡航数据结构 public short wPanPos;//水平参数 public short wTiltPos;//垂直参数 public short wZoomPos;//变倍参数 + protected List getFieldOrder() { +// TODO Auto-generated method stub + return Arrays.asList("wAction","wPanPos","wTiltPos","wZoomPos"); //这里参数顺序和SDK开发包的C++定义必须完全一致 + } } //球机范围信息 diff --git a/web/src/main/java/com/leaper/web/service/FtpsUtils.java b/web/src/main/java/com/leaper/web/service/FtpsUtils.java index 7e43af0..734db37 100644 --- a/web/src/main/java/com/leaper/web/service/FtpsUtils.java +++ b/web/src/main/java/com/leaper/web/service/FtpsUtils.java @@ -98,6 +98,7 @@ public class FtpsUtils { picData.setUrl(targetFilePath); picData.setCreateTime(LocalDateTime.now()); picDataMapper.insert(picData); + file.delete(); //deleteFileSrc(file); //create a folder //sftpClient.mkdir("/data"); @@ -149,41 +150,5 @@ public class FtpsUtils { dir.delete(); } } -// } -// public void deleteFile(){ -// SSHClient ssh = new SSHClient(); -// SFTPClient sftpClient = null; -// try { -// //ssh.loadKnownHosts(); to skip host verification -// ssh.addHostKeyVerifier(new PromiscuousVerifier()); -// ssh.connect(this.hostName); -// ssh.authPassword(username, password); -// sftpClient = ssh.newSFTPClient(); -// -// sftpClient.mkdirs(targetFilePath.substring(0,targetFilePath.lastIndexOf("/")));//创建多级文件夹 -// sftpClient.rm( targetFilePath); -// //create a folder -// //sftpClient.mkdir("/data"); -// //sftpClient.rmdir("");重命名文件夹 -// //List s = sftpClient.ls("/"); //列出当前目录 -// //System.out.println(s); -// } catch (IOException e) { -// log.error(e.getMessage(), e); -// } finally { -// if (null != sftpClient) { -// try { -// sftpClient.close(); -// } catch (IOException e) { -// log.error(e.getMessage(), e); -// } -// } -// try { -// ssh.disconnect(); -// } catch (IOException e) { -// log.error(e.getMessage(), e); -// } -// } -// } - } diff --git a/web/src/main/java/com/leaper/web/service/sftp/SftpHelper.java b/web/src/main/java/com/leaper/web/service/sftp/SftpHelper.java index 422b16f..a9c83f3 100644 --- a/web/src/main/java/com/leaper/web/service/sftp/SftpHelper.java +++ b/web/src/main/java/com/leaper/web/service/sftp/SftpHelper.java @@ -186,5 +186,4 @@ public class SftpHelper { pool.returnObject(sftp); } } -} - +} \ No newline at end of file diff --git a/web/src/main/java/com/leaper/web/service/test/MyServerHandler.java b/web/src/main/java/com/leaper/web/service/test/MyServerHandler.java new file mode 100644 index 0000000..87886ed --- /dev/null +++ b/web/src/main/java/com/leaper/web/service/test/MyServerHandler.java @@ -0,0 +1,33 @@ +package com.leaper.web.service.test; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.util.CharsetUtil; + +/** + * 自定义的Handler需要继承Netty规定好的HandlerAdapter + * 才能被Netty框架所关联,有点类似SpringMVC的适配器模式 + **/ +public class MyServerHandler extends ChannelInboundHandlerAdapter { + + @Override + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + //获取客户端发送过来的消息 + ByteBuf byteBuf = (ByteBuf) msg; + System.out.println("收到客户端" + ctx.channel().remoteAddress() + "发送的消息:" + byteBuf.toString(CharsetUtil.UTF_8)); + } + + @Override + public void channelReadComplete(ChannelHandlerContext ctx) throws Exception { + //发送消息给客户端 + ctx.writeAndFlush(Unpooled.copiedBuffer("服务端已收到消息,并给你发送一个问号?", CharsetUtil.UTF_8)); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + //发生异常,关闭通道 + ctx.close(); + } +} \ No newline at end of file diff --git a/web/src/main/java/com/leaper/web/service/test/MyService.java b/web/src/main/java/com/leaper/web/service/test/MyService.java new file mode 100644 index 0000000..e69cb2e --- /dev/null +++ b/web/src/main/java/com/leaper/web/service/test/MyService.java @@ -0,0 +1,46 @@ +package com.leaper.web.service.test; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; + +public class MyService { + public static void main(String[] args) throws Exception { + //创建两个线程组 boosGroup、workerGroup + EventLoopGroup bossGroup = new NioEventLoopGroup(); + EventLoopGroup workerGroup = new NioEventLoopGroup(); + try { + //创建服务端的启动对象,设置参数 + ServerBootstrap bootstrap = new ServerBootstrap(); + //设置两个线程组boosGroup和workerGroup + bootstrap.group(bossGroup, workerGroup) + //设置服务端通道实现类型 + .channel(NioServerSocketChannel.class) + //设置线程队列得到连接个数 + .option(ChannelOption.SO_BACKLOG, 128) + //设置保持活动连接状态 + .childOption(ChannelOption.SO_KEEPALIVE, true) + //使用匿名内部类的形式初始化通道对象 + .childHandler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel socketChannel) throws Exception { + //给pipeline管道设置处理器 + socketChannel.pipeline().addLast(new MyServerHandler()); + } + });//给workerGroup的EventLoop对应的管道设置处理器 + System.out.println("java技术爱好者的服务端已经准备就绪..."); + //绑定端口号,启动服务端 + ChannelFuture channelFuture = bootstrap.bind(6666).sync(); + //对关闭通道进行监听 + channelFuture.channel().closeFuture().sync(); + } finally { + bossGroup.shutdownGracefully(); + workerGroup.shutdownGracefully(); + } + } +} \ No newline at end of file diff --git a/web/src/main/resources/application-test.yml b/web/src/main/resources/application-test.yml index 3238321..a55e493 100644 --- a/web/src/main/resources/application-test.yml +++ b/web/src/main/resources/application-test.yml @@ -7,14 +7,14 @@ spring: maxWait: 60000 minEvictableIdleTimeMillis: 300000 minIdle: 15 - password: Leaper@123 + password: root poolPreparedStatements: true testOnBorrow: true testOnReturn: false testWhileIdle: false timeBetweenEvictionRunsMillis: 60000 type: com.alibaba.druid.pool.DruidDataSource - url: jdbc:mysql://121.37.95.190:3306/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + url: jdbc:mysql://127.0.0.1:3306/lia_duoji?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 username: root validationQuery: SELECT 1 FROM DUAL #--------------