Exemplo n.º 1
0
        public static int StringGet(string IP, int m_lChannel)
        {
            UInt32 dwReturn      = 0;
            Int32  nSize         = Marshal.SizeOf(m_struShowStrCfg);
            IntPtr ptrShowStrCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struShowStrCfg, ptrShowStrCfg, false);
            int mUserID = -1;

            if (MediaData.Device_UserID_Alarm.ContainsKey(IP))
            {
                mUserID = MediaData.Device_UserID_Alarm[IP].UserID;
            }
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(mUserID, CHCNetSDK.NET_DVR_GET_SHOWSTRING_V30, m_lChannel, ptrShowStrCfg, (UInt32)nSize, ref dwReturn))
            {
                uint   iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                string strErr   = "NET_DVR_GET_SHOWSTRING_V30 failed, error code= " + iLastErr;
                //获取字符叠加参数失败,输出错误号 Failed to get overlay parameters and output the error code
                return(int.Parse(iLastErr.ToString()));
            }
            else
            {
                m_struShowStrCfg = (CHCNetSDK.NET_DVR_SHOWSTRING_V30)Marshal.PtrToStructure(ptrShowStrCfg, typeof(CHCNetSDK.NET_DVR_SHOWSTRING_V30));
                return(1);
            }
            Marshal.FreeHGlobal(ptrShowStrCfg);
        }
Exemplo n.º 2
0
        private void btnShowStringGet_Click(object sender, EventArgs e)
        {
            UInt32 dwReturn      = 0;
            Int32  nSize         = Marshal.SizeOf(m_struShowStrCfg);
            IntPtr ptrShowStrCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struShowStrCfg, ptrShowStrCfg, false);
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_SHOWSTRING_V30, m_lChannel, ptrShowStrCfg, (UInt32)nSize, ref dwReturn))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                strErr   = "NET_DVR_GET_SHOWSTRING_V30 failed, error code= " + iLastErr;
                //获取字符叠加参数失败,输出错误号 Failed to get overlay parameters and output the error code
                MessageBox.Show(strErr);
            }
            else
            {
                m_struShowStrCfg = (CHCNetSDK.NET_DVR_SHOWSTRING_V30)Marshal.PtrToStructure(ptrShowStrCfg, typeof(CHCNetSDK.NET_DVR_SHOWSTRING_V30));

                checkBoxOSD1.Checked = (m_struShowStrCfg.struStringInfo[0].wShowString == 1);
                textBoxOSD1.Text     = m_struShowStrCfg.struStringInfo[0].sString;
                textBoxOSD1X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[0].wShowStringTopLeftX);
                textBoxOSD1Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[0].wShowStringTopLeftY);

                checkBoxOSD2.Checked = (m_struShowStrCfg.struStringInfo[1].wShowString == 1);
                textBoxOSD2.Text     = m_struShowStrCfg.struStringInfo[1].sString;
                textBoxOSD2X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[1].wShowStringTopLeftX);
                textBoxOSD2Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[1].wShowStringTopLeftY);

                checkBoxOSD3.Checked = (m_struShowStrCfg.struStringInfo[2].wShowString == 1);
                textBoxOSD3.Text     = m_struShowStrCfg.struStringInfo[2].sString;
                textBoxOSD3X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[2].wShowStringTopLeftX);
                textBoxOSD3Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[2].wShowStringTopLeftY);

                checkBoxOSD4.Checked = (m_struShowStrCfg.struStringInfo[3].wShowString == 1);
                textBoxOSD4.Text     = m_struShowStrCfg.struStringInfo[3].sString;
                textBoxOSD4X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[3].wShowStringTopLeftX);
                textBoxOSD4Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[3].wShowStringTopLeftY);

                checkBoxOSD5.Checked = (m_struShowStrCfg.struStringInfo[4].wShowString == 1);
                textBoxOSD5.Text     = m_struShowStrCfg.struStringInfo[4].sString;
                textBoxOSD5X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[4].wShowStringTopLeftX);
                textBoxOSD5Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[4].wShowStringTopLeftY);

                checkBoxOSD6.Checked = (m_struShowStrCfg.struStringInfo[5].wShowString == 1);
                textBoxOSD6.Text     = m_struShowStrCfg.struStringInfo[5].sString;
                textBoxOSD6X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[5].wShowStringTopLeftX);
                textBoxOSD6Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[5].wShowStringTopLeftY);

                checkBoxOSD7.Checked = (m_struShowStrCfg.struStringInfo[6].wShowString == 1);
                textBoxOSD7.Text     = m_struShowStrCfg.struStringInfo[6].sString;
                textBoxOSD7X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[6].wShowStringTopLeftX);
                textBoxOSD7Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[6].wShowStringTopLeftY);

                checkBoxOSD8.Checked = (m_struShowStrCfg.struStringInfo[7].wShowString == 1);
                textBoxOSD8.Text     = m_struShowStrCfg.struStringInfo[7].sString;
                textBoxOSD8X.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[7].wShowStringTopLeftX);
                textBoxOSD8Y.Text    = Convert.ToString(m_struShowStrCfg.struStringInfo[7].wShowStringTopLeftY);
            }
            Marshal.FreeHGlobal(ptrShowStrCfg);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取字符叠加配置
        /// </summary>
        private void GetConfig()
        {
            UInt32 dwReturn      = 0;
            Int32  nSize         = Marshal.SizeOf(m_struShowStrCfg);
            IntPtr ptrShowStrCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struShowStrCfg, ptrShowStrCfg, false);
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(_userID, CHCNetSDK.NET_DVR_GET_SHOWSTRING_V30, int.Parse(_cameraCfg.Channel), ptrShowStrCfg, (UInt32)nSize, ref dwReturn))
            {
            }
            else
            {
                m_struShowStrCfg = (CHCNetSDK.NET_DVR_SHOWSTRING_V30)Marshal.PtrToStructure(ptrShowStrCfg, typeof(CHCNetSDK.NET_DVR_SHOWSTRING_V30));
            }
            Marshal.FreeHGlobal(ptrShowStrCfg);

            //
        }
