Пример #1
0
        public Session Login(string ipAddress, int port, string userName, string password)
        {
            NET_DVR_DEVICEINFO_V30 deviceInfo = default(NET_DVR_DEVICEINFO_V30);
            int userId = SdkHelper.InvokeSDK(() => NET_DVR_Login_V30(ipAddress, port, userName, password, ref deviceInfo));

            return(new Session(userId, deviceInfo.byChanNum));
        }
Пример #2
0
 public FaceCamera()
 {
     deviceInfo    = new NET_DVR_DEVICEINFO_V30();
     dvrIPAddress1 = "172.16.210.240";    //设备IP地址或者域名
     dvrIPAddress2 = "172.16.210.241";    //设备IP地址或者域名
     dvrPortNumber = Int16.Parse("8000"); //设备服务端口号
     dvrUserName   = "******";             //设备登录用户名
     dvrPassword   = "******";          //设备登录密码
 }
Пример #3
0
        public Camera(string ipAddress, short port, string userName, string password)
        {
            DVRIPAddress  = ipAddress;
            DVRPortNumber = port;
            DVRUserName   = userName;
            DVRPassword   = password;

            DeviceInfo = new NET_DVR_DEVICEINFO_V30();
            User       = new IntPtr();
        }
Пример #4
0
        private int LoginNormalDevice()
        {
            m_oNetDvrDeviceInfoV30 = new NET_DVR_DEVICEINFO_V30
            {
                ByAlarmInPortNum = default
            };

            if (null == m_oNetDvrDeviceInfoV30)
            {
                Console.WriteLine("HKNetDvrDeviceInfoV30 new is failed!");
                return(-1);
            }

            string StrIP   = m_oIPAddr.Text.ToString();
            int    nPort   = int.Parse(m_oPort.Text.ToString());
            string StrUser = m_oUser.Text.ToString();
            string StrPsd  = m_oPsd.Text.ToString();

            // call NET_DVR_Login_v30 to login on, port 8000 as default
            int iLogID = HCNetSDK.Instance.NET_DVR_Login_V30(StrIP, nPort, StrUser, StrPsd, m_oNetDvrDeviceInfoV30);

            if (iLogID < 0)
            {
                Console.WriteLine("NET_DVR_Login is failed!Err:" + HCNetSDK.Instance.NET_DVR_GetLastError());
                return(-1);
            }

            if (m_oNetDvrDeviceInfoV30.ByChanNum > 0)
            {
                m_iStartChan = m_oNetDvrDeviceInfoV30.ByStartChan;
                m_iChanNum   = m_oNetDvrDeviceInfoV30.ByChanNum;
            }
            else if (m_oNetDvrDeviceInfoV30.ByIPChanNum > 0)
            {
                m_iStartChan = m_oNetDvrDeviceInfoV30.ByStartDChan;
                m_iChanNum   = 1 /* m_oNetDvrDeviceInfoV30.ByIPChanNum
                                  + m_oNetDvrDeviceInfoV30.byHighDChanNum * 256*/;
            }

            if (m_iChanNum > 1)
            {
                ChangeSingleSurFace(false);
            }
            else
            {
                ChangeSingleSurFace(true);
            }

            Log.Info("", "NET_DVR_Login is Successful!");

            return(iLogID);
        }
Пример #5
0
        public bool StartTlak(Enum_TalkModel talkModel)
        {
            bool bolResult = false;

            if (CurrentTalkStatus != Enum_TalkStatus.Null)  //处于对讲中 先关闭
            {
                StopTalk();
            }
            StartTalking(null);
            NET_DVR_DEVICEINFO_V30 dev = new NET_DVR_DEVICEINFO_V30();

            _intDVRHwd    = NET_DVR_Login_V30(CurrentVideoInfo.DVSAddress, CurrentVideoInfo.DVSConnectPort, CurrentVideoInfo.UserName, CurrentVideoInfo.Password, ref dev);
            VoiceCallBack = new fVoiceDataCallBack(MyRealDataCallBack);
            _intTalkHwd   = NET_DVR_StartVoiceCom(_intDVRHwd, VoiceCallBack, 0);
            NET_DVR_SetVoiceComClientVolume(_intTalkHwd, 65530);
            CurrentTalkStatus = (Enum_TalkStatus)(int)talkModel;
            return(bolResult);
        }
