博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 海康DVR客户端开发系列(2)—— 封装API
阅读量:7021 次
发布时间:2019-06-28

本文共 16706 字,大约阅读时间需要 55 分钟。

前言

  从上篇文章(10月4日)到本篇文章截止到今天(10月22日)一直在做这个SDK翻译工作,耗时2周半,代码超过1万行,约有三分之二的行数是注释。由于工作忙也只能一天抽出那么半个小时一个小时来整理,所以对关注此系列文章的朋友说句:“抱歉,让大家久等了”。

  临时决定本系列使用WPF来做例子(买了一本WPF没读 - - #,所以......),藉此学习下WPF,也进一步熟悉.Net Framework 3.5,落伍的“老兵”奋起追击下相对于“老兵”而言的新技术 :)   

  其实这篇文章在10月22日就写好了,但是想和视频预览文章一起发布,比较麻烦的是我这边朋友的DVR一直不稳定,一直拖延到今天还是不行,所以还是把本文先发了。因此寻求能提供DVR设备的厂家或者提供DVR远程访问地址的朋友,以支持此系列能顺利的完成,在这里先谢谢了!我的联系方式:13811821337、over140@gmail.com



提醒

  欢迎转载,但请保留
(www.cnblogs.com)、
(over140.cnblogs.com)的出处,谢谢合作:)



系列

  1.  

  2.  

更新

  本文会随着后续实践文章有相应的改动,请及时更新!

  2010-12-21  

    主要更新了SerialDataCallBack委托的pRecvDataBuffer参数数据类型,由string改为byte[],这里感谢实践后指出,欢迎大家积极反馈!

  2009-10-31  

    主要更新了大部分结构体中byte[]初始大小指定,加上了[MarshalAs(UnmanagedType.ByValArray, SizeConst = HCNetSDK.SERIALNO_LEN)]类似的标记。

  2009-10-24  

 

正文

  一、代码截图

   VS  

  二、 部分代码

  由于代码过长(超过1W行),这里就不贴全部了,大家直接在更新下面下载最新的SDK即可。

        
///
 设置码流速度
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_SETSPEED 
=
 
24
;
        
///
 
<summary>
        
///
 保持与设备的心跳(如果回调阻塞,建议2秒发送一次)
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_KEEPALIVE 
=
 
25
;
        
//
远程按键定义如下:
        
/*
 key value send to CONFIG program 
*/
        
public
 
const
 
int
 KEY_CODE_1 
=
 
1
;
        
public
 
const
 
int
 KEY_CODE_2 
=
 
2
;
        
public
 
const
 
int
 KEY_CODE_3 
=
 
3
;
        
public
 
const
 
int
 KEY_CODE_4 
=
 
4
;
        
public
 
const
 
int
 KEY_CODE_5 
=
 
5
;
        
public
 
const
 
int
 KEY_CODE_6 
=
 
6
;
        
public
 
const
 
int
 KEY_CODE_7 
=
 
7
;
        
public
 
const
 
int
 KEY_CODE_8 
=
 
8
;
        
public
 
const
 
int
 KEY_CODE_9 
=
 
9
;
        
public
 
const
 
int
 KEY_CODE_0 
=
 
10
;
        
public
 
const
 
int
 KEY_CODE_POWER 
=
 
11
;
        
public
 
const
 
int
 KEY_CODE_MENU 
=
 
12
;
        
public
 
const
 
int
 KEY_CODE_ENTER 
=
 
13
;
        
public
 
const
 
int
 KEY_CODE_CANCEL 
=
 
14
;
        
public
 
const
 
int
 KEY_CODE_UP 
=
 
15
;
        
public
 
const
 
int
 KEY_CODE_DOWN 
=
 
16
;
        
public
 
const
 
int
 KEY_CODE_LEFT 
=
 
17
;
        
public
 
const
 
int
 KEY_CODE_RIGHT 
=
 
18
;
        
public
 
const
 
int
 KEY_CODE_EDIT 
=
 
19
;
        
public
 
const
 
int
 KEY_CODE_ADD 
=
 
20
;
        
public
 
const
 
