C# 海康人脸识别设备初开发(一)

第一篇:登录(会贴出部分将C++转为C#的类代码)
(1)初始化
private Int32 m_lUserID = -1;
m_bInitSDK = CHCNetSDK.NET_DVR_Init();
if (m_bInitSDK == false)
{
MessageBox.Show(“NET_DVR_Init error!”);
return;
}
(2)登录(这里是v30接口登录,其他接口请自行研究)
if (m_lUserID < 0)
{
string DVRIPAddress = textBoxIP.Text; //设备IP地址或者域名
Int16 DVRPortNumber = Int16.Parse(textBoxPort.Text);//设备服务端口号
string DVRUserName = textBoxUserName.Text;//设备登录用户名
string DVRPassword = textBoxPassword.Text;//设备登录密码
CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
//登录设备 Login the device
m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo);
if (m_lUserID < 0)
{
iLastErr = CHCNetSDK.NET_DVR_GetLastError();
str = "NET_DVR_Login_V30 failed, error code= " + iLastErr; //登录失败,输出错误号
MessageBox.Show(str);
return;
}
}
(3)CHCNetSDK类定义
[DllImport(@"..\bin\HCNetSDK.dll")] public static extern bool NET_DVR_Init(); // //NET_DVR_Login_V30()参数结构 [StructLayoutAttribute(LayoutKind.Sequential)] public struct NET_DVR_DEVICEINFO_V30 { [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN, ArraySubType = UnmanagedType.I1)] public byte[] sSerialNumber; //序列号 public byte byAlarmInPortNum; //报警输入个数 public byte byAlarmOutPortNum; public byte byDiskNum; //硬盘个数 public byte byDVRType; //设备类型, 1:DVR 2:ATM DVR 3:DVS ...... public byte byChanNum; //模拟通道个数 public byte byStartChan; public byte byAudioChanNum; //语音通道数 public byte byIPChanNum; //最大数字通道个数,低位 public byte byZeroChanNum; //零通道编码个数 //2010-01-16 public byte byMainProto; //主码流传输协议类型 0-private, 1-rtsp,2-同时支持private和rtsp public byte bySubProto; //子码流传输协议类型0-private, 1-rtsp,2-同时支持private和rtsp public byte bySupport; //能力,位与结果为0表示不支持,1表示支持, //bySupport & 0x1, 表示是否支持智能搜索 //bySupport & 0x2, 表示是否支持备份 //bySupport & 0x4, 表示是否支持压缩参数能力获取 //bySupport & 0x8, 表示是否支持多网卡 //bySupport & 0x10, 表示支持远程SADP //bySupport & 0x20, 表示支持Raid卡功能 //bySupport & 0x40, 表示支持IPSAN 目录查找 //bySupport & 0x80, 表示支持rtp over rtsp public byte bySupport1; // 能力集扩充,位与结果为0表示不支持,1表示支持 //bySupport1 & 0x1, 表示是否支持snmp v30 //bySupport1 & 0x2, 支持区分回放和下载 //bySupport1 & 0x4, 是否支持布防优先级 //bySupport1 & 0x8, 智能设备是否支持布防时间段扩展 //bySupport1 & 0x10, 表示是否支持多磁盘数(超过33个) //bySupport1 & 0x20, 表示是否支持rtsp over http //bySupport1 & 0x80, 表示是否支持车牌新报警信息2012-9-28, 且还表示是否支持NET_DVR_IPPARACFG_V40结构体 public byte bySupport2; /*能力,位与结果为0表示不支持,非0表示支持 bySupport2 & 0x1, 表示解码器是否支持通过URL取流解码 bySupport2 & 0x2, 表示支持FTPV40 bySupport2 & 0x4, 表示支持ANR bySupport2 & 0x8, 表示支持CCD的通道参数配置 bySupport2 & 0x10, 表示支持布防报警回传信息(仅支持抓拍机报警 新老报警结构) bySupport2 & 0x20, 表示是否支持单独获取设备状态子项 bySupport2 & 0x40, 表示是否是码流加密设备*/ public ushort wDevType; //设备型号 public byte bySupport3; //能力集扩展,位与结果为0表示不支持,1表示支持 //bySupport3 & 0x1, 表示是否多码流 // bySupport3 & 0x4 表示支持按组配置, 具体包含 通道图像参数、报警输入参数、IP报警输入、输出接入参数、 // 用户参数、设备工作状态、JPEG抓图、定时和时间抓图、硬盘盘组管理 //bySupport3 & 0x8为1 表示支持使用TCP预览、UDP预览、多播预览中的"延时预览"字段来请求延时预览(后续都将使用这种方式请求延时预览)。而当bySupport3 & 0x8为0时,将使用 "私有延时预览"协议。 //bySupport3 & 0x10 表示支持"获取报警主机主要状态(V40)"。 //bySupport3 & 0x20 表示是否支持通过DDNS域名解析取流 public byte byMultiStreamProto;//是否支持多码流,按位表示,0-不支持,1-支持,bit1-码流3,bit2-码流4,bit7-主码流,bit-8子码流 public byte byStartDChan; //起始数字通道号,0表示无效 public byte byStartDTalkChan; //起始数字对讲通道号,区别于模拟对讲通道号,0表示无效 public byte byHighDChanNum; //数字通道个数,高位 public byte bySupport4; public byte byLanguageType;// 支持语种能力,按位表示,每一位0-不支持,1-支持 // byLanguageType 等于0 表示 老设备 // byLanguageType & 0x1表示支持中文 // byLanguageType & 0x2表示支持英文 [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)] public byte[] byRes2; //保留 } // [DllImport(@"..\bin\HCNetSDK.dll")] public static extern Int32 NET_DVR_Login_V30(string sDVRIP, Int32 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo); //获取错误信息 [DllImport(@"..\bin\HCNetSDK.dll")] public static extern uint NET_DVR_GetLastError(); [DllImport(@"..\bin\HCNetSDK.dll")]         public static extern string NET_DVR_GetErrorMsg(ref int pErrorNo);

你可能感兴趣的:(C#)