海康SDK数据类型转java

例如NET_DVR_FTPCFG

struct{
  DWORD      dwSize;
  DWORD      dwEnableFTP;
  char       sFTPIP[16];
  DWORD      dwFTPPort;
  BYTE       sUserName[NAME_LEN];
  BYTE       sPassword[PASSWD_LEN];
  DWORD      dwDirLevel;
  WORD       wTopDirMode;
  WORD       wSubDirMode;
  BYTE       byEnableAnony;
  BYTE       byPicArchivingInterval;
  BYTE       byRes[22];
}

例如NET_DVR_SCHED_CAPTURECFG

struct{  
  NET_DVR_CAPTURE_DAY         struCaptureHoliday;
  NET_DVR_CAPTURE_DAY         struCaptureDay[MAX_DAYS];
  NET_DVR_CAPTURE_SCHED       struCaptureSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
}

C++和Java类型对应:

DWORD-----int

WORD-----short

char-----byte

BYTE-----byte

指针-----Pointer

LONG--------com.sun.jna.NativeLong

LPVOID--------com.sun.jna.Pointer

LPDWORD--------com.sun.jna.ptr.IntByReference

union联合体-----自定义类继承Union

union 联合体示例

    // 联合体的结构体
 	public static class UnionServer extends Union {
		public struDomain strudomain = new struDomain();
		public struAddrIP struaddrIP = new struAddrIP();
	}
 	public static class NET_DVR_FTPCFG_V40 extends Structure {
		public UnionServer unionserver = new UnionServer();
	}
 
// 获取联合体中的值
userCfg.unionserver.setType(HCNetSDK.StruAddrIP.class);
userCfg.unionserver.read();
System.out.println("FTP-ip地址:" + new String(userCfg.unionserver.struaddrIP.struIp.sIpV4).trim());

// 设置联合体中的值
userCfg.unionserver.setType(HCNetSDK.StruAddrIP.class);
String sFTPIP = "10.10.15.27";  
userCfg.unionserver.struaddrIP.struIp.sIpV4 = new byte[16];
System.arraycopy(sFTPIP.getBytes(), 0, userCfg.unionserver.struaddrIP.struIp.sIpV4, 0, sFTPIP.length());
  

注意:

1、转java的顺序严格按照SDK使用手册,千万不要自行调整顺序。

2、数组长度严格按照SDK使用手册,千万不要自行调整长度。

3、二维数组要特殊处理转换成一维数组嵌套一维数组。

4、对象和数组要初始化。

转成java类型后

	public static class NET_DVR_FTPCFG extends Structure { //FTP上传参数结构体。
         public int dwSize;
         public int dwEnableFTP;
	     public byte[] sFTPIP = new byte[16]; /* FTP IP */
	     public int  dwFTPPort;
	     public byte[] sUsername = new byte[NAME_LEN]; /* 用户名 */
	     public byte[] sPassword = new byte[PASSWD_LEN]; /* 密码 */
	     public int dwDirLevel;
	     public short wTopDirMode;
	     public short wSubDirMode;
	     public byte byEnableAnony;
	     public byte byPicArchivingInterval;
	     public byte[] byRes3 = new byte[22];
	}
	public static class NET_DVR_SCHED_CAPTURECFG extends Structure {
        public NET_DVR_CAPTURE_DAY struCaptureHoliday = new NET_DVR_CAPTURE_DAY();
        public NET_DVR_CAPTURE_DAY[] struCaptureDay = new NET_DVR_CAPTURE_DAY[MAX_DAYS];
        public tempStructure[] tempStructure = new tempStructure[MAX_DAYS]; // 二维数组特殊处理
	}
    public static class tempStructure extends Structure{
        public NET_DVR_CAPTURE_SCHED[] struCaptureSched = new NET_DVR_CAPTURE_SCHED[MAX_TIMESEGMENT_V30];
    } 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值