int
 KEY_CODE_MINUS 
=
 
21
;
        
public
 
const
 
int
 KEY_CODE_PLAY 
=
 
22
;
        
public
 
const
 
int
 KEY_CODE_REC 
=
 
23
;
        
public
 
const
 
int
 KEY_CODE_PAN 
=
 
24
;
        
public
 
const
 
int
 KEY_CODE_M 
=
 
25
;
        
public
 
const
 
int
 KEY_CODE_A 
=
 
26
;
        
public
 
const
 
int
 KEY_CODE_F1 
=
 
27
;
        
public
 
const
 
int
 KEY_CODE_F2 
=
 
28
;
        
/*
 for PTZ control 
*/
        
public
 
const
 
int
 KEY_PTZ_UP_START 
=
 KEY_CODE_UP;
        
public
 
const
 
int
 KEY_PTZ_UP_STOP 
=
 
32
;
        
public
 
const
 
int
 KEY_PTZ_DOWN_START 
=
 KEY_CODE_DOWN;
        
public
 
const
 
int
 KEY_PTZ_DOWN_STOP 
=
 
33
;
        
public
 
const
 
int
 KEY_PTZ_LEFT_START 
=
 KEY_CODE_LEFT;
        
public
 
const
 
int
 KEY_PTZ_LEFT_STOP 
=
 
34
;
        
public
 
const
 
int
 KEY_PTZ_RIGHT_START 
=
 KEY_CODE_RIGHT;
        
public
 
const
 
int
 KEY_PTZ_RIGHT_STOP 
=
 
35
;
        
///
 
<summary>
        
///
 光圈+
        
///
 
</summary>
        
public
 
const
 
int
 KEY_PTZ_AP1_START 
=
 KEY_CODE_EDIT; 
/*
 光圈+ 
*/
        
public
 
const
 
int
 KEY_PTZ_AP1_STOP 
=
 
36
;
        
///
 
<summary>
        
///
 光圈-
        
///
 
</summary>
        
public
 
const
 
int
 KEY_PTZ_AP2_START 
=
 KEY_CODE_PAN; 
/*
 光圈- 
*/
        
public
 
const
 
int
 KEY_PTZ_AP2_STOP 
=
 
37
;
        
///
 
<summary>
        
///
 聚焦+
        
///
 
</summary>
        
public
 
const
 
int
 KEY_PTZ_FOCUS1_START 
=
 KEY_CODE_A; 
/*
 聚焦+ 
*/
        
public
 
const
 
int
 KEY_PTZ_FOCUS1_STOP 
=
 
38
;
        
///
 
<summary>
        
///
 聚焦-
        
///
 
</summary>
        
public
 
const
 
int
 KEY_PTZ_FOCUS2_START 
=
 KEY_CODE_M;
/*
 聚焦- 
*/
        
public
 
const
 
int
 KEY_PTZ_FOCUS2_STOP 
=
 
39
;
        
///
 
<summary>
        
///
 变倍+
        
///
 
</summary>
        
public
 
const
 
int
 KEY_PTZ_B1_START 
=
 
40
/*
 变倍+ 
*/
        
public
 
const
 
int
 KEY_PTZ_B1_STOP 
=
 
41
;
        
///
 
<summary>
        
///
 变倍-
        
///
 
</summary>
        
public
 
const
 
int
 KEY_PTZ_B2_START 
=
 
42
/*
 变倍- 
*/
        
public
 
const
 
int
 KEY_PTZ_B2_STOP 
=
 
43
;
        
//
9000新增
        
public
 
const
 
int
 KEY_CODE_11 
=
 
44
;
        
public
 
const
 
int
 KEY_CODE_12 
=
 
45
;
        
public
 
const
 
int
 KEY_CODE_13 
=
 
46
;
        
public
 
const
 
int
 KEY_CODE_14 
=
 
47
;
        
public
 
const
 
int
 KEY_CODE_15 
=
 
48
;
        
public
 
const
 
int
 KEY_CODE_16 
=
 
49
;
        
///
 
<summary>
        
///
 获取网络应用参数 EMAIL
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_GET_EMAILCFG 
=
 