Exemplo n.º 4
0
        public bool InitShowStr()
        {
            UInt32 dwReturn      = 0;
            Int32  nSize         = Marshal.SizeOf(m_struShowStrCfg);
            IntPtr ptrShowStrCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struShowStrCfg, ptrShowStrCfg, false);

            if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_SHOWSTRING_V30, m_lChannel, ptrShowStrCfg, (UInt32)nSize, ref dwReturn))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                string strErr = "NET_DVR_GET_SHOWSTRING_V30 failed, error code= " + iLastErr;
                //获取字符叠加参数失败,输出错误号 Failed to get overlay parameters and output the error code
                MessageBox.Show(strErr);
            }
            else
            {
                m_struShowStrCfg = (CHCNetSDK.NET_DVR_SHOWSTRING_V30)Marshal.PtrToStructure(ptrShowStrCfg, typeof(CHCNetSDK.NET_DVR_SHOWSTRING_V30));
            }

            Marshal.FreeHGlobal(ptrShowStrCfg);

            return(true);
        }
Exemplo n.º 5
0
        public override bool Initialilize()
        {
            LastRunTime      = DateTime.Now.Ticks / 10000;
            struIpParaCfgV40 = new CHCNetSDK.NET_DVR_IPPARACFG_V40();
            struPicCfgV40    = new CHCNetSDK.NET_DVR_PICCFG_V40();
            m_struShowStrCfg = new CHCNetSDK.NET_DVR_SHOWSTRING_V30();
            Console.WriteLine("开始初始化");
            heartbeat.Interval = 60 * 1000 * 3;
            heartbeat.Elapsed -= Heartbeat_Elapsed;
            heartbeat.Elapsed += Heartbeat_Elapsed;
            heartbeat.Start();
            if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "SdkLog\\"))
            {
                Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "SdkLog\\");
            }
            Config config = new Config(configpath)
            {
                GroupName = "service"
            };

            string[] host = config.GetSectionValues();
            if (NVRInfos == null)
            {
                CHCNetSDK.NET_DVR_SetLogToFile(0, AppDomain.CurrentDomain.BaseDirectory + "SdkLog\\", true);
                bool init = CHCNetSDK.NET_DVR_Init();
                if (!init)
                {
                    _log.Error("初始化失败" + CHCNetSDK.NET_DVR_GetLastError());
                    ErrorMsg = "初始化失败";
                    return(false);
                }

                bool retime = CHCNetSDK.NET_DVR_SetConnectTime(3000, 500);
                if (!retime)
                {
                    _log.Error("连接超时设置" + CHCNetSDK.NET_DVR_GetLastError());
                    ErrorMsg = "连接超时设置";
                }
                bool re = CHCNetSDK.NET_DVR_SetReconnect(3000, 1);
                if (!re)
                {
                    _log.Error("重连设置" + CHCNetSDK.NET_DVR_GetLastError());
                    ErrorMsg = "重连设置";
                }

                NVRInfos = new List <NVRInfo>();
            }
            for (int x = 0; x < host.Length; x++)
            {
                string name = host[x];
                config.Section = name;
                string ip       = config.GetValue("host", "ip", "192.168.2.1");
                int    port     = config.GetValue("host", "port", 8000);
                string username = config.GetValue("host", "username", "admin");
                string password = config.GetValue("host", "password", "ywwy2016");
                _log.Error(name + "." + x);
                NVRInfo nvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);

                if (nvr == null)
                {
                    nvr = new NVRInfo()
                    {
                        Host = new NVRHostHiKv()
                        {
                            DVRIPAddress = ip, DVRPassword = password, DVRPort = port, DVRUserName = username, LUserId = -1
                        }, IPCs = new List <IPC>()
                    };
                }
                CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30();
                int _login = -1;
                if (nvr.Host.LUserId > -1)
                {
                    _login = nvr.Host.LUserId;
                }
                else
                {
                    _login = CHCNetSDK.NET_DVR_Login_V30(ip, port, username, password, ref DeviceInfo);
                    Console.WriteLine(x + "登录" + _login);
                }

                if (_login >= 0)
                {
                    nvr.DeviceInfo   = DeviceInfo;
                    nvr.Host.LUserId = _login;
                    uint dwSize = (uint)Marshal.SizeOf(struIpParaCfgV40);

                    IntPtr ptrIpParaCfgV40 = Marshal.AllocHGlobal((Int32)dwSize);
                    Marshal.StructureToPtr(struIpParaCfgV40, ptrIpParaCfgV40, true);

                    uint dwReturn = 0;
                    int  iGroupNo = 0;
                    #region IPC通道
                    if (DeviceInfo.byIPChanNum > 0)
                    {
                        if (!CHCNetSDK.NET_DVR_GetDVRConfig(_login, CHCNetSDK.NET_DVR_GET_IPPARACFG_V40, iGroupNo, ptrIpParaCfgV40, dwSize, ref dwReturn))
                        {
                            ErrorMsg = "获取IPC失败." + CHCNetSDK.NET_DVR_GetLastError();
                            Console.WriteLine(ErrorMsg);
                            _log.Error(ErrorMsg);
                            Marshal.FreeHGlobal(ptrIpParaCfgV40);
                        }
                        else
                        {
                            struIpParaCfgV40 = (CHCNetSDK.NET_DVR_IPPARACFG_V40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(CHCNetSDK.NET_DVR_IPPARACFG_V40));
                            CHCNetSDK.NET_DVR_IPDEVINFO_V31[] ipdevinfos = struIpParaCfgV40.struIPDevInfo;
                            #region 获取通道信息
                            for (int m = 0; m < ipdevinfos.Length; m++)
                            {
                                CHCNetSDK.NET_DVR_GET_STREAM_UNION unionGetStream = struIpParaCfgV40.struStreamMode[m].uGetStream;
                                uint   unSize      = (uint)Marshal.SizeOf(unionGetStream);
                                IntPtr ptrChanInfo = Marshal.AllocHGlobal((Int32)unSize);
                                Marshal.StructureToPtr(unionGetStream, ptrChanInfo, true);
                                CHCNetSDK.NET_DVR_IPCHANINFO struChanInfo = (CHCNetSDK.NET_DVR_IPCHANINFO)Marshal.PtrToStructure(ptrChanInfo, typeof(CHCNetSDK.NET_DVR_IPCHANINFO));
                                IPC ipc = new IPC()
                                {
                                    AdminPort = ipdevinfos[m].wDVRPort.ToString(), ChannelIndex = m + (int)struIpParaCfgV40.dwStartDChan, ChannelIp = ipdevinfos[m].struIP.sIpV4, ChannelName = "IPCamera" + m, Status = ipdevinfos[m].byEnable, UserName = Encoding.UTF8.GetString(ipdevinfos[m].sUserName).Trim('\0')
                                };
                                #region 获取通道名称
                                if (ipc.Status == 1)
                                {
                                    Int32  nSize     = Marshal.SizeOf(struPicCfgV40);
                                    IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);
                                    Marshal.StructureToPtr(struPicCfgV40, ptrPicCfg, true);
                                    if (!CHCNetSDK.NET_DVR_GetDVRConfig(_login, CHCNetSDK.NET_DVR_GET_PICCFG_V40, ipc.ChannelIndex, ptrPicCfg, (UInt32)nSize, ref dwReturn))
                                    {
                                        ipc.ErrorMsg = CHCNetSDK.NET_DVR_GetLastError().ToString();
                                        ipc.Status   = 0;
                                        IPC oldipc = nvr.IPCs.FirstOrDefault(o => o.ChannelIp == ipc.ChannelIp);
                                        if (oldipc != null)
                                        {
                                            nvr.IPCs.Remove(oldipc);
                                        }
                                        nvr.IPCs.Add(ipc);
                                    }
                                    else
                                    {
                                        struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfg, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
                                        if (struPicCfgV40.sChanName != null)
                                        {
                                            ipc.ChannelNumber = System.Text.Encoding.GetEncoding("GBK").GetString(struPicCfgV40.sChanName).Trim('\0');
                                        }
                                        ipc.Status = struChanInfo.byEnable;
                                        _log.Info("2:" + ipc.ChannelIndex + "." + ipc.ChannelIp + "." + struChanInfo.byEnable + "." + ipc.ChannelNumber);
                                        Console.WriteLine(ipc.ChannelIndex + "." + ipc.ChannelIp + "." + struChanInfo.byEnable + "." + ipc.ChannelNumber);
                                        IPC oldipc = nvr.IPCs.FirstOrDefault(o => o.ChannelIp == ipc.ChannelIp);
                                        if (oldipc != null)
                                        {
                                            nvr.IPCs.Remove(oldipc);
                                        }
                                        nvr.IPCs.Add(ipc);
                                    }
                                    Marshal.FreeHGlobal(ptrPicCfg);
                                }
                                #endregion
                                Marshal.FreeHGlobal(ptrChanInfo);
                            }
                            #endregion
                        }

                        NVRInfo oldnvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);
                        if (nvr != null)
                        {
                            NVRInfos.Remove(oldnvr);
                        }
                        NVRInfos.Add(nvr);
                    }
                    #endregion
                    #region 其他通道
                    else
                    {
                        for (int i = 0; i < DeviceInfo.byChanNum; i++)
                        {
                            dwReturn = 0;

                            Int32  nSize     = Marshal.SizeOf(struPicCfgV40);
                            IntPtr ptrPicCfg = Marshal.AllocHGlobal(nSize);
                            Marshal.StructureToPtr(struPicCfgV40, ptrPicCfg, true);
                            int chancelid = i + DeviceInfo.byStartChan;
                            if (!CHCNetSDK.NET_DVR_GetDVRConfig(_login, CHCNetSDK.NET_DVR_GET_PICCFG_V40, chancelid, ptrPicCfg, (UInt32)nSize, ref dwReturn))
                            {
                                ErrorMsg = CHCNetSDK.NET_DVR_GetLastError().ToString();
                            }
                            else
                            {
                                struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfg, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
                                IPC ipc = new IPC()
                                {
                                    AdminPort = "", ChannelIndex = chancelid, ChannelIp = nvr.Host.DVRIPAddress, ChannelName = "IPCamera" + i, Status = 1, ChannelNumber = System.Text.Encoding.GetEncoding("GBK").GetString(struPicCfgV40.sChanName).Trim('\0')
                                };

                                IPC oldipc = nvr.IPCs.FirstOrDefault(o => o.ChannelIp == ipc.ChannelIp);
                                if (oldipc != null)
                                {
                                    nvr.IPCs.Remove(oldipc);
                                }
                                nvr.IPCs.Add(ipc);
                            }
                            NVRInfo oldnvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);
                            if (nvr != null)
                            {
                                NVRInfos.Remove(oldnvr);
                            }
                            NVRInfos.Add(nvr);
                            Marshal.FreeHGlobal(ptrPicCfg);
                        }
                    }
                    #endregion

                    Marshal.FreeHGlobal(ptrIpParaCfgV40);
                }
                else
                {
                    NVRInfo nvrerr = new NVRInfo()
                    {
                        Host = new NVRHostHiKv()
                        {
                            DVRIPAddress = ip, DVRPassword = password, DVRPort = port, DVRUserName = username, LUserId = -1
                        }, IPCs = new List <IPC>()
                    };

                    ErrorMsg             = "登录失败." + CHCNetSDK.NET_DVR_GetLastError();
                    nvrerr.Host.ErrorMsg = ErrorMsg;
                    Console.WriteLine(ErrorMsg);
                    _log.Error(ErrorMsg);
                    NVRInfo oldnvr = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == ip);
                    if (nvr != null)
                    {
                        NVRInfos.Remove(oldnvr);
                    }
                    NVRInfos.Add(nvrerr);
                }
            }
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Console.WriteLine("完成初始化");

            return(true);
        }