Пример #6
0
        public Camera(string ipAddress, short port, string userName, string password)
        {
            DVRIPAddress  = ipAddress;
            DVRPortNumber = port;
            DVRUserName   = userName;
            DVRPassword   = password;

            DeviceInfo = new NET_DVR_DEVICEINFO_V30();

            RealPlayHandle = -1;
            PlaybackHandle = -1;
            DownloadHandle = -1;

            x1 = 0;
            y1 = 0;

            x2 = 0;
            y2 = 0;
        }
Пример #7
0
        /// <summary>
        /// 获取模拟通道信息
        /// </summary>
        /// <param name="info">登录设备时的UseInfo对象</param>
        /// <returns>通道属性对象集合</returns>
        private List <ChannelState> GetAnalogChannelInfo(ref DvrUseInfo info)
        {
            NET_DVR_IPPARACFG_V40  m_struIpParaCfgV40 = new NET_DVR_IPPARACFG_V40();
            NET_DVR_DEVICEINFO_V30 deviceInfo         = new NET_DVR_DEVICEINFO_V30();
            List <ChannelState>    states             = new List <ChannelState>();
            uint dwSize = (uint)Marshal.SizeOf(m_struIpParaCfgV40);

            IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize);

            Marshal.StructureToPtr(m_struIpParaCfgV40, ptrIpParaCfgV40, false);

            uint dwReturn = 0;

            if (!HikApi.NET_DVR_GetDVRConfig(info.UserId, NET_DVR_GET_IPPARACFG_V40, -1, ptrIpParaCfgV40, dwSize, ref dwReturn))
            {
                return(states);
            }
            else
            {
                m_struIpParaCfgV40 = (NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(NET_DVR_IPPARACFG_V40));
                for (int i = 0; i < dwAChanTotalNum; i++)
                {
                    ChannelState state = new ChannelState()
                    {
                        Num = i + 1, IsIpChannel = false
                    };
                    if (m_struIpParaCfgV40.byAnalogChanEnable[i] == 0)
                    {
                        state.IsEnabled = false;  //通道已被禁用 This channel has been disabled
                    }
                    else
                    {
                        state.IsEnabled = true;  //通道处于启用状态
                    }
                    states.Add(state);
                    iChannelNum[i] = i + (int)deviceInfo.byStartChan;
                }
            }
            Marshal.FreeHGlobal(ptrIpParaCfgV40);
            return(states);
        }