228
;
//
        
///
 
<summary>
        
///
 设置网络应用参数 EMAIL
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_SET_EMAILCFG 
=
 
229
;    
//
        
//
对应NET_DVR_EMAILCFG结构
        
//
        
public
 
const
 
int
 NET_DVR_GET_ALLHDCFG 
=
 
300
;        
//
        
#region
 DS9000新增命令(_V30)
        
//
设备编码类型配置(NET_DVR_COMPRESSION_AUDIO结构)
        
///
 
<summary>
        
///
 获取设备语音对讲编码参数
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_GET_COMPRESSCFG_AUD 
=
 
1058
;     
//
        
///
 
<summary>
        
///
 设置设备语音对讲编码参数
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_SET_COMPRESSCFG_AUD 
=
 
1059
;      
//
        
#endregion
        
///
 
<summary>
        
///
 预览异常
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_REALPLAYEXCEPTION 
=
 
111
;
//
        
///
 
<summary>
        
///
 预览时连接断开
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_REALPLAYNETCLOSE 
=
 
112
;
//
        
///
 
<summary>
        
///
 预览5s没有收到数据
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_REALPLAY5SNODATA 
=
 
113
;    
//
        
///
 
<summary>
        
///
 预览重连
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_REALPLAYRECONNECT 
=
 
114
;    
//
        
///
 
<summary>
        
///
 回放数据播放完毕
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_PLAYBACKOVER 
=
 
101
;
//
        
///
 
<summary>
        
///
 回放异常
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_PLAYBACKEXCEPTION 
=
 
102
;
//
        
///
 
<summary>
        
///
 回放时候连接断开
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_PLAYBACKNETCLOSE 
=
 
103
;
//
        
///
 
<summary>
        
///
 回放5s没有收到数据
        
///
 
</summary>
        
public
 
const
 
int
 NET_DVR_PLAYBACK5SNODATA 
=
 
104
;
        
#region
 DS-6001D/F
        
///
 
<summary>
        
///
 DS-6001D Decoder
        
///
     NET_DVR_DECODERINFO, *LPNET_DVR_DECODERINFO;
        
///
 
</summary>
        
public
 
struct
 NET_DVR_DECODERINFO
        {
            
///
 
<summary>
            
///
 解码设备连接的服务器IP
            
///
     public byte byEncoderIP[16];
            
///
 
</summary>
            
public
 
byte
[] byEncoderIP;
            
///
 
<summary>
            
///
 解码设备连接的服务器的用户名
            
///
     public byte byEncoderUser[16];
            
///
 
</summary>
            
public
 
byte
[] byEncoderUser;
            
///
 
<summary>
            
///
 解码设备连接的服务器的密码
            
///
     public byte byEncoderPasswd[16];
            
///
 
</summary>
            
public
 
byte
[] byEncoderPasswd;
            
///
 
<summary>
            
///
 解码设备连接服务器的连接模式
            
///
 
</summary>
            
public
 
byte
 bySendMode;
            
///
 
<summary>
            
///
 解码设备连接的服务器的通道号
            
///
 
</summary>
            
public
 
byte
 byEncoderChannel;
            
///
 
<summary>
            
///
 解码设备连接的服务器的端口号
            
///
 
</summary>
            
public
 
ushort
 wEncoderPort;
            
///
 
<summary>
            
///
 保留
            
///
     public byte reservedData[4];
            
///
 
</summary>
            
public
 
byte
[] reservedData;
        }
        
///
 
<summary>
        
///
 NET_DVR_DECODERSTATE, *LPNET_DVR_DECODERSTATE;
        
///
 
</summary>
        
public
 
