例子使用c++写的,想用delphi来开发,怎么做啊

解决方案 »

  1.   

    有dll的,对着声明,然后参数类型匹配好,不会的话,google“delphi dll”
      

  2.   

    贴下c++调用dll的代码。
      

  3.   

    建议先看看delphi怎么调用dll方法资料。
      

  4.   

    海康威视的SDK请问是硬盘录像机的还是网络球的?最好能提供是哪个版本的SDK。按照我理解你目前应该在用设备网络SDK,那块涉及到的CALLBACK函数比较多(多出现在音视频流转发)。拿设备网络SDK_V4.1.5.3(for Windows32)做例子。
    NET_DVR_RealPlay_V30 网络设备 实时预览 函数。函数模型
    LONG NET_DVR_RealPlay_V30(
      LONG                     lUserID,
      LPNET_DVR_CLIENTINFO     lpClientInfo,
      fRealDataCallBack_V30    cbRealDataCallBack,
      void                     *pUser,
      BOOL                     bBlocked
    );
    其中lUserID 为NET_DVR_LOGIN的返回句柄,其实就是一个内部结构体指针(其中包括登录信息,设备信息,常规硬件状态)。
    lpClientInfo,预览参数结构体,指定预览哪路视频,视频解码方式以及在哪个句柄上显示诸如此类与显示有关参数配置。
    cbRealDataCallBack 码流数据回调函数,这块可能是你关心的重点。
    fRealDataCallBack_V30类型,在HCNetSDK.h网络库头文件中有定义。
    typedef void(CALLBACK *fRealDataCallBack_V30)(
      LONG      lRealHandle,
      DWORD     dwDataType,
      BYTE      *pBuffer,
      DWORD     dwBufSize,
      void      *pUser
    );
    一般这个函数被调用后,基本上我们都是通过判断处理
    procedure RealCallBack  LONG      lRealHandle,
      DWORD     dwDataType,
      BYTE      *pBuffer,
      DWORD     dwBufSize,
      void      *pUser
    )
    begin
      if lRealHandle > -1 then
      case dwDataType of 
      begin
        NET_DVR_SYSHEAD:{系统头数据}
        begin
          dwBufSize
        end;
        NET_DVR_STREAMDATA:{数据(包括复合流或音视频分开的视频流数据)}....
        begin
          if dwBufSize > 0 then{有数据}
          begin
    //读取pBuffer 缓冲区,如果你读取一直都是很少的字节最好先检查下NET_DVR_RealPlay_V30的返回值,通过NET_DVR_GetLastError获取错误码,错误码同样在HCNetSDK.h定义
          end;
        end;
        NET_DVR_AUDIOSTREAMDATA:{音频数据}....
      end;end;
    希望以上辛辛苦苦写的对你有所帮助。
      

  5.   

    直接到海康官网下个SDK指南,里面有delphi demo。
      

  6.   

    没看到官网里有delphi的demo啊,还望发个链接看看
      

  7.   

    你说的是NET_DVR_SetDVRMessageCallBack_V30获取设备状态?
      

  8.   


    type
        fMessCallBack=function (lCommand: Longint;sDVRIP: PChar;pBuf: PChar;dwBufLen: DWORD): BOOL; stdcall;
        fMSGCallBack=function (lCommand: Longint;pAlarmer: PNET_DVR_ALARMER;pAlarmInfo: PChar;dwBufLen: DWORD; pUser: Pointer): BOOL; stdcall;  function NET_DVR_CaptureJPEGPicture(LoginID: longint; lChannel: longint; lpJpegPara: PNET_DVR_JPEGPARA; sPicFileName: PChar):Boolean; stdcall;external 'HCNetSDK.dll';
      {功能:JPEG截图}
      function NET_DVR_Init: Integer; stdcall; external 'HCNetSDK.dll';
      {初始化}  procedure NET_DVR_Cleanup; stdcall;external 'HCNetSDK.dll';
      {释放DLL}  function NET_DVR_Login(IPAddr: PChar;wDVRPort: WORD;UserName: PChar;PassWord: PChar; lpDeviceInfo: PNET_DVR_DEVICEINFO): longint; stdcall;external 'HCNetSDK.dll';
      {功能:注册用户到硬盘录像机}  function NET_DVR_Logout(LoginID: longint): Integer; stdcall;external 'HCNetSDK.dll';
       {功能:注册用户退出硬盘录像机}  function NET_DVR_GetDVRConfig(lUserID:LongInt;dwCommand:DWORD;lChannel:LongInt;lpOutBuffer: Pointer;dwOutBufferSize:DWORD;lpBytesReturned: LPDWORD):BOOL; stdcall;  external 'HCNetSDK.dll';
      {功能:获取硬盘录像机的参数}  function NET_DVR_SetDVRConfig(lUserID: LongInt;dwCommand:DWORD;lChannel:LongInt;lpInBuffer: Pointer;dwInBufferSize:DWORD):BOOL; stdcall;  external 'HCNetSDK.dll';
      {功能:设置硬盘录像机的参数}  function NET_DVR_GetLastError: DWORD; stdcall; external  'HCNetSDK.dll';
      {功能:获取最后错误}  function NET_DVR_RestoreConfig(lUserID: LongInt): BOOL; stdcall; external  'HCNetSDK.dll';
      {功能:恢复默认值}  function NET_DVR_SaveConfig(lUserID: LongInt): BOOL; stdcall; external  'HCNetSDK.dll';
      {功能:保存参数}  function NET_DVR_RebootDVR(lUserID: LongInt): BOOL; stdcall; external  'HCNetSDK.dll';
      {功能:重启}  function NET_DVR_ShutDownDVR(lUserID: LongInt): BOOL; stdcall; external  'HCNetSDK.dll';
      {功能:关闭DVR}  //远程格式化硬盘
      function NET_DVR_FormatDisk(lUserID: LongInt;lDiskNumber:LongInt):LongInt; stdcall; external  'HCNetSDK.dll';
      function NET_DVR_GetFormatProgress(lFormatHandle: LongInt;pCurrentFormatDisk: Pointer;pCurrentDiskPos: Pointer;pFormatStatic: Pointer):Boolean; stdcall; external  'HCNetSDK.dll';
      function NET_DVR_CloseFormatHandle(lFormatHandle: LongInt):BOOL; stdcall; external  'HCNetSDK.dll';  function HCGetLastString: PChar;  //报警
      function NET_DVR_SetupAlarmChan(lUserID: Longint): Longint;  stdcall; external  'HCNetSDK.dll';
      function NET_DVR_CloseAlarmChan(lAlarmHandle: Longint): BOOL; stdcall; external  'HCNetSDK.dll';
      function NET_DVR_GetAlarmOut(lUserID: Longint; lpAlarmOutState: LPNET_DVR_ALARMOUTSTATUS): BOOL; stdcall; external  'HCNetSDK.dll';
      function NET_DVR_SetAlarmOut(lUserID: Longint; lAlarmOutPort: Longint;lAlarmOutStatic: Longint): BOOL; stdcall; external  'HCNetSDK.dll';  function NET_DVR_SetDVRMessCallBack(MessCallBack: fMessCallBack): BOOL;stdcall; external  'HCNetSDK.dll';  //查找文件
      function NET_DVR_FindFile(lUserID: Longint;lChannel: Longint;dwFileType: DWORD; lpStartTime: PNET_DVR_TIME; lpStopTime: PNET_DVR_TIME): Longint; stdcall; external  'HCNetSDK.dll';
      function NET_DVR_FindNextFile(lFindHandle: Longint;lpFindData: PNET_DVR_FIND_DATA): Longint; stdcall; external  'HCNetSDK.dll';
      function NET_DVR_FindClose(lFindHandle: Longint): BOOL;stdcall; external  'HCNetSDK.dll';  //服务器状态
      function NET_DVR_GetDVRWorkState(lUserID: Longint; lpWorkState: PNET_DVR_WORKSTATE): BOOL; stdcall; external  'HCNetSDK.dll';
      //报警监听和取消报警监听
      function NET_DVR_StartListen_V30(sLocalIP: PChar; wLocalPort: WORD;DataCallback: fMSGCallBack;pUserData: Pointer): Longint; stdcall; external  'HCNetSDK.dll';
      //停止监听(支持多线程)。
      function NET_DVR_StopListen_V30(lListenHandle: Longint): BOOL; stdcall; external  'HCNetSDK.dll';
    implementation
      

  9.   

    http://blog.csdn.net/ccnccyj/article/details/9131413