Пример #8
0
        /// <summary>
        /// 海康视频播放
        /// </summary>
        public void HikDVR_VideoPlay()
        {
            NET_DVR_DEVICEINFO_V30 dev = new NET_DVR_DEVICEINFO_V30();

            _intDVRHwd = NET_DVR_Login_V30(CurrentVideoInfo.DVSAddress, CurrentVideoInfo.DVSConnectPort, CurrentVideoInfo.UserName, CurrentVideoInfo.Password, ref dev);
            if (_intDVRHwd < 0)
            {
                //登陆失败
                return;
            }
            return;

            NET_DVR_PREVIEWINFO lpPreviewInfo = new NET_DVR_PREVIEWINFO();

            lpPreviewInfo.hPlayWnd     = pictureBox1.Handle; //预览窗口
            lpPreviewInfo.lChannel     = CurrentCameraInfo.Channel;
            lpPreviewInfo.dwStreamType = 0;                  //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode   = 0;                  //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked     = true;               //0- 非阻塞取流,1- 阻塞取流


            //NET_DVR_CLIENTINFO cli = new NET_DVR_CLIENTINFO();
            //cli.lLinkMode = 0;// 设置连接方式  /*  最高位(31)为 0 表示主码流,为 1 表示子码流,0-30 位表示码流连接方式:0:TCP方式,1:UDP 方式,2:多播方式,3 - RTP方式,4—音视频分开 */
            //cli.lChannel = channel + 32;
            //cli.hPlayWnd = playHandle;

            // 开始播放视频
            //Thread.Sleep(50);
            IntPtr           pUser    = new IntPtr();
            REALDATACALLBACK RealData = new REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数

            //intRet = NET_DVR_RealPlay_V30(_intDVRHwd, ref cli, null, pUser, 1);//130814
            intRet = NET_DVR_RealPlay_V40(_intDVRHwd, ref lpPreviewInfo, null, pUser); //140521
            //intRet = NET_DVR_RealPlay(_intDVRHwd, ref cli);//130814
            NET_DVR_OpenSound(intRet);                                                 //140609
            if (intRet < 0)
            {
                return;
            }
        }
Пример #9
0
        /// <summary>
        ///  登录设备
        /// </summary>
        /// <param name="deviceIp">设备ip</param>
        /// <param name="userName">用户账号</param>
        /// <param name="userPwd">用户密码</param>
        /// <param name="userId">输出用户id</param>
        /// <param name="port">通讯端口</param>
        /// <returns>TRUE:成功 FALSE:失败</returns>
        public static bool LoginDevice(string deviceIp, string userName, string userPwd, ref int userId, short port = 8000)
        {
            if (deviceIp == "" || port < 0 || userName == "" || userPwd == "")
            {
                return(false);
            }
            string DVRIPAddress  = deviceIp;
            Int16  DVRPortNumber = port;
            string DVRUserName   = userName;
            string DVRPassword   = userPwd;

            //登录设备 Login the device
            NET_DVR_DEVICEINFO_V30 m_struDeviceInfo = new NET_DVR_DEVICEINFO_V30();

            userId = HikApi.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo);
            if (userId == -1)
            {
                //iLastErr = NET_DVR_GetLastError();
                //strErr = "NET_DVR_Login_V30 failed, error code= " + iLastErr;
                //登录失败,输出错误号 Failed to login and output the error code
                return(false);
            }
            return(true);
        }
Пример #10
0
        /// <summary>
        /// 登录设备
        /// </summary>
        /// <param name="info">登录设备所需的信息</param>
        /// <returns>true:成功,false:失败</returns>
        public bool Login(ref DvrUseInfo info)
        {
            bool b = false;

            if (info.UserId <= -1)
            {
                string DVRIPAddress  = info.DvrIp;                            //设备IP地址或者域名
                short  DVRPortNumber = short.Parse(info.DvrPoint.ToString()); //设备服务端口号
                string DVRUserName   = info.UserName;                         //设备登录用户名
                string DVRPassword   = info.UserPwd;                          //设备登录密码
                NET_DVR_DEVICEINFO_V30 DeviceInfo = new NET_DVR_DEVICEINFO_V30();
                //登录设备 Login the device
                info.UserId = HikApi.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref DeviceInfo);
                if (info.UserId < 0)
                {
                    b = false;
                }
                else
                {
                    b = true;
                }
            }
            return(b);
        }