struct
 NET_DVR_DECODERSTATE
        {
            
///
 
<summary>
            
///
 解码设备连接的服务器IP
            
///
     public byte byEncoderIP[16];
            
///
 
</summary>
            
public
 
byte
[] byEncoderIP;
            
///
 
<summary>
            
///
 解码设备连接的服务器的用户名
            
///
     public byte byEncoderUser[16];
            
///
 
</summary>
            
public
 
byte
[] byEncoderUser;
            
///
 
<summary>
            
///
 解码设备连接的服务器的密码
            
///
     public byte byEncoderPasswd[16];
            
///
 
</summary>
            
public
 
byte
[] byEncoderPasswd;
            
///
 
<summary>
            
///
 解码设备连接的服务器的通道号
            
///
 
</summary>
            
public
 
byte
 byEncoderChannel;
            
///
 
<summary>
            
///
 解码设备连接的服务器的连接模式
            
///
 
</summary>
            
public
 
byte
 bySendMode;
            
///
 
<summary>
            
///
 解码设备连接的服务器的端口号
            
///
 
</summary>
            
public
 
ushort
 wEncoderPort;
            
///
 
<summary>
            
///
 解码设备连接服务器的状态
            
///
 
</summary>
            
public
 
uint
 dwConnectState;
            
///
 
<summary>
            
///
 保留
            
///
     public byte reservedData[4];
            
///
 
</summary>
            
public
 
byte
[] reservedData;
        }
        
#region
 解码设备控制码定义
        
public
 
const
 
int
 NET_DEC_STARTDEC 
=
 
1
;
        
public
 
const
 
int
 NET_DEC_STOPDEC 
=
 
2
;
        
public
 
const
 
int
 NET_DEC_STOPCYCLE 
=
 
3
;
        
public
 
const
 
int
 NET_DEC_CONTINUECYCLE 
=
 
4
;
        
#endregion
        
#endregion
        
///
 
<summary>
        
///
 Email
        
///
     NET_DVR_EMAILPARA, *LPNET_DVR_EMAILPARA;
        
///
 
</summary>
        
public
 
struct
 NET_DVR_EMAILPARA
        {
            
///
 
<summary>
            
///
 邮件账号
            
///
     public byte sUsername[64];
            
///
 
</summary>
            
public
 
string
 sUsername;
            
///
 
<summary>
            
///
 邮件密码
            
///
     public byte sPassword[64];
            
///
 
</summary>
            
public
 
string
 sPassword;
            
///
 
<summary>
            
///
     public byte sSmtpServer[64];
            
///
 
</summary>
            
public
 
string
 sSmtpServer;
            
///
 
<summary>
            
///
     public byte sPop3Server[64];
            
///
 
</summary>
            
public
 
string
 sPop3Server;
            
///
 
<summary>
            
///
 邮件地址
            
///
     public byte sMailAddr[64];
            
///
 
</summary>
            
public
 
string
 sMailAddr;
            
///
 
<summary>
            
///
 上传报警/异常等的email
            
///
     public byte sEventMailAddr1[64];
            
///
 
</summary>
            
public
 
byte
[] sEventMailAddr1;
            
///
 
<summary>
            
///
     public byte sEventMailAddr2[64];
            
///
 
</summary>
            
public
 
byte
[] sEventMailAddr2;
            
///
 
<summary>
            
///
     public byte res[16];
            
///
 
</summary>
            
public
 
byte
[] res;
        }
        
///
 
<summary>
        
///
 NET_DVR_NETCFG_OTHER, *LPNET_DVR_NETCFG_OTHER;
        
///
 
</summary>
        
public
 
struct
 NET_DVR_NETCFG_OTHER
        {
            
public
 
uint
 dwSize;
            
///
 
<summary>
            
///
     char    sFirstDNSIP[16];
            
///
 
</summary>
            
public
 
string
 sFirstDNSIP;
            
///
 
<summary>
            
///
     char    sSecondDNSIP[16];
            
///
 
</summary>
            
public
 
string
 sSecondDNSIP;
            
///
 
<summary>
            
///
 char    sRes[32];
            
///
 
</summary>
            
public
 
string
 sRes;
        }
        
///
 
<summary>
        
///
 连接的通道配置 2007-11-05
        
///
     NET_DVR_MATRIX_DECCHANINFO, *LPNET_DVR_MATRIX_DECCHANINFO;
        
///
 
</summary>
        
public
 
