海康SDK设备信息NET_DVR_GET_DEVICECFG解析

 通过SDK获取结果如下,部分字段省略

HCNetSDK$NET_DVR_DEVICECFG(allocated@0x20531880 (132 bytes)) {
  byte sDVRName[32]@4=[B@17d10166
  byte sSerialNumber[48]@2c=[B@1b9e1916
  int dwSoftwareVersion@5c=84279301
  int dwSoftwareBuildDate@60=1313815
  int dwDSPSoftwareVersion@64=458755
  int dwDSPSoftwareBuildDate@68=132319498
}
// 设备名称sDVRName和设备序列号sSerialNumber解析还算容易
System.out.println(new String(userCfg.sDVRName, "GBK").trim());
System.out.println(new String(userCfg.sSerialNumber).trim());

打开在线进制转换工具

1、主控版本由dwSoftwareVersion软件版本号和dwSoftwareBuildDate软件生成日期组成,解析步骤如下:

软件版本号84279301 从10进制转成16进制字符串“5060005”,然后把中间连续0替换成.就是版本“5.6.5”。

软件生成日期1313815 从10进制转成16进制字符串“140c17”,0x14代表20年,0x0c代表12月,0x17代表23日。

2、编码版本由DSP软件版本dwDSPSoftwareVersion和DSP软件生成日期dwDSPSoftwareBuildDate组合解析:

DSP软件版本解析通软件版本号解析过程,458755 从10进制转成16进制字符串“70003”,然后把中间连续0替换成.就是版本“7.3”。

DSP软件生成日期132319498 从10进制转成16进制字符串“7e3090a”,0x07e3就是2019年,0x09 转换成10进制的9月,0x0a 转换成10进制的10日。

官方提供的解析代码

	// 主控版本解析
	public static String sSoftWareVersionFormat(Integer dwSoftwareVersion,Integer dwSoftwareBuildDate) {
		String sSoftWareVersion;//软件版本
        if (((dwSoftwareVersion >> 24) & 0xFF) > 0) {
            sSoftWareVersion = String.format("V%d.%d.%d build %02d%02d%02d", (dwSoftwareVersion >> 24) & 0xFF, (dwSoftwareVersion >> 16) & 0xFF, dwSoftwareVersion & 0xFFFF, (dwSoftwareBuildDate >> 16) & 0xFFFF, (dwSoftwareBuildDate >> 8) & 0xFF, dwSoftwareBuildDate & 0xFF);
        } else {
            sSoftWareVersion = String.format("V%d.%d build %02d%02d%02d", (dwSoftwareVersion >> 16) & 0xFFFF, dwSoftwareVersion & 0xFFFF, (dwSoftwareBuildDate >> 16) & 0xFFFF, (dwSoftwareBuildDate >> 8) & 0xFF, dwSoftwareBuildDate & 0xFF);
        }
        return sSoftWareVersion;
	}
	// 编码版本解析
	public static String sDSPSoftVersionFormat(Integer dwDSPSoftwareVersion,Integer dwDSPSoftwareBuildDate) {
		String sDSPSoftVersion;//DSP软件版本
        sDSPSoftVersion = String.format("V%d.%d build %02d%02d%02d", (dwDSPSoftwareVersion >> 16) & 0xFFFF, dwDSPSoftwareVersion & 0xFFFF, ((dwDSPSoftwareBuildDate >> 16) & 0xFFFF)-2000, (dwDSPSoftwareBuildDate >> 8) & 0xFF, dwDSPSoftwareBuildDate & 0xFF);
        return sDSPSoftVersion;
	}
	
	// 版本单独解析
	public static String parseVersion(int version) {
		String sSoftWareVersion;
		if (((version >> 24) & 0xFF) > 0){
			sSoftWareVersion = String.format("V%d.%d.%d", (version >> 24) & 0xFF, (version >> 16) & 0xFF, version & 0xFFFF);
        } else {
        	sSoftWareVersion = String.format("V%d.%d", (version >> 16) & 0xFFFF, version & 0xFFFF);
        }
		return sSoftWareVersion;
	}
	// 日期单独解析
	public static String parseBuildDate(int a){
        int year = (a >> 16);
        year = (year>2000)?(year-2000):year;
        int month = (a & 0xffff) >> 8 & 0xFF;
        int day = a & 0xff;
        return String.format("build %02d%02d%02d", year, month, day);
    }


	public static void main(String[] args) {
		// 官方一
		System.out.println(parseVersion(84279301)+" "+parseBuildDate(1313815)); // V5.6.5 build 201223
		System.out.println(parseVersion(458755)+" "+parseBuildDate(132319498)); // V7.3 build 190910
		// 官方二
		System.out.println(sSoftWareVersionFormat(84279301,1313815)); // V5.6.5 build 201223
		System.out.println(sDSPSoftVersionFormat(458755,132319498)); // V7.3 build 190910
	}

主控版本属性:NET_DVR_GET_FIRMWARE_VERSION

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值