Пример #11
0
        private void FrmRecordPlay_Load(object sender, EventArgs e)
        {
            VideoInfo v = TestDataSource.HikDataSource.GetHikData1();

            CheckForIllegalCrossThreadCalls = false;
            bool bolResult = NET_DVR_Init();//初始化SDK
            NET_DVR_DEVICEINFO_V30 DeviceInfo = new NET_DVR_DEVICEINFO_V30();

            //登录设备
            m_lUserID = NET_DVR_Login_V30(v.DVSAddress, v.DVSConnectPort, v.UserName, v.Password, ref DeviceInfo);
            if (m_lUserID < 0)
            {
                //int iError=NET_DVR_GetLastError();//错误返回值
                MessageBox.Show("设备登录失败,请检查网络或者参数是否错误!");
                return;
            }

            sTime = DateTime.Now.AddDays(-1);
            NET_DVR_TIME Stime = new NET_DVR_TIME();

            Stime.dwYear   = uint.Parse(sTime.Year.ToString());
            Stime.dwMonth  = uint.Parse(sTime.Month.ToString());
            Stime.dwDay    = uint.Parse(sTime.Day.ToString());
            Stime.dwHour   = uint.Parse(sTime.Hour.ToString());
            Stime.dwMinute = uint.Parse(sTime.Minute.ToString());
            Stime.dwSecond = uint.Parse(sTime.Second.ToString());
            eTime          = DateTime.Now.AddDays(1);
            NET_DVR_TIME Etime = new NET_DVR_TIME();

            Etime.dwYear    = uint.Parse(eTime.Year.ToString());
            Etime.dwMonth   = uint.Parse(eTime.Month.ToString());
            Etime.dwDay     = uint.Parse(eTime.Day.ToString());
            Etime.dwHour    = uint.Parse(eTime.Hour.ToString());
            Etime.dwMinute  = uint.Parse(eTime.Minute.ToString());
            Etime.dwSecond  = uint.Parse(eTime.Second.ToString());
            iFindfileHandle = NET_DVR_FindFile(m_lUserID, _iChannel, 0xff, ref Stime, ref Etime);

            if (iFindfileHandle == -1)
            {
                MessageBox.Show("没有电子标签录像文件,请注意");
                return;
            }
            else
            {
            }
            NET_DVR_FIND_DATA FindNextFile = new NET_DVR_FIND_DATA();

Label_017C:
            switch (NET_DVR_FindNextFile(this.iFindfileHandle, ref FindNextFile))
            {
            case 1000:
            {
                string[] str = { FindNextFile.sFileName.ToString() + ".mp4", FindNextFile.dwFileSize.ToString() + "MB" };
                AddListViewItem(lvFlieList, str, Color.Black, Color.White);
                goto Label_017C;
            }

            case 1002:
                System.Threading.Thread.Sleep(5);
                goto Label_017C;
            }
            NET_DVR_FindClose(this.iFindfileHandle);
            m_lPlayHandle = NET_DVR_PlayBackByTime(m_lUserID, _iChannel, ref Stime, ref Etime, pBPlay.Handle);
            if (m_lPlayHandle == -1)
            {
                MessageBox.Show("录像文件回放失败!");
            }
            int lpOutValue = -1;

            // 录像文件播放
            if (!NET_DVR_PlayBackControl(m_lPlayHandle, 1, 0, ref lpOutValue))
            {
                MessageBox.Show("文件播放失败!");
            }
            // 返回文件的总时间
            //NET_DVR_PlayBackControl(m_lPlayHandle, 17, 0, ref totalTime);
            _bytime = true;
        }
Пример #12
0
 public static extern Int32 NET_DVR_Login_V30(string sDVRIP, Int32 wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo);
