zoukankan      html  css  js  c++  java
  • 海康:java sdk 自定义方法与结构体

    海康虽然提供了 Java demo,但是只提供了少量接口,大量的接口方法及结构体定义需要自己去完成,

    今天以获得设备能力集为例,说说如何做!

    1.定义结构体

    海康 C++:

    NET_DVR_MATRIX_ABILITY_V41
    解码器能力集结构体。
    
    struct{
      DWORD                     dwSize;
      BYTE                      byDspNums;
      BYTE                      byDecChanNums;
      BYTE                      byStartChan;
      BYTE                      byRes1[5];
      NET_DVR_DISPINFO          struVgaInfo;
      NET_DVR_DISPINFO          struBncInfo;
      NET_DVR_DISPINFO          struHdmiInfo;
      NET_DVR_DISPINFO          struDviInfo;
      NET_DVR_DISPWINDOWMODE    struDispMode[MAX_DISPNUM_V41];
      NET_DVR_SCREENINFO        struBigScreenInfo;
      BYTE                      bySupportAutoReboot;
      BYTE                      byRes2[119];
    }

    根据上面的,改为java版本:

    /**
       * 解码器能力集结构体。
       *
       */
      public static class NET_DVR_MATRIX_ABILITY_V41 extends Structure {
        public int dwSize;
        public byte byDspNums;
        public byte byDecChanNums;
        public byte byStartChan;
        public byte[] byRes1 = new byte[5];
        public NET_DVR_DISPINFO struVgaInfo;
        public NET_DVR_DISPINFO struBncInfo;
        public NET_DVR_DISPINFO struHdmiInfo;
        public NET_DVR_DISPINFO struDviInfo;
        public NET_DVR_DISPWINDOWMODE[] struDispMode = new NET_DVR_DISPWINDOWMODE[MAX_DISPNUM_V41];
        public NET_DVR_SCREENINFO struBigScreenInfo;
        public byte bySupportAutoReboot;
        public byte[] byRes2 = new byte[119];
      }

    C++ 数据类型 与 JAVA的对应关系:

    https://www.cnblogs.com/huiy/p/9844007.html

    1.定义接口方法

    海康 C++:

    NET_DVR_GetDeviceAbility
    获取设备能力集。
    
    BOOL NET_DVR_GetDeviceAbility(
      LONG     lUserID,
      DWORD    dwAbilityType,
      char     *pInBuf,
      DWORD    dwInLength,
      char     *pOutBuf,
      DWORD    dwOutLength
    );

    java:

    /**
       * 获得设备能力集
       * 
       * @param lUserID
       * @param dwAbilityType
       * @param pInBuf
       * @param dwInLength
       * @param pOutBuf
       * @param dwOutLength
       * @return
       */
      boolean NET_DVR_GetDeviceAbility(NativeLong lUserID, int dwAbilityType, Pointer pInBuf, int dwInLength,
          Pointer pOutBuf, int dwOutLength);


    注意:指针类型的一律定义成Pointer。

    主要调用代码:

    System.out.println("登录成功");
        NET_DVR_MATRIX_ABILITY_V41 struDecoderCapability = new NET_DVR_MATRIX_ABILITY_V41();
        struDecoderCapability.dwSize=struDecoderCapability.size();
        struDecoderCapability.write();
        boolean booResult = hCNetSDK.NET_DVR_GetDeviceAbility(lUserID, MERGEDEV_ABILITY, null, 0,
            struDecoderCapability.getPointer(), struDecoderCapability.size());

    struDecoderCapability.write() 这句话必不可少,用于申请内存;

  • 相关阅读:
    Java并发(十八):阻塞队列BlockingQueue
    web前端
    python学习总结:目录
    Django -- 5.路由层(URLconf)_基于Django1
    python:linux下字符串转换为JSON
    python:一秒中启动一个下载服务器
    Flask【第十二章】:Flask之Websocket,建立单聊群聊
    Flask【第十一章】:Flask中的CBV以及偏函数+线程安全
    Flask【第十章】:特殊装饰器 @app.before_request 和 @app.after_request 以及@app.errorhandler
    Flask【第九章】:Flask之蓝图
  • 原文地址:https://www.cnblogs.com/huiy/p/13647676.html
Copyright © 2011-2022 走看看