struct
 NET_DVR_MATRIX_DECCHANINFO
        {
            
///
 
<summary>
            
///
 是否启用 0-否 1-启用
            
///
 
</summary>
            
public
 
uint
 dwEnable;
            
///
 
<summary>
            
///
 轮循解码通道信息
            
///
 
</summary>
            
public
 NET_DVR_MATRIX_DECINFO struDecChanInfo;
        }
        
///
 
<summary>
        
///
 压缩参数?
        
///
     NET_DVR_COMPRESSIONCFG_NEW, *LPNET_DVR_COMPRESSIONCFG_NEW;
        
///
 
</summary>
        
public
 
struct
 NET_DVR_COMPRESSIONCFG_NEW
        {
            
public
 
uint
 dwSize;
            
///
 
<summary>
            
///
 定时录像
            
///
 
</summary>
            
public
 NET_DVR_COMPRESSION_INFO_EX struLowCompression;
            
///
 
<summary>
            
///
 事件触发录像
            
///
 
</summary>
            
public
 NET_DVR_COMPRESSION_INFO_EX struEventCompression;
        }
        
///
 
<summary>
        
///
 抓图模式
        
///
 
</summary>
        
public
 
enum
 CAPTURE_MODE
        {
            
///
 
<summary>
            
///
 BMP模式
            
///
 
</summary>
            BMP_MODE 
=
 
0
,        
//
            
///
 
<summary>
            
///
 JPEG模式 
            
///
 
</summary>
            JPEG_MODE 
=
 
1
        
//
        }
        
///
 
<summary>
        
///
 实时声音模式
        
///
 
</summary>
        
public
 
enum
 REALSOUND_MODE
        {
            
///
 
<summary>
            
///
 独占模式
            
///
 
</summary>
            MONOPOLIZE_MODE 
=
 
1
,
            
///
 
<summary>
            
///
 共享模式
            
///
 
</summary>
            SHARE_MODE 
=
 
2
        }
        
///
 
<summary>
        
///
 录象文件参数(带卡号)
        
///
     NET_DVR_FINDDATA_CARD, *LPNET_DVR_FINDDATA_CARD;
        
///
 
</summary>
        
public
 
struct
 NET_DVR_FINDDATA_CARD
        {
            
///
 
<summary>
            
///
 文件名
            
///
     char sFileName[100];
            
///
 
</summary>
            
public
 
string
 sFileName;
            
///
 
<summary>
            
///
 文件的开始时间
            
///
 
</summary>
            
public
 NET_DVR_TIME struStartTime;
            
///
 
<summary>
            
///
 文件的结束时间
            
///
 
</summary>
            
public
 NET_DVR_TIME struStopTime;
            
///
 
<summary>
            
///
 文件的大小
            
///
 
</summary>
            
public
 
uint
 dwFileSize;
            
///
 
<summary>
            
///
 卡号?
            
///
     char sCardNum[32];
            
///
 
</summary>
            
public
 
char
 sCardNum;
        }
        
///
 
<summary>
        
///
 设置重新连接间隔
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_SetReconnect(DWORD dwInterval = 30000, BOOL bEnableRecon = TRUE);
        
///
 
</summary>
        
///
 
<param name="dwInterval"></param>
        
///
 
<param name="bEnableRecon"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_SetReconnect(
uint
 dwInterval, 
bool
 bEnableRecon);
        
///
 
<summary>
        
///
 通过IPSever获取设备动态IP地址[Ex]
        
///
     NET_DVR_API BOOL  __stdcall NET_DVR_GetDVRIPByResolveSvr_EX(char *sServerIP, WORD wServerPort, unsigned char *sDVRName, WORD wDVRNameLen, BYTE *sDVRSerialNumber, WORD wDVRSerialLen, char* sGetIP, DWORD *dwPort);
        
///
 
</summary>
        
///
 
<param name="sServerIP"></param>
        
///
 
<param name="wServerPort"></param>
        
///
 
<param name="sDVRName"></param>
        
///
 
<param name="wDVRNameLen"></param>
        
///
 
<param name="sDVRSerialNumber"></param>
        
///
 
<param name="wDVRSerialLen"></param>
        
///
 
<param name="sGetIP"></param>
        
///
 