Пример #13
0
        public bool VideoPlay()
        {
            if (VideoPlayState == Enum_VideoPlayState.InPlayState)
            {
                VideoClose();
            }
            bool bolResult             = false;
            NET_DVR_DEVICEINFO_V30 dev = new NET_DVR_DEVICEINFO_V30();

            _intDVRHwd = NET_DVR_Login_V30(CurrentVideoInfo.DVSAddress, CurrentVideoInfo.DVSConnectPort, CurrentVideoInfo.UserName, CurrentVideoInfo.Password, ref dev);

            if (_intDVRHwd >= 0)
            {
                DebugRelevant.DebugLog(this, "Hik:设备登陆成功:" + CurrentVideoInfo.DVSAddress);
                DebugRelevant.DebugLog(this, "Hik:设备信息:" + JsonConvert.SerializeObject(dev));
                dwAChanTotalNum = (uint)dev.byChanNum;
                if (dev.byIPChanNum > 0)
                {
                    InfoIPChannel();
                }
                else
                {
                    for (iip = 0; iip < dwAChanTotalNum; iip++)
                    {
                        iChannelNum[iip] = iip + (int)dev.byStartChan;
                    }
                }

                for (int i = 0; i < iChannelNum.Length; i++)
                {
                    DebugRelevant.DebugLog(this, "Hik:设备通道信息:" + "Index[" + i + "]" + iChannelNum[i]);
                }

                NET_DVR_PREVIEWINFO lpPreviewInfo = new NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd = intptrPlayMain;//预览窗口
                if (dev.byIPChanNum == 0)
                {
                    lpPreviewInfo.lChannel = CurrentCameraInfo.Channel;
                    //SaveNetLog("播放通道" + channel.ToString());
                }
                else
                {
                    lpPreviewInfo.lChannel = iChannelNum[CurrentCameraInfo.Channel - 1];
                }
                if (CurrentVideoPlaySet.PlayStream == Enum_VideoStream.MainStream)
                {
                    lpPreviewInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                    videoStream = Enum_VideoStream.MainStream;
                }
                else
                {
                    lpPreviewInfo.dwStreamType = 1;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                    videoStream = Enum_VideoStream.SubStream;
                }
                lpPreviewInfo.dwLinkMode = 0;    //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked   = true; //0- 非阻塞取流,1- 阻塞取流


                //NET_DVR_CLIENTINFO cli = new NET_DVR_CLIENTINFO();
                //cli.lLinkMode = 0;// 设置连接方式  /*  最高位(31)为 0 表示主码流,为 1 表示子码流,0-30 位表示码流连接方式:0:TCP方式,1:UDP 方式,2:多播方式,3 - RTP方式,4—音视频分开 */
                //cli.lChannel = channel + 32;
                //cli.hPlayWnd = playHandle;

                // 开始播放视频
                //Thread.Sleep(50);



                DebugRelevant.DebugLog(this, "Hik:真实播放通道号:" + lpPreviewInfo.lChannel);
                IntPtr           pUser    = new IntPtr();
                REALDATACALLBACK RealData = new REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数

                //intRet = NET_DVR_RealPlay_V30(_intDVRHwd, ref cli, null, pUser, 1);//130814
                intRet = NET_DVR_RealPlay_V40(_intDVRHwd, ref lpPreviewInfo, null, pUser);//140521


                if (intRet != -1)
                {
                    if (CurrentVideoPlaySet.VideoMonitorEnable)
                    {
                        OpenSound();
                    }
                    VideoPlayCallback(new VideoPlayCallbackValue {
                        evType = Enum_VideoPlayEventType.VideoPlay
                    });
                    VideoPlayState = Enum_VideoPlayState.InPlayState;
                    if (CurrentVideoPlaySet.VideoRecordEnable)
                    {
                        StartVideoRecord(CurrentVideoPlaySet.VideoRecordFilePath);
                    }
                }
                else
                {
                    VideoPlayCallback(new VideoPlayCallbackValue {
                        evType = Enum_VideoPlayEventType.VideoPlayException
                    });
                }
            }
            else
            {
                VideoPlayCallback(new VideoPlayCallbackValue {
                    evType = Enum_VideoPlayEventType.DevLoginException
                });
                //登陆失败
                bolResult = false;
            }



            return(bolResult);
        }
Пример #14
0
 public void LoginResultCallBack(int lUserID, int dwResult, NET_DVR_DEVICEINFO_V30 lpDeviceInfo, IntPtr pUser)
 {
     Console.WriteLine("LoginResultCallBack");
 }
