1. 程式人生 > >利用海康威視sdk 預覽攝像機

利用海康威視sdk 預覽攝像機

using PreviewDemo;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WindowsFormsApplication26
{
    public partial class Form1 : Form
    {
        private bool m_bInitSDK = false;
        public CHCNetSDK.NET_DVR_DEVICEINFO_V30 m_struDeviceInfo;
        private IntPtr m_ptrRealHandle;
        private CHCNetSDK.REALDATACALLBACK m_fRealData = null;
        private Int32 m_lRealHandle = -1;
        public Int32 m_lUserID = -1;
        public Form1()
        {
            InitializeComponent();
            m_bInitSDK = CHCNetSDK.NET_DVR_Init();
            ConsoleEx.AllocConsole();//開啟控制檯
            Console.Write(m_bInitSDK);
            if (m_bInitSDK == false)
            {
                MessageBox.Show("NET_DVR_Init error!");
                return;
            }
            else
            {
                //儲存SDK日誌 To save the SDK log
                  CHCNetSDK.NET_DVR_SetLogToFile(3, "C:\\SdkLog\\", true);
            }
        }


        private void b_Click(object sender, EventArgs e)
        {
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();


            lpClientInfo.lChannel = 1;
            lpClientInfo.lLinkMode = 0x0000;
            lpClientInfo.sMultiCastIP = "";


            lpClientInfo.hPlayWnd = p.Handle;
            m_ptrRealHandle = p.Handle;
            m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
            IntPtr pUser = new IntPtr();
            m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null/*m_fRealData*/, pUser, 1);




            if (m_lRealHandle == -1)
            {
                uint nError = CHCNetSDK.NET_DVR_GetLastError();
                
                return;
            }
        }
        private void btnLogin_Click(object sender, System.EventArgs e)
        {
           
            string DVRIPAddress = "192.168.1.62";
            Int16 DVRPortNumber = Int16.Parse("8000");
            string DVRUserName = "admin";
            string DVRPassword = "admin12345";
            m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo);
            if (m_lUserID == -1)
            {
                MessageBox.Show("login error!");
                return;
            }
            else
            {
                
                MessageBox.Show("Login Success!");
            }


        }
        public void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, ref byte pBuffer, UInt32 dwBufSize, IntPtr pUser)
        {
            //    MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);
            //    switch (dwDataType)
            //    {
            //        case CHCNetSDK.NET_DVR_SYSHEAD:     // sys head
            //            if (!PlayCtrl.PlayM4_GetPort(ref m_lPort))
            //            {
            //                MessageBox.Show("Get Port Fail");
            //            }


            //            if (dwBufSize > 0)
            //              {
            //                //set as stream mode, real-time stream under preview
            //                if (!PlayCtrl.PlayM4_SetStreamOpenMode(m_lPort, PlayCtrl.STREAME_REALTIME))
            //                {
            //                    this.BeginInvoke(AlarmInfo, "PlayM4_SetStreamOpenMode fail");
            //                }
            //                //start player
            //                if (!PlayCtrl.PlayM4_OpenStream(m_lPort, ref pBuffer, dwBufSize, 1024 * 1024))
            //                {
            //                    m_lPort = -1;
            //                    this.BeginInvoke(AlarmInfo, "PlayM4_OpenStream fail");
            //                    break;
            //                }
            //set soft decode display callback function to capture
            //                m_fDisplayFun = new PlayCtrl.DISPLAYCBFUN(RemoteDisplayCBFun);
            //                if (!PlayCtrl.PlayM4_SetDisplayCallBack(m_lPort, m_fDisplayFun))
            //                {
            //                    this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayCallBack fail");
            //                }


            //start play, set play window
            //                this.BeginInvoke(AlarmInfo, "About to call PlayM4_Play");


            //                if (!PlayCtrl.PlayM4_Play(m_lPort, m_ptrRealHandle))
            //                {
            //                    m_lPort = -1;
            //                    this.BeginInvoke(AlarmInfo, "PlayM4_Play fail");
            //                    break;
            //                }


            //set frame buffer number


            //                if (!PlayCtrl.PlayM4_SetDisplayBuf(m_lPort, 15))
            //                {
            //                    this.BeginInvoke(AlarmInfo, "PlayM4_SetDisplayBuf fail");
            //                }


            //set display mode
            //                if (!PlayCtrl.PlayM4_SetOverlayMode(m_lPort, 0, 0/* COLORREF(0)*/))//play off screen // todo!!!
            //                {
            //                    this.BeginInvoke(AlarmInfo, " PlayM4_SetOverlayMode fail");
            //                }
            //            }


            //            break;
            //        case CHCNetSDK.NET_DVR_STREAMDATA:     // video stream data
            //            if (dwBufSize > 0 && m_lPort != -1)
            //            {
            //                if (!PlayCtrl.PlayM4_InputData(m_lPort, ref pBuffer, dwBufSize))
            //                {
            //                    this.BeginInvoke(AlarmInfo, " PlayM4_InputData fail");
            //                }
            //            }
            //            break;


            //        case CHCNetSDK.NET_DVR_AUDIOSTREAMDATA:     //  Audio Stream Data
            //            if (dwBufSize > 0 && m_lPort != -1)
            //            {
            //                if (!PlayCtrl.PlayM4_InputVideoData(m_lPort, ref pBuffer, dwBufSize))
            //                {
            //                   this.BeginInvoke(AlarmInfo, "PlayM4_InputVideoData Fail");
            //                }
            //            }


            //            break;
            //        default:
            //            break;
            //    } */


        }
    }
     
    
    public class ConsoleEx
    {
        /// <summary>
        /// 啟動控制檯
        /// </summary>
        [DllImport("kernel32.dll")]
        public static extern bool AllocConsole();


        /// <summary>
        /// 釋放控制檯
        /// </summary>
        [DllImport("kernel32.dll")]
        public static extern bool FreeConsole();
    }




    
}