<param name="dwPort"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_GetDVRIPByResolveSvr_EX(
string
 sServerIP, 
ushort
 wServerPort, 
string
 sDVRName, 
ushort
 wDVRNameLen, 
string
 sDVRSerialNumber, 
ushort
 wDVRSerialLen, StringBuilder sGetIP, 
ref
 
uint
 dwPort);
        
///
 
<summary>
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_PTZControlWithSpeed_EX(LONG lRealHandle, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed);
        
///
 
</summary>
        
///
 
<param name="lRealHandle"></param>
        
///
 
<param name="dwPTZCommand"></param>
        
///
 
<param name="dwStop"></param>
        
///
 
<param name="dwSpeed"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_PTZControlWithSpeed_EX(
int
 lRealHandle, 
uint
 dwPTZCommand, 
uint
 dwStop, 
uint
 dwSpeed);
        
///
 
<summary>
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_PTZMltTrack(LONG lRealHandle,DWORD dwPTZTrackCmd, DWORD dwTrackIndex);
        
///
 
</summary>
        
///
 
<param name="lRealHandle"></param>
        
///
 
<param name="dwPTZTrackCmd"></param>
        
///
 
<param name="dwTrackIndex"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_PTZMltTrack(
int
 lRealHandle, 
uint
 dwPTZTrackCmd, 
uint
 dwTrackIndex);
        
///
 
<summary>
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_PTZMltTrack_Other(LONG lUserID,LONG lChannel,DWORD dwPTZTrackCmd, DWORD dwTrackIndex);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<param name="lChannel"></param>
        
///
 
<param name="dwPTZTrackCmd"></param>
        
///
 
<param name="dwTrackIndex"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_PTZMltTrack_Other(
int
 lUserID, 
int
 lChannel, 
uint
 dwPTZTrackCmd, 
uint
 dwTrackIndex);
        
///
 
<summary>
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_PTZMltTrack_EX(LONG lRealHandle,DWORD dwPTZTrackCmd, DWORD dwTrackIndex);
        
///
 
</summary>
        
///
 
<param name="lRealHandle"></param>
        
///
 
<param name="dwPTZTrackCmd"></param>
        
///
 
<param name="dwTrackIndex"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_PTZMltTrack_EX(
int
 lRealHandle, 
uint
 dwPTZTrackCmd, 
uint
 dwTrackIndex);
        
///
 
<summary>
        
///
 NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_Card(LONG lFindHandle, LPNET_DVR_FINDDATA_CARD lpFindData);
        
///
 
</summary>
        
///
 
<param name="lFindHandle"></param>
        
///
 
<param name="lpFindData"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
int
 NET_DVR_FindNextFile_Card(
int
 lFindHandle, NET_DVR_FINDDATA_CARD lpFindData);
        
///
 
<summary>
        