Exemplo n.º 6
0
        public override bool IPCOSD(string nvrip, string ipcip, string osd)
        {
            List <OSD> text = JsonConvert.DeserializeObject <List <OSD> >(osd).Take(8).ToList();
            NVRInfo    nvr  = NVRInfos.FirstOrDefault(o => o.Host.DVRIPAddress == nvrip);

            if (nvr == null)
            {
                ErrorMsg = "NVR不存在";
                _log.Error(ErrorMsg);
                return(false);
            }
            int userId = nvr.Host.LUserId;
            IPC ipc    = nvr.IPCs.FirstOrDefault(o => o.ChannelIp == ipcip);

            if (ipc == null)
            {
                ErrorMsg = "IPC不存在";
                _log.Error(ErrorMsg);
                return(false);
            }
            int    channel       = ipc.ChannelIndex;
            UInt32 dwReturn      = 0;
            Int32  nSize         = Marshal.SizeOf(m_struShowStrCfg);
            IntPtr ptrShowStrCfg = Marshal.AllocHGlobal(nSize);

            Marshal.StructureToPtr(m_struShowStrCfg, ptrShowStrCfg, true);

            _log.Debug(userId + "." + channel);
            if (!CHCNetSDK.NET_DVR_GetDVRConfig(userId, CHCNetSDK.NET_DVR_GET_SHOWSTRING_V30, channel, ptrShowStrCfg, (UInt32)nSize, ref dwReturn))
            {
                ErrorMsg = "获取设置信息失败" + CHCNetSDK.NET_DVR_GetLastError();
                _log.Error(ErrorMsg);
                Marshal.FreeHGlobal(ptrShowStrCfg);
                return(false);
            }
            else
            {
                m_struShowStrCfg = (CHCNetSDK.NET_DVR_SHOWSTRING_V30)Marshal.PtrToStructure(ptrShowStrCfg, typeof(CHCNetSDK.NET_DVR_SHOWSTRING_V30));
                Marshal.FreeHGlobal(ptrShowStrCfg);
            }
            int i = 0;

            foreach (OSD txt in text)
            {
                m_struShowStrCfg.struStringInfo[i].wShowString         = (ushort)(txt.Show == true ? 1 : 0);
                m_struShowStrCfg.struStringInfo[i].sString             = txt.Text;
                m_struShowStrCfg.struStringInfo[i].wStringSize         = (ushort)Encoding.UTF8.GetBytes(txt.Text).Length;
                m_struShowStrCfg.struStringInfo[i].wShowStringTopLeftX = UInt16.Parse(txt.X.ToString());
                m_struShowStrCfg.struStringInfo[i].wShowStringTopLeftY = UInt16.Parse(txt.Y.ToString());
                i++;
            }
            nSize         = Marshal.SizeOf(m_struShowStrCfg);
            ptrShowStrCfg = Marshal.AllocHGlobal(nSize);
            Marshal.StructureToPtr(m_struShowStrCfg, ptrShowStrCfg, true);
            if (!CHCNetSDK.NET_DVR_SetDVRConfig(userId, CHCNetSDK.NET_DVR_SET_SHOWSTRING_V30, channel, ptrShowStrCfg, (UInt32)nSize))
            {
                ErrorMsg = "设置信息失败" + CHCNetSDK.NET_DVR_GetLastError();
                _log.Error(ErrorMsg);
                Marshal.FreeHGlobal(ptrShowStrCfg);
                return(false);
            }
            else
            {
                Marshal.FreeHGlobal(ptrShowStrCfg);
                ErrorMsg = "";
                return(true);
            }
        }
