示例#1
0
        /// <summary>
        /// 设置参数
        /// </summary>
        /// <param name="distance">距离</param>
        /// <param name="emissivity">发射率</param>
        /// <param name="reflectedTemperature">反射温度</param>
        /// <returns></returns>
        private Boolean Config(Single distance, Single emissivity, Single reflectedTemperature)
        {
            Int32  channelId   = 1;
            IntPtr lpOutputXml = Marshal.AllocHGlobal(1024 * 1024);

            CHCNetSDK.NET_DVR_STD_ABILITY struSTDAbility = new CHCNetSDK.NET_DVR_STD_ABILITY();
            struSTDAbility.lpCondBuffer = new IntPtr(channelId);
            struSTDAbility.dwCondSize   = sizeof(Int32);

            struSTDAbility.lpOutBuffer    = lpOutputXml;
            struSTDAbility.dwOutSize      = 1024 * 1024;
            struSTDAbility.lpStatusBuffer = lpOutputXml;
            struSTDAbility.dwStatusSize   = 1024 * 1024;

            if (!CHCNetSDK.NET_DVR_GetSTDAbility(mUserId, CHCNetSDK.NET_DVR_GET_THERMAL_CAPABILITIES, ref struSTDAbility))
            {
                Marshal.FreeHGlobal(lpOutputXml);
                lpOutputXml = IntPtr.Zero;
                return(false);
            }

            CHCNetSDK.NET_DVR_XML_CONFIG_INPUT  struInput = new CHCNetSDK.NET_DVR_XML_CONFIG_INPUT();
            CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struOuput = new CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
            struInput.dwSize          = (uint)Marshal.SizeOf(struInput);
            struOuput.dwSize          = (uint)Marshal.SizeOf(struOuput);
            struOuput.lpOutBuffer     = lpOutputXml;
            struOuput.dwOutBufferSize = 1024 * 1024;

            string szUrl = "GET /ISAPI/Thermal/channels/1/streamParam/capabilities";

            struInput.lpRequestUrl    = szUrl;
            struInput.dwRequestUrlLen = (uint)szUrl.Length;
            struInput.lpInBuffer      = null;
            struInput.dwInBufferSize  = 0;
            if (!CHCNetSDK.NET_DVR_STDXMLConfig(mUserId, ref struInput, ref struOuput))
            {
                Marshal.FreeHGlobal(lpOutputXml);
                lpOutputXml = IntPtr.Zero;
                return(false);
            }

            szUrl = "GET /ISAPI/Thermal/channels/1/streamParam";
            struInput.lpRequestUrl    = szUrl;
            struInput.dwRequestUrlLen = (uint)szUrl.Length;
            struInput.lpInBuffer      = null;
            struInput.dwInBufferSize  = 0;
            if (!CHCNetSDK.NET_DVR_STDXMLConfig(mUserId, ref struInput, ref struOuput))
            {
                Marshal.FreeHGlobal(lpOutputXml);
                lpOutputXml = IntPtr.Zero;
                return(false);
            }

            szUrl = "PUT /ISAPI/Thermal/channels/1/streamParam";
            struInput.lpRequestUrl    = szUrl;
            struInput.dwRequestUrlLen = (uint)szUrl.Length;
            string szThermalStreamParam =
                "<ThermalStreamParam version=\"2.0\" xmlns=\"http://www.isapi.org/ver20/XMLSchema\"><videoCodingType>pixel-to-pixel_thermometry_data</videoCodingType></ThermalStreamParam>";

            struInput.lpInBuffer     = szThermalStreamParam;
            struInput.dwInBufferSize = (uint)szThermalStreamParam.Length;
            if (!CHCNetSDK.NET_DVR_STDXMLConfig(mUserId, ref struInput, ref struOuput))
            {
                Marshal.FreeHGlobal(lpOutputXml);
                lpOutputXml = IntPtr.Zero;
                return(false);
            }

            szUrl = "GET /ISAPI/Thermal/channels/1/thermometry/pixelToPixelParam/capabilities";
            struInput.lpRequestUrl    = szUrl;
            struInput.dwRequestUrlLen = (uint)szUrl.Length;
            struInput.lpInBuffer      = null;
            struInput.dwInBufferSize  = 0;
            if (!CHCNetSDK.NET_DVR_STDXMLConfig(mUserId, ref struInput, ref struOuput))
            {
                Marshal.FreeHGlobal(lpOutputXml);
                lpOutputXml = IntPtr.Zero;
                return(false);
            }

            szUrl = "GET /ISAPI/Thermal/channels/1/thermometry/pixelToPixelParam";
            struInput.lpRequestUrl    = szUrl;
            struInput.dwRequestUrlLen = (uint)szUrl.Length;
            struInput.lpInBuffer      = null;
            struInput.dwInBufferSize  = 0;
            if (!CHCNetSDK.NET_DVR_STDXMLConfig(mUserId, ref struInput, ref struOuput))
            {
                Marshal.FreeHGlobal(lpOutputXml);
                lpOutputXml = IntPtr.Zero;
                return(false);
            }

            szUrl = "GET /ISAPI/Thermal/channels/1/thermometry/pixelToPixelParam";
            struInput.lpRequestUrl    = szUrl;
            struInput.dwRequestUrlLen = (uint)szUrl.Length;
            string szPixelToPixelParamFormat =
                "<?xml version=\"1.0\" encoding=\"UTF - 8\"?>" +
                "<PixelToPixelParam version = \"2.0\" xmlns = \"http://www.hikvision.com/ver20/XMLSchema\">" +
                "<id>1</id>" +
                "<maxFrameRate>0</maxFrameRate>" +
                "<reflectiveEnable>false</reflectiveEnable>" +
                "<reflectiveTemperature>{0:F2}</reflectiveTemperature>" +
                "<emissivity>{1:F2}</emissivity>" +
                "<distance>{2:D}</distance>" +
                "<refreshInterval>0</refreshInterval>" +
                "</PixelToPixelParam>";

            string szPixelToPixelParam = string.Format(szPixelToPixelParamFormat, reflectedTemperature, emissivity, (Int32)distance);

            struInput.lpInBuffer     = szPixelToPixelParam;
            struInput.dwInBufferSize = (uint)szPixelToPixelParam.Length;
            if (!CHCNetSDK.NET_DVR_STDXMLConfig(mUserId, ref struInput, ref struOuput))
            {
                Marshal.FreeHGlobal(lpOutputXml);
                lpOutputXml = IntPtr.Zero;
                return(false);
            }

            Marshal.FreeHGlobal(lpOutputXml);
            lpOutputXml = IntPtr.Zero;

            CHCNetSDK.NET_DVR_FOCUSMODE_CFG cfg = new CHCNetSDK.NET_DVR_FOCUSMODE_CFG();
            uint   returnBytes = 0;
            int    outSize     = Marshal.SizeOf(cfg);
            IntPtr outBuffer   = Marshal.AllocHGlobal(outSize);

            Marshal.StructureToPtr(cfg, outBuffer, false);
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(mUserId, CHCNetSDK.NET_DVR_GET_FOCUSMODECFG, 1, outBuffer, (uint)outSize, ref returnBytes))
            {
                Marshal.FreeHGlobal(outBuffer);
                outBuffer = IntPtr.Zero;
                return(false);
            }

            cfg.byFocusMode = 2;
            bool ret = CHCNetSDK.NET_DVR_SetDVRConfig(mUserId, CHCNetSDK.NET_DVR_SET_FOCUSMODECFG, 1, outBuffer, (uint)outSize);

            Marshal.FreeHGlobal(outBuffer);
            outBuffer = IntPtr.Zero;

            return(ret);
        }