///
 NET_DVR_API LONG __stdcall NET_DVR_FindFile_Card(LONG lUserID, LONG lChannel, DWORD dwFileType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<param name="lChannel"></param>
        
///
 
<param name="dwFileType"></param>
        
///
 
<param name="lpStartTime"></param>
        
///
 
<param name="lpStopTime"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
int
 NET_DVR_FindFile_Card(
int
 lUserID, 
int
 lChannel, 
uint
 dwFileType, NET_DVR_TIME lpStartTime, NET_DVR_TIME lpStopTime);
        
///
 
<summary>
        
///
 NET_DVR_API int    __stdcall NET_DVR_GetPlayBackPos(LONG lPlayHandle);
        
///
 
</summary>
        
///
 
<param name="lPlayHandle"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
int
 NET_DVR_GetPlayBackPos(
int
 lPlayHandle);
        
//
解码设备DS-6001D/DS-6001F
        
///
 
<summary>
        
///
 NET_DVR_API BOOL __stdcall NET_DVR_StartDecode(LONG lUserID, LONG lChannel, LPNET_DVR_DECODERINFO lpDecoderinfo);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<param name="lChannel"></param>
        
///
 
<param name="lpDecoderinfo"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_StartDecode(
int
 lUserID, 
int
 lChannel, NET_DVR_DECODERINFO lpDecoderinfo);
        
///
 
<summary>
        
///
 NET_DVR_API BOOL __stdcall NET_DVR_StopDecode(LONG lUserID, LONG lChannel);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<param name="lChannel"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_StopDecode(
int
 lUserID, 
int
 lChannel);
        
///
 
<summary>
        
///
 NET_DVR_API BOOL __stdcall NET_DVR_GetDecoderState(LONG lUserID, LONG lChannel, LPNET_DVR_DECODERSTATE lpDecoderState);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<param name="lChannel"></param>
        
///
 
<param name="lpDecoderState"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_GetDecoderState(
int
 lUserID, 
int
 lChannel, NET_DVR_DECODERSTATE lpDecoderState);
        
///
 
<summary>
        
///
 保存参数
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_SaveConfig(LONG lUserID);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_SaveConfig(
int
 lUserID);
        
///
 
<summary>
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_SetVideoEffect(LONG lUserID, LONG lChannel, DWORD dwBrightValue, DWORD dwContrastValue, DWORD dwSaturationValue, DWORD dwHueValue);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<param name="lChannel"></param>
        
///
 
<param name="dwBrightValue"></param>
        
///
 
<param name="dwContrastValue"></param>
        
///
 
<param name="dwSaturationValue"></param>
        
///
 
<param name="dwHueValue"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_SetVideoEffect(
int
 lUserID, 
int
 lChannel, 
uint
 dwBrightValue, 
uint
 dwContrastValue, 
uint
 dwSaturationValue, 
uint
 dwHueValue);
        
///
 
<summary>
        
///
     NET_DVR_API BOOL __stdcall NET_DVR_GetVideoEffect(LONG lUserID, LONG lChannel, DWORD *pBrightValue, DWORD *pContrastValue, DWORD *pSaturationValue, DWORD *pHueValue);
        
///
 
</summary>
        
///
 
<param name="lUserID"></param>
        
///
 
<param name="lChannel"></param>
        
///
 
<param name="pBrightValue"></param>
        
///
 
<param name="pContrastValue"></param>
        
///
 
<param name="pSaturationValue"></param>
        
///
 
<param name="pHueValue"></param>
        
///
 
<returns></returns>
        [DllImport(
"
HCNetSDK.dll
"
)]
        
public
 
static
 
extern
 
bool
 NET_DVR_GetVideoEffect(
int
 lUserID, 
int
 lChannel, 
out
 
uint
 pBrightValue, 
out
 
uint
 pContrastValue, 
out
 
uint
 pSaturationValue, 
out
 
uint
 pHueValue);
  三、下章预告

    实现最基本的连接服务器并预览图像的功能。



结束语

  首先我必须强调本章的翻译是一个体力活!本章可能会再随后的文章不断的更新,主要是数据类型对应可能有问题,这里也是凭经验来进行对应了,也欢迎有朋友尽早的向我提交勘误,我好及时的更新文章。

转载:http://www.cnblogs.com/over140/archive/2009/10/24/1577975.html

你可能感兴趣的文章
TCP三次握手连接及seq和ack号的正确理解
查看>>
打印目录中文件大小大于多少的文件
查看>>
非阻塞式JavaScript脚本及延伸知识
查看>>
专线与***冗余方案
查看>>
Go语言中的方法(Method Sets)
查看>>
嵌入式系统构件学习推荐的书 ucos的作者所著
查看>>
Android中内容提供者ContentProvider的理解与基本使用
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
使用yaml语言来写配置文件
查看>>
go 入门学习笔记之 变量/常量/基本类型 (五)
查看>>
Android ActionBar居中显示标题
查看>>
硬盘的存储原理和内部架构
查看>>
爆笑配音神作来袭,新白娘子传奇相亲记
查看>>
android线程使用注意问题?【安卓进化二】
查看>>
常用JS方法
查看>>
hive优化--增加减少map数
查看>>
php-fpm配置
查看>>
【 D3.js 选择集与数据详解 — 2 】 使用data()绑定数据
查看>>
SomethingOn生产力提升工具使用
查看>>