天天看點

C#封裝海康視訊卡用戶端SDK

 摘自 http://blog.csdn.net/nenith1981/archive/2007/09/17/1787692.aspx , nenith1981的專欄 ,謝謝啦。。。

using System;

using System.Runtime.InteropServices;

using System.Drawing;

namespace PCDvrMonitor

{

 public  enum SEND_MODE{UDPMODE=0,TCPMODE,MULTIMODE,DIALING,AUDIODETACH};

 public  enum DISP_MODE {NORMALMODE=0,OVERLAYMODE};

 public  enum AUDIO_MODE{SINGLEAUDIO=1,MULTIAUDIO};

 public enum VideoRGBYUVFormat:uint

 {

  vfGeneric                = 0xffffffff,

  vfNone                   = 0x80000000,

  vfRGB8A_233              = 0x00000001,

  vfRGB8R_332              = 0x00000002,

  vfRGB15Alpha             = 0x00000004,

  vfRGB16                  = 0x00000008,

  vfRGB24                  = 0x00000010,

  vfRGB24Alpha             = 0x00000020,

  vfYUV420Planar           = 0x00000040,

  vfYUV422Planar           = 0x00000080,

  vfYUV411Planar           = 0x00000100,

  vfYUV420Interspersed     = 0x00000200,

  vfYUV422Interspersed     = 0x00000400,

  vfYUV411Interspersed     = 0x00000800,

  vfYUV422Sequence         = 0x00001000,  

  vfYUV422SequenceAlpha    = 0x00002000,  

  vfMono                   = 0x00004000, 

  vfYUV444Planar           = 0x00008000,

  vfDTVCMPlanar            = 0x00010000,

  vfDTVCMSequence          = 0x00020000,

  vfYInterleavedUV420      = 0x00040000, 

  vfYUV422PlanarAlpha4     = 0x00080000

 }                   

 public struct DISPLAY_PARA

 {

  public int bToScreen;

  public int bToVideoOut;

  public int nLeft;

  public int nTop;

  public int nWidth;

  public int nHeight;

  public VideoRGBYUVFormat format;

 }

 public struct CLIENT_VIDEOINFO

 {

  public  byte   m_bRemoteChannel;

  public  byte   m_bSendMode;

  public  byte  m_nImgFormat;  // =0 main channel ; = 1 sub channel

  public string m_sIPAddress;

  public string m_sUserName;

  public string m_sUserPassword;

  public bool    m_bUserCheck;

  public System.IntPtr   m_hShowVideo;

 }

 public struct CLIENT_CARDINFO

 {

  public byte    m_bRemoteChannel;

  public byte    m_bSendMode;

  public byte    m_bRight;

  public string    m_sIPAddress;

  public string    m_sUserName;

  public string    m_sUserPassword;

  public bool    m_bUserCheck;

  public DISPLAY_PARA displaypara;

 }

 /// <summary>

 /// 讀實時資料回調

 /// </summary>

 public delegate void ReadDataCallBack(UInt32 nPort,[MarshalAs(UnmanagedType.LPArray)] byte[] pPacketBuffer,UInt32 nPacketSize);

 /// <summary>

 /// 捕圖回調

 /// </summary>

 public delegate void CapPicFun(int StockHandle, [MarshalAs(UnmanagedType.LPArray,SizeConst=152064)] byte[] pBuf,int nSize,int nWidth,int nHeight,int nStamp,int nType,int nReceaved);

    /// <summary>

    /// 畫

    /// </summary>

 public delegate void DrawFun(int StockHandle,System.Drawing.Graphics  hDc,int nUser);

 /// <summary>

 /// 加密

 /// </summary>

 public delegate void DecryptFun (int nFrameType,[MarshalAs(UnmanagedType.LPArray)] byte[] pEncryptData,int nEncryptDataSize,[MarshalAs(UnmanagedType.LPArray)] byte[,]  ppDecryptData, out int  pDecryptDataSize,int nReserved);

 /// <summary>

 /// PcHikClient 的摘要說明。

 /// </summary>

 public class PcHikClient

 {

  public PcHikClient()

  {

  }

  public static readonly uint WM_USER                        = 0x0400;

     public static readonly int  RECDATAERR= 0 ;

  public static readonly int  PLAYERR= 1;

  public static readonly int REFUSED =2;

  public static readonly int VERSIONERR =3;

  public static readonly int PLAYERBUSY =4;

  public static readonly int GETSTRING =10;

  public static readonly int SUPPORT_DDRAW = 1 ;

  public static readonly int SUPPORT_BLT      =   2 ;

  public static readonly int SUPPORT_BLTFOURCC=   4 ;

  public static readonly int SUPPORT_BLTSHRINKX=  8 ;

  public static readonly int SUPPORT_BLTSHRINKY=  16;

  public static readonly int SUPPORT_BLTSTRETCHX= 32;

  public static readonly int SUPPORT_BLTSTRETCHY= 64;

  public static readonly int SUPPORT_CPU        = 128;

  public static readonly int T_UYVY  =1;

