海康车牌识别一体机控制道闸起落杆(java版)

本文档缺失导致开发者在实现车牌识别一体机的语音播报和LED屏幕显示功能时遇到困难。示例代码展示了如何使用海康的API进行起落杆控制,包括起竿和落竿操作。在调用过程中,需要注意通道号和道闸号的设置,并通过NET_DVR_BARRIERGATE_CFG结构体进行配置。当控制失败时,提供了错误处理和重新布防的逻辑。
摘要由CSDN通过智能技术生成

 在开发过程中发现海康的文档中没有对起落杆做很多说明, 也是走了一些弯路

下一篇文章我会把车牌识别一体机的语音播报和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我就不附了, 官网都有

要使用Java进行海康车牌识别,可以使用海康提供的SDK进行开发。下面是一个简单的示例代码: ```java import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.Structure; import com.sun.jna.win32.StdCallLibrary; public class HikvisionLicensePlateRecognition { public interface HCNetSDK extends StdCallLibrary { HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary((Platform.isWindows() ? "HCNetSDK" : "c"), HCNetSDK.class); public static class NET_DVR_DEVICEINFO_V30 extends Structure { public byte[] sSerialNumber = new byte[48]; // ... } boolean NET_DVR_Init(); boolean NET_DVR_SetLogToFile(boolean bLogEnable, String strLogDir, boolean bAutoDel); int NET_DVR_Login_V30(String sDVRIP, int wDVRPort, String sUserName, String sPassword, NET_DVR_DEVICEINFO_V30 lpDeviceInfo); boolean NET_DVR_Logout(int lUserID); // ... } public static void main(String[] args) { HCNetSDK.INSTANCE.NET_DVR_Init(); // 设置日志文件存储目录 HCNetSDK.INSTANCE.NET_DVR_SetLogToFile(true, "log", false); // 登录设备 HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); int lUserID = HCNetSDK.INSTANCE.NET_DVR_Login_V30("192.168.1.64", (short) 8000, "admin", "password", deviceInfo); if (lUserID < 0) { System.out.println("Login failed: " + HCNetSDK.INSTANCE.NET_DVR_GetLastError()); return; } // 识别车牌 // ... // 注销登录 HCNetSDK.INSTANCE.NET_DVR_Logout(lUserID); } } ``` 请注意,上述代码只是一个简单的示例,具体的车牌识别过程需要根据海康SDK的文档进行调用。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值