目录
搭建一个空的Springboot服务
这部分不想讲,很简单,就搭建一个空的Springboot服务,把Controller和Service层建好就行。
海康二次开发包解析以及处理
从海康官网下载的二次开发包,先看Demo示例,找到HCNetSDK.java,这个是海康硬件所有方法的一个interface接口,他具体的实现类都已经被打包好放到库文件里面了,具体不用管,我们系统只需要这一个Java即可。复制该Java到目录下,然后整体Springboot目录如下
不建议全扔进来,会有报错,我是把他们全注释了。
目前HCNetSDK.java 肯定仍然存在报错,因为还少了2个Jar包,如图下
在Springboot服务中resources目录下新建lib文件夹,放入这2个jar包
然后在pom.xml中添加如下依赖即可
<dependency>
<groupId>com</groupId>
<artifactId>jna</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/jna.jar</systemPath>
</dependency>
<dependency>
<groupId>com</groupId>
<artifactId>examples</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/examples.jar</systemPath>
</dependency>
还差最后一步,配置库文件地址,我这里给出windows系统部署下最简单的解决办法,c盘目录下新建dll文件夹,讲库文件所有文件复制进去,如图下
然后打开HCNetSDK.java,修改如下位置
HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("C:\\dll\\HCNetSDK.dll", HCNetSDK.class);
准备工作全部完成,接下来开始写service具体的业务处理。
功能具体实现
解析车牌号
这个功能其实是布防监听的功能,当有车辆被海康摄像头识别到的时候,就会调用回调方法把识别的信息传进来。
在Service层下新建HikVisionService.java
public class HikVisionService {
private static Logger logger = LoggerFactory.getLogger(HikVisionService.class);
static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;
static String m_sUsername = "admin";//设备用户名 可能不一样 自己问问现场
static String m_sPassword = "admin1234";//设备密码
static short m_sPort = 8000;//端口号,这是默认的
public NativeLong lUserID;//用户句柄
public NativeLong lAlarmHandle;//报警布防句柄
public int lListenHandle;//报警监听句柄
public NativeLong RemoteConfig;
public static int code = 5;
}
然后是布防监听方法的代码,第一个参数ip就是摄像头ip,第二个参数可以忽略,没用,也可以不写,我当初也是抄别人的忘了删。然后可以看到回调函数为
EnterCallBack
public void initEnter(String m_sDeviceIP, int remainMinuteTime) {
// 初始化
Boolean flag = hCNetSDK.NET_DVR_Init();
if (flag){
System.out.println("初始化成功");
}else{
System.out.println("初始化失败");
}
//设置连接时间与重连时间
hCNetSDK.NET_DVR_SetConnectTime(2000, 1);
hCN