  public static readonly int T_YV12  =3;

  public static readonly int T_RGB32  =7;

  [DllImport("hikclient.dll")]

  public static extern int  MP4_ClientStart(ref CLIENT_VIDEOINFO pClientinfo,ReadDataCallBack x);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientStop(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern int  MP4_ClientGetState(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientStopCapture(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientStartCapture(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientStartCaptureFile(int StockHandle, string FileName);

  [DllImport("hikclient.dll")]

  public static extern UInt16 MP4_ClientGetServerChanNum(string m_sIPAddress);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientCommandtoServer(string m_lAddrIP, string m_sCommand,System.UInt16  m_wLen);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientCommandtoServer_Handle(int StockHandle,out string m_sCommand,System.UInt16 m_wLen);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientStartup(uint nMessage,System.IntPtr  hWnd);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientCleanup();

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientShut(string m_lAddrIP,char cChannel);

  [DllImport("hikclient.dll")]

  public static extern void MP4_ClientReadLastMessage( string m_sIP,out string m_sCommand, out System.UInt16 m_wLen);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientAudioVolume(System.UInt16  wVolume);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientAudioStart(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientAudioStop();

  [DllImport("hikclient.dll")]

  public static extern int  MP4_ClientIsSupport();

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientSetBufferNum(int StockHandle,System.Int16  wBufNum);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientSetNetPort(System.UInt16  dServerPort,UInt16 dClientPort);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientSetTTL( char cTTLVal);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientSetPlayDelay(int StockHandle,UInt16 DelayLen);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSetWait(UInt32 dEachWaitTime,UInt32 dTrynum);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSetShowMode(UInt32 dShowType,System.Drawing.Color  colorKey);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSetQuality(int StockHandle,UInt16 wPicQuality);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSetCapPicCallBack(int StockHandle,CapPicFun x);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSavePicFile( [MarshalAs(UnmanagedType.LPArray)] byte[] pBuf,int nSize,int nWidth,int nHeight,int nType,  string sFileName);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientThrowBFrame(int StockHandle,UInt32 dNum);

  [DllImport("hikclient.dll")]

  public static extern uint  MP4_ClientGetFrameNum(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern uint  MP4_ClientGetSdkVersion();

  //new

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientCastGroup(int StockHandle,out string sIP,UInt16 wPort);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientAudioMode(UInt16 wMode);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientAudioStartShare(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientAudioStopShare(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientRigisterDrawFun(int StockHandle,DrawFun x,int nUser);

  //decode card

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientInitDevice_Card(out int pDeviceTotal);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientInitDDraw_Card(System.IntPtr  hParent,System.Drawing.Color  colorKey);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientReleaseDevice_Card();

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientReleaseDDraw_Card();

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientStart_Card(ref CLIENT_CARDINFO pClientinfo,int nChannelNum,ReadDataCallBack x);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientResetPara_Card(int StockHandle,out DISPLAY_PARA pPara);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientAudioStop_Card(int StockHandle);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientAudioStart_Card(int StockHandle,bool bAudioPreview);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientAudioVolume_Card(int StockHandle,uint nVolume);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientRefreshSurface_Card();

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientClearSurface_Card();

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientRestoreSurface_Card();

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientGetSerialNo_Card(int nChannelNum,out uint pDeviceSerialNo);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientCapPicFile_Card(int StockHandle,out string  sFileName);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientSetDspErrMsg_Card(uint nMessage,System.UIntPtr  hWnd);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientResetDSP_Card(int nChannelNum);

  [DllImport("hikclient.dll")]

  public static extern int    MP4_ClientGetDevice_Card(int nChannelNum,object phChannel);

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientSetDecryptCallback(  DecryptFun x );

  [DllImport("hikclient.dll")]

  public static extern bool MP4_ClientCleanBuffer(int nPort,int nCleanType);

  /// <summary>

  ///

  /// </summary>

  /// <param name="strFirstMRIP"></param>

  /// <param name="strSecondMRIP"></param>

  /// <param name="wFirstMRPort"></param>

  /// <returns></returns>

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSetMR(String strFirstMRIP,String strSecondMRIP,UInt16 wFirstMRPort);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSetDisplayType(int StockHandle,int nType);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientSetVideoPara(int StockHandle,UInt32 nRegionNum, int nBrightness, int nContrast, int nSaturation, int nHue);

  [DllImport("hikclient.dll")]

  public static extern bool  MP4_ClientGetVideoPara(int StockHandle,UInt32 nRegionNum, out int pBrightness, out int pContrast, out int pSaturation, out int pHue);

  [DllImport("hikclient.dll")]

  public static extern int  MP4_ClientStart_Other(CLIENT_CARDINFO pClientinfo,ReadDataCallBack x);

  [DllImport("hikclient.dll")]

  public static extern int  MP4_ClientStart_Card_Other(ref CLIENT_CARDINFO pClientinfo,int nChannelNum,ReadDataCallBack x);

 }

}

繼續閱讀