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); }
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); }
/// <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); // }
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); }
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); }
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); } }
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); } } }