Пример #15
0
        public void InfoIPChannel()
        {
            NET_DVR_IPPARACFG_V40  m_struIpParaCfgV40 = new NET_DVR_IPPARACFG_V40();
            NET_DVR_DEVICEINFO_V30 DeviceInfo         = new NET_DVR_DEVICEINFO_V30();
            NET_DVR_STREAM_MODE    m_struStreamMode   = new NET_DVR_STREAM_MODE();
            NET_DVR_IPCHANINFO     m_struChanInfo     = new NET_DVR_IPCHANINFO();

            NET_DVR_IPCHANINFO_V40 m_struChanInfoV40 = new NET_DVR_IPCHANINFO_V40();

            uint dwSize = (uint)Marshal.SizeOf(m_struIpParaCfgV40);

            IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize);

            Marshal.StructureToPtr(m_struIpParaCfgV40, ptrIpParaCfgV40, false);

            uint dwReturn = 0;

            if (!NET_DVR_GetDVRConfig(_intDVRHwd, NET_DVR_GET_IPPARACFG_V40, 0, ptrIpParaCfgV40, dwSize, ref dwReturn))
            {
            }
            else
            {
                m_struIpParaCfgV40 = (NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(NET_DVR_IPPARACFG_V40));

                for (iip = 0; iip < dwAChanTotalNum; iip++)
                {
                    iChannelNum[iip] = iip + (int)DeviceInfo.byStartChan + 1;
                    //iChannelNum[iip] = iip + (int)DeviceInfo.byStartChan;
                }

                byte byStreamType;
                for (iip = 0; iip < m_struIpParaCfgV40.dwDChanNum; iip++)
                {
                    iChannelNum[iip + dwAChanTotalNum] = iip + (int)m_struIpParaCfgV40.dwStartDChan;
                    byStreamType = m_struIpParaCfgV40.struStreamMode[iip].byGetStreamType;
                    switch (byStreamType)
                    {
                    //目前NVR仅支持0- 直接从设备取流一种方式 NVR supports only one mode: 0- get stream from device directly
                    case 0:
                        dwSize = (uint)Marshal.SizeOf(m_struStreamMode);
                        IntPtr ptrChanInfo = Marshal.AllocHGlobal((Int32)dwSize);
                        Marshal.StructureToPtr(m_struIpParaCfgV40.struStreamMode[iip].uGetStream, ptrChanInfo, false);
                        m_struChanInfo = (NET_DVR_IPCHANINFO)Marshal.PtrToStructure(ptrChanInfo, typeof(NET_DVR_IPCHANINFO));
                        Marshal.FreeHGlobal(ptrChanInfo);
                        break;

                    case 6:
                        IntPtr ptrChanInfoV40 = Marshal.AllocHGlobal((Int32)dwSize);
                        Marshal.StructureToPtr(m_struIpParaCfgV40.struStreamMode[iip].uGetStream, ptrChanInfoV40, false);
                        m_struChanInfoV40 = (NET_DVR_IPCHANINFO_V40)Marshal.PtrToStructure(ptrChanInfoV40, typeof(NET_DVR_IPCHANINFO_V40));

                        //列出IP通道 List the IP channel
                        //iIPDevID[i] = m_struChanInfoV40.wIPID - iGroupNo * 64 - 1;

                        Marshal.FreeHGlobal(ptrChanInfoV40);
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Пример #16
0
 public static extern int NET_DVR_Login_V30(string sDVRIP, Int16 wDVRPort, string sUserName, string sPassword, NET_DVR_DEVICEINFO_V30 lpDeviceInfo);
Пример #17
0
 static extern int NET_DVR_Login_V30(string cameraAddress, int cameraPort, string userName, string userPassword, out NET_DVR_DEVICEINFO_V30 cameraInfo);
Пример #18
0
 private static extern int NET_DVR_Login_V30(string sDVRIP, int wDVRPort, string sUserName, string sPassword, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo);