在开发过程中发现海康的文档中没有对起落杆做很多说明, 也是走了一些弯路
下一篇文章我会把车牌识别一体机的语音播报和LED屏幕显示代码粘贴处理(海康对这一块没有说明,而且有一个更大的坑,详见下一篇)
起落杆调用示例:openDz("道闸ip", "通道号,一般都是1");
/**
* 起竿
* @param ip
* @param tdh
* @return
*/
public static String openDz(String ip,int tdh) {
String ret="起竿失败!";
try {
NET_DVR_BARRIERGATE_CFG cfg = new NET_DVR_BARRIERGATE_CFG();
// cfg.read();
cfg.dwChannel=tdh; //通道号
cfg.dwSize=cfg.size(); //结构体大小
cfg.byLaneNo=1; //道闸号:0-表示无效值(设备需要做有效值判断),1-道闸1
cfg.byBarrierGateCtrl=1; // 控制参数:0-关闭道闸,1-开启道闸,2-停止道闸,3-锁定道闸
cfg.byRes[0]=0; //保留,置为0
//起竿操作
Pointer name = cfg.getPointer();
//name.write(0, name.getByteArray(0, cfg.size()),0, cfg.size());
cfg.write();
boolean a=MultiThreaded.hCNetSDK.NET_DVR_RemoteControl(Config.getLogidMap(ip), 3128, name, cfg.size());
if(a) {
ret="起竿成功!";
}else {
ret="起竿失败!"+hCNetSDK.NET_DVR_GetLastError();
//我这里做了失败重新布防
//new HikVisionService().run();
}
System.out.println("起竿结果--"+a+"-- 提示内容:"+ret);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
/**
* 关闸
* @param ip
* @param tdh
* @return
*/
public static String closeDz(String ip,int tdh) {
String ret="落竿失败!";
try {
NET_DVR_BARRIERGATE_CFG cfg = new NET_DVR_BARRIERGATE_CFG();
// cfg.read();
cfg.dwChannel=tdh; //通道号
cfg.dwSize=cfg.size(); //结构体大小
cfg.byLaneNo=1; //道闸号:0-表示无效值(设备需要做有效值判断),1-道闸1
cfg.byBarrierGateCtrl=0; // 控制参数:0-关闭道闸,1-开启道闸,2-停止道闸,3-锁定道闸
cfg.byRes[0]=0; //保留,置为0
//起竿操作
Pointer name = cfg.getPointer();
// name.write(0, name.getByteArray(0, cfg.size()),0, cfg.size());
cfg.write();
boolean a=MultiThreaded.hCNetSDK.NET_DVR_RemoteControl(Config.getLogidMap(ip), 3128, name, cfg.size());
if(a) {
ret="落竿成功!";
}else {
ret="落竿失败!"+hCNetSDK.NET_DVR_GetLastError();
//失败重新布防, 可以不布防
//new HikVisionService().run();
}
System.out.println("关闸结果--"+a+"-- 提示内容:"+ret);
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}
开发文档和SDK我就不附了, 官网都有