海康人脸认证设备对接
1.配置服务 sdk服务启动监听
2.设备注册,返回存储服务地址/端口与报警服务地址/端口
3.设备上报数据处理
4.下发数据 调度/人脸/卡号
5.解决设备断点上报出现延迟的情况
更新时间: 2021-12-14
1.上传示例项目,下载运行即可使用
更新时间:2022-03-30
因为是空闲时间写的,可能更新比较慢 然后就是如果情况紧急 请给我发信息吧
地址类型: IP/IPV6
协议类型: EHOME
设备与sdk交互流程
1.设备在保证网络正常的情况下,开机后会发起请求至注册服务
2.注册服务收到请求后,返回存储服务地址与端口和报警服务地址和端口,等(心跳时间,报警类型 tcp/udp,...) 至设备
3.在后续的对设备发起操作接口调用,需要从注册服务中进行调用
配置服务
- 注册服务 cms
if(!cms.NET_ECMS_Init()){
// 初始化失败
}else{
// window下 为 libeay32.dll luinx下为 libcrypto.so
String libCryptoPath = ;
HCISUPCMS.BYTE_ARRAY cmsArrayCrypto = new HCISUPCMS.BYTE_ARRAY(256);
System.arraycopy(libCryptoPath.getBytes(), 0, cmsArrayCrypto.byValue, 0, libCryptoPath.length());
cmsArrayCrypto.write();
if(!cms.NET_ECMS_SetSDKInitCfg(0, cmsArrayCrypto.getPointer())){
// 设置libCryptoPath失败
}
// window下 为 ssleay32.dll luinx下为 libssl.so
String libSslPath = ;
HCISUPCMS.BYTE_ARRAY cmsByteArraySsl = new HCISUPCMS.BYTE_ARRAY(256);
System.arraycopy(libSslPath.getBytes(), 0, cmsByteArraySsl.byValue, 0, libSslPath.length());
cmsByteArraySsl.write();
if(!cms.NET_ECMS_SetSDKInitCfg(1, cmsByteArraySsl.getPointer())){
// 设置libSslPath失败
}
if(!cms.NET_ECMS_SetLogToFile(3, cmsSdkLogPath, false)){
// 设置cms日志路径失败
}
HCISUPCMS.NET_EHOME_CMS_LISTEN_PARAM cmsParam = new HCISUPCMS.NET_EHOME_CMS_LISTEN_PARAM();
// 监听IP地址
cmsParam.struAddress.szIP = ;
// 监听端口
cmsParam.struAddress.wPort = ;
// 设备请求后触发调用对象 需实现sdk接口
cmsParam.fnCB = ;
if(hcisupcms.NET_ECMS_StartListen(cmsParam).longValue() < 0){
// 启动注册监听服务器失败
}else{
// 启动注册监听服务器成功
}
}
- 存储服务
if (!ss.NET_ESS_Init()){
// 存储SDK初始化失败
}else {
// winsow下 为 libeay32.dll luinx下为 libcrypto.so
String libCryptoPath = ;
HCISUPCMS.BYTE_ARRAY ptrByteArrayCrypto = new HCISUPCMS.BYTE_ARRAY(256);
System.arraycopy(libCryptoPath.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, libCryptoPath.length());
ptrByteArrayCrypto.write();
if(!ss.NET_ESS_SetSDKInitCfg(0, ptrByteArrayCrypto.getPointer())){
// 设置libCryptoPath失败
}
// winsow下 为 ssleay32.dll luinx下为 libssl.so
String libSslPath = ;
HCISUPCMS.BYTE_ARRAY ptrByteArraySsl = new HCISUPCMS.BYTE_ARRAY(256);
System.arraycopy(libSslPath.getBytes(), 0, ptrByteArraySsl.byValue, 0, libSslPath.length());
ptrByteArraySsl.write();
if(!ss.NET_ESS_SetSDKInitCfg(1, ptrByteArraySsl.getPointer())){
// 设置libSslPath失败
}
if(!ss.NET_ESS_SetLogToFile(3, ssSdkLogPath, false)){
// 设置ss日志路径失败
}
HCISUPSS.NET_EHOME_SS_LISTEN_PARAM pSSListenParam = new HCISUPSS.NET_EHOME_SS_LISTEN_PARAM();
// 监听IP地址
pSSListenParam.struAddress.szIP = ;
// 监听端口
pSSListenParam.struAddress.wPort = ;
// ssUserName
pSSListenParam.szKMS_UserName = ;
// ssPassword
pSSListenParam.szKMS_Password = ;
// 是否启用HTTPs
pSSListenParam.byHttps = 0;
// 设备请求后触发调用对象 需实现sdk接口
pSSListenParam.fnSStorageCb = ;
pSSListenParam.bySecurityMode = 1;
pSSListenParam.write();
if(ss.NET_ESS_StartListen(pSSListenParam).longValue() < 0){
// 启动ss监听服务器失败
}
}
- 报警服务
if(!alarm.NET_EALARM_Init()){
// 报警SDK初始化失败
}else {
// window下 为 libeay32.dll luinx下为 libcrypto.so
String libCryptoPath = ;
HCISUPCMS.BYTE_ARRAY ptrByteArrayCrypto = new HCISUPCMS.BYTE_ARRAY(256);
System.arraycopy(libCryptoPath.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, libCryptoPath.length());
ptrByteArrayCrypto.write();
if(!alarm.NET_EALARM_SetSDKInitCfg(0, ptrByteArrayCrypto.getPointer())){
// 设置libCryptoPath失败
}
// window下 为 ssleay32.dll luinx下为 libssl.so
String libSslPath =
HCISUPCMS.BYTE_ARRAY ptrByteArraySsl = new HCISUPCMS.BYTE_ARRAY(256);
System.arraycopy(libSslPath.getBytes(), 0, ptrByteArraySsl.byValue, 0, libSslPath.length());
ptrByteArraySsl.write();
if(!alarm.NET_EALARM_SetSDKInitCfg(1, ptrByteArraySsl.getPointer())){
// 设置libSslPath失败
}
// com SDK路径
String sdkComPath = ;
HCISUPCMS.BYTE_ARRAY ptrByteArrayCom = new HCISUPCMS.BYTE_ARRAY(256);
System.arraycopy(sdkComPath.getBytes(), 0, ptrByteArrayCom.byValue, 0, sdkComPath.length());
ptrByteArrayCom.write();
if(!alarm.NET_EALARM_SetSDKLocalCfg(5, ptrByteArrayCom.getPointer())){
// 设置sdkComPath失败
}
if(!alarm.NET_EALARM_SetLogToFile(3, amsSdkLogPath, false)){
// 设置ams日志路径失败
}
HCISUPAlarm.NET_EHOME_ALARM_LISTEN_PARAM amsParam = new HCISUPAlarm.NET_EHOME_ALARM_LISTEN_PARAM();
// 监听IP地址
amsParam.struAddress.szIP = ;
// 监听端口
amsParam.struAddress.wPort = ;
// 协议类型,0-TCP,1-UDP,2-MQTT
amsParam.byProtocolType = ;
// 设备请求后触发调用对象 需实现sdk接口
amsParam.fnMsgCb = ;
// 是否复用CMS端口:0 - 不复用,非0 - 复用
amsParam.byUseCmsPort = ;
if(alarm.NET_EALARM_StartListen(amsParam).intValue() < 0){
// 启动报警监听服务器失败
}
}