springboot(java)对接海康ISUP SDK------基础小白版

06-01 1729阅读

前言

先整理一下对接sdk的思路,根据海康的开发指南分析

springboot(java)对接海康ISUP SDK------基础小白版

大概流程:

1.在设备后台配置服务器的地址,设备id等

2.开启一个注册服务器

3.设备会向注册服务器发送登录请求,回调函数中回传密钥,如果密钥校验成功回调登录成功类型,得到登录句柄供透传使用,在登录成功后也回传相应的报警服务地址等。

1.注册服务器

1.1 第一步就是直接将海康demo中的CmsService包直接复制到自己的项目中(我将CmsDemo改了个名字),打开改一下包名,更改一些类的引用,缺什么去Demo中拿过来,直到不报错,一般很简单的。

1.2 由于该服务器需要的是单例模式,springboot又刚好帮我们做了这件事,直接将该服务器注册为Bean即可也就是直接在类上加上@Service的注解第一步就完事了。

@Service
public class CmsService {
	。。。。。。。。。
}

1.3 海康给的示例是在测试的时候去new一个对象,然后依次调用初始化和开启监听,在springboot中我们不需要这么做,因为我们已经将这个类注册为Bean了,在springboot应用启动的时候会自动去new一个实例,而且全局唯一,所以我们直接来一个无参构造方法,在new的时候直接初始化以及开启监听,就实现了一个应用程序一个注册服务器。

   
@Service
public class CmsService {
	//........其他代码.............
    
        //无参构造方法
        public CmsService() {
        try {
            InetAddress localHost = InetAddress.getLocalHost();
            cmsServerIP = localHost.getHostAddress();
            cmsServerPort="7667";
            log.info("本机ip===》{}", cmsServerIP);
            propertiesUtil = new PropertiesUtil(configPath);
            //直接初始化加启动
            cMS_Init();
            startCmsListen();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //........其他代码..........
    
}

1.4 下一步就是处理回调函数,主要就是根据自己的业务处理回调函数的逻辑(如可以自己建个编存设备,做一个设备管理),主要就是设备登录成功保存句柄,后续透传需要用到该句柄,其次就是如果需要接收报警事件,回调类型为4时,将得到的SessionKey传给报警服务管理(如下图)。

springboot(java)对接海康ISUP SDK------基础小白版

1.5 重要,重要,重要,重要的事情说三遍,关闭程序时也要关闭开启的响应服务,否则重启几次后就无法接收到报警事件。

在springboot应用程序启动类增加一个监听应用事件的Bean,在应用关闭时也关闭相应服务

@SpringBootApplication()
public class DromaraApplication {
    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(DromaraApplication.class);
        application.setApplicationStartup(new BufferingApplicationStartup(2048));
        application.run(args);
        System.out.println("(♥◠‿◠)ノ゙  model启动成功   ლ(´ڡ`ლ)゙");
    }
    @Component
    public class SpringEventCheck implements ApplicationListener {
        @Override
        public void onApplicationEvent(ApplicationEvent event) {
            if(event instanceof ContextClosedEvent){
                //停止程序时关闭所有服务
                AlarmDemo alarmDemo = SpringUtils.getBean(AlarmDemo.class);
                if (alarmDemo.AlarmHandle >= 0) {
                    System.out.println("停止报警Alarm服务");
                    alarmDemo.hcEHomeAlarm.NET_EALARM_StopListen(alarmDemo.AlarmHandle);
                    alarmDemo.hcEHomeAlarm.NET_EALARM_Fini();
                }
                CmsService cmsService = SpringUtils.getBean(CmsService.class);
                if (cmsService.CmsHandle >= 0) {
                    System.out.println("停止注册CMS服务");
                    cmsService.hCEhomeCMS.NET_ECMS_StopListen(cmsService.CmsHandle);
                    cmsService.hCEhomeCMS.NET_ECMS_Fini();
                }
//                SsService ssService = SpringUtils.getBean(SsService.class);
//                if (ssService.SsHandle >= 0) {
//                    System.out.println("停止存储SS服务");
//                    ssService.hCEhomeSS.NET_ESS_StopListen(ssService.SsHandle);
//                    ssService.hCEhomeSS.NET_ESS_Fini();
//                }
                 //停止服务时清除redis中保存的lUserID
                RedisUtils.deleteObject(ConfigConstant.lUserID_Prefix);
                
            }
        }
    }
}

报警服务器,存储服务器的做法和注册服务器类似

相关文档链接

海康ISUP SDK开发指南

海康ISUP SDK资源下载(含demo示例)

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码