Exemplo n.º 7
0
        public void Zget()
        {
            var     appSettings  = ConfigurationManager.AppSettings;
            string  WebCamip     = appSettings["WebCamip"] ?? "Not Found";
            string  WebCamport   = appSettings["WebCamport"] ?? "Not Found";
            string  WebCamUser   = appSettings["WebCamUser"] ?? "Not Found";
            string  WebCamPasswd = appSettings["WebCamPasswd"] ?? "Not Found";
            Process Rp           = new Process();

            Rp.StartInfo.FileName        = @"adb";
            Rp.StartInfo.Arguments       = @"shell am start -a android.intent.action.CALL -d tel:" + textBox3.Text;
            Rp.StartInfo.UseShellExecute = false;
            Rp.StartInfo.CreateNoWindow  = true;
            serialPort1.PortName         = comboBox1.Text;
            try
            {
                serialPort1.Open();
            }
            catch
            {
                textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  串口通信异常\n\r");
            }
            if (serialPort1.IsOpen)
            {
                while (true)
                {
                    #region GetZabbixApi
                    //TODO:判断API获取的时间是否有变动,如有变动才更新
                    #endregion
                    try
                    {
                        response = api.Call("history.get", param);
                        temp     = response.Result[0].value;
                        if (ns != response.Result[0].clock)
                        {
                            textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  当前温度:" + response.Result[0].value + "\n\r");
                            serialPort1.WriteLine(temp);
                            ns = response.Result[0].clock;
                            if (checkBox2.Checked == true)
                            {
                                CHCNetSDK.NET_DVR_Init();
                                m_lUserID = CHCNetSDK.NET_DVR_Login_V30(textBox4.Text, UInt16.Parse(textBox5.Text), WebCamUser, WebCamPasswd, ref DeviceInfo);
                                //textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  登录错误,错误代码:"+ CHCNetSDK.NET_DVR_GetLastError() + "\n\r");
                                UInt32 dwReturn      = 0;
                                Int32  nSize         = Marshal.SizeOf(DeviceOsd);
                                IntPtr ptrShowStrCfg = Marshal.AllocHGlobal(nSize);
                                Marshal.StructureToPtr(DeviceOsd, ptrShowStrCfg, false);
                                if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_SHOWSTRING_V30, 1, ptrShowStrCfg, (UInt32)nSize, ref dwReturn))
                                {
                                    textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  获取失败,错误代码:" + CHCNetSDK.NET_DVR_GetLastError() + "\n\r");
                                }
                                DeviceOsd = (CHCNetSDK.NET_DVR_SHOWSTRING_V30)Marshal.PtrToStructure(ptrShowStrCfg, typeof(CHCNetSDK.NET_DVR_SHOWSTRING_V30));
                                temp      = DateTime.Now.ToLongTimeString().ToString() + "  " + temp + "℃";
                                DeviceOsd.struStringInfo[0].wShowString         = 1;
                                DeviceOsd.struStringInfo[0].sString             = temp;
                                DeviceOsd.struStringInfo[0].wStringSize         = (ushort)temp.Length;
                                DeviceOsd.struStringInfo[0].wShowStringTopLeftX = UInt16.Parse("50");
                                DeviceOsd.struStringInfo[0].wShowStringTopLeftY = UInt16.Parse("650");
                                Marshal.StructureToPtr(DeviceOsd, ptrShowStrCfg, false);
                                if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_SHOWSTRING_V30, 1, ptrShowStrCfg, (UInt32)nSize))
                                {
                                    textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  设置失败,错误代码:" + CHCNetSDK.NET_DVR_GetLastError() + "\n\r");
                                }

                                Marshal.FreeHGlobal(ptrShowStrCfg);
                                CHCNetSDK.NET_DVR_Logout(m_lUserID);
                                CHCNetSDK.NET_DVR_Cleanup();
                            }
                            if (checkBox1.Checked == true)
                            {
                                if (Convert.ToDouble(response.Result[0].value) > Convert.ToDouble(textBox2.Text))
                                {
                                    textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  设备传感器温度高于阈值,发送警报\n\r");
                                    Rp.Start();
                                }
                            }
                        }
                        else
                        {
                            textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  Pass\n\r");
                        }
                    }
                    catch
                    {
                        textBox1.AppendText("\n\r" + DateTime.Now.ToString() + "  接口数据获取异常\n\r");
                    }

                    Thread.Sleep(60000);
                }
            }
        }