using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; using System.Drawing.Drawing2D; using laserPTZ.insertForm; using System.Runtime.InteropServices; using System.IO; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using System.Threading; using laserPTZ.AI; using System.Diagnostics; namespace laserPTZ { public partial class CtrlRealTime : UserControl { [DllImport("User32.dll")] public extern static System.IntPtr GetDC(System.IntPtr hWnd); [DllImport("User32.dll")] static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern bool InvalidateRect(IntPtr hWnd, IntPtr lpRect, bool bErase); [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hRegion, uint flags); public string monitorId = ""; string monitorName = ""; public int m_lRealHandle = -1; public static int rt_lRealHandle = -1; public static int rt_lBackHandle = -1; public int m_lUserID = -1; public string ip = ""; public string port = ""; public string devType = ""; CHCNetSDK.NET_DVR_CRUISE_POINT[] points; public static CtrlRealTime ctrlRealTime; int speed = 4; public bool presetAdding = false; public static System.Threading.Timer timer1 = null; string rtspUrl; public static bool left = false; public static bool up = false; public static bool right = false; public static bool down = false; public MTransparentFrom _tranForm = new MTransparentFrom(); public static int index; public CtrlRealTime(string _trspUrl, int activeIndex) { try { InitializeComponent(); ctrlRealTime = this; rtspUrl = _trspUrl; index = activeIndex; switch (CtrlHome.pictureBoxIndex) { case 1: { m_lRealHandle = CtrlHome.m_lRealHandle1; m_lUserID = CtrlHome.m_lUserID1; break; } case 2: { m_lRealHandle = CtrlHome.m_lRealHandle2; m_lUserID = CtrlHome.m_lUserID2; break; } case 3: { m_lRealHandle = CtrlHome.m_lRealHandle3; m_lUserID = CtrlHome.m_lUserID3; break; } case 4: { m_lRealHandle = CtrlHome.m_lRealHandle4; m_lUserID = CtrlHome.m_lUserID4; break; } default: break; } halfDashboardUc1.MaxValue = 99999; halfDashboardUc1.MinValue = 0; chart1.Series["Series1"].XValueMember = "logTime"; chart1.Series["Series1"].YValueMembers = "concentration"; chart1.Series["Series1"].MarkerStyle = MarkerStyle.Circle;//线条上的数据点标志类型 chart1.Series["Series1"].MarkerSize = 3; //标志大小 speed = 4; track_speed.Value = 4; ip = CtrlHome.moniterArr[activeIndex]["deviceIp"].ToString(); port = CtrlHome.moniterArr[activeIndex]["devicePort"].ToString(); monitorId = CtrlHome.moniterArr[activeIndex]["monitorPointId"].ToString(); monitorName = CtrlHome.moniterArr[activeIndex]["monitorPointName"].ToString(); labelDevName.Text = CtrlHome.moniterArr[activeIndex]["monitorPointName"].ToString(); devType = CtrlHome.moniterArr[activeIndex]["type"].ToString(); // 全局 txt_therod.Text = ""; txt_allAngle.Text = ""; txt_allSpeed.Text = ""; txt_allStop.Text = ""; int width = FormMain.formMain.panel_insert.Width; int height = FormMain.formMain.panel_insert.Height; this.Width = width; this.Height = height; panel_chart.Size = new Size(panel_chart.Width, (int)(0.3 * height)); panel_direction.Size = new Size(panel_chart.Width, (int)(0.335 * height)); panel_alarm.Size = new Size(panel_chart.Width, (int)(0.335 * height)); panel_direction.Location = new Point(19, (int)(0.303 * height) + 7); panel_alarm.Location = new Point(19, (int)(0.640 * height) + 7); panel_video.Location = new Point(560, 7); panel_ptz.Width = panel_video.Width - panel4.Width - 20; panel_manControl.Width = (int)(panel_ptz.Width * 0.92); panel_manControl.Location = new Point((int)(0.03 * panel_ptz.Width), 0); //panel_manControl.Width = panel_video.Width; //panel_therod.Width = panel_manControl.Width; //panel_therod.Location = new Point( (int)(panel_therod.Location.X * 1.2), panel_therod.Location.Y); radio_ptz.Checked = true; therod_checked = false; checkVersion(); initDataGridView(); initListAllPointView(); } catch (Exception e) {} new Thread(new ThreadStart(() => { try { Thread.Sleep(200); this.Invoke(new EventHandler(delegate { preview(); getLineList(); getDataGridViewData(); })); } catch (Exception e){ } finally { Point p = new Point(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - pictureBox1.Width / 2 - 80, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height / 2 - 135); // 0,0 是左上角 _tranForm.Location = p; _tranForm.Size = this.Size; _tranForm.Owner = this.ParentForm; _tranForm.Dock = DockStyle.Fill; _tranForm.Show(); _tranForm.BringToFront(); } })).Start(); } public void checkVersion() { bool isShow; if(devType == "0") //奥瑞德 { isShow = false; } else { isShow = true; } label12.Visible = isShow; label14.Visible = isShow; label6.Visible = isShow; panel14.Visible = isShow; panel15.Visible = isShow; panel8.Visible = isShow; txt_speed.Visible = isShow; txt_presetStop.Visible = isShow; txt_presetThreshold.Visible = isShow; label8.Visible = isShow; label10.Visible = isShow; label15.Visible = isShow; panel2.Visible = isShow; panel3.Visible = isShow; panel10.Visible = isShow; label16.Visible = isShow; txt_allSpeed.Visible = isShow; txt_allStop.Visible = isShow; label12.Visible = isShow; txt_allAngle.Visible = isShow; } public void initDev(int activeIndex) { try { index = activeIndex; switch (CtrlHome.pictureBoxIndex) { case 1: { m_lRealHandle = CtrlHome.m_lRealHandle1; m_lUserID = CtrlHome.m_lUserID1; break; } case 2: { m_lRealHandle = CtrlHome.m_lRealHandle2; m_lUserID = CtrlHome.m_lUserID2; break; } case 3: { m_lRealHandle = CtrlHome.m_lRealHandle3; m_lUserID = CtrlHome.m_lUserID3; break; } case 4: { m_lRealHandle = CtrlHome.m_lRealHandle4; m_lUserID = CtrlHome.m_lUserID4; break; } default: break; } speed = 4; track_speed.Value = 4; ip = CtrlHome.moniterArr[activeIndex]["deviceIp"].ToString(); port = CtrlHome.moniterArr[activeIndex]["devicePort"].ToString(); monitorId = CtrlHome.moniterArr[activeIndex]["monitorPointId"].ToString(); monitorName = CtrlHome.moniterArr[activeIndex]["monitorPointName"].ToString(); labelDevName.Text = CtrlHome.moniterArr[activeIndex]["monitorPointName"].ToString(); devType = CtrlHome.moniterArr[activeIndex]["type"].ToString(); txt_therod.Text = CtrlHome.moniterArr[activeIndex]["high"].ToString().Substring(0, 4); } catch (Exception e) { } finally { btn_exeAngle.Enabled = true; btn_cruiseStart.Enabled = true; btn_toPreset.Enabled = true; panel_up.Enabled = true; panel_left.Enabled = true; panel_right.Enabled = true; panel_down.Enabled = true; panel_manControl.Enabled = true; radio_ptz.Checked = true; panel1.BackgroundImage = Properties.Resources.bakground; txt_line.Text = ""; txt_preset.Text = ""; txt_directionAngle.Text = ""; txt_pitchAngle.Text = ""; txt_directionAngle.SetPlaceholder(); txt_pitchAngle.SetPlaceholder(); txt_speed.Text = "30"; txt_presetStop.Text = "3"; txt_presetThreshold.Text = "5000"; txt_allSpeed.Text = ""; txt_allStop.Text = ""; txt_allAngle.Text = ""; tog_clean.Checked = false; tog_switch.Checked = false; list_allPoint.DataSource = null; selectLineValue = ""; selectPresetValue = ""; LineArr = null; PresetArr = null; checkVersion(); new Thread(new ThreadStart(() => { try { this.Invoke(new EventHandler(delegate { preview(); getLineList(); getDataGridViewData(); })); } catch (Exception e) { } finally { Point p = new Point(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - pictureBox1.Width/2 - 80, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height / 2 - 135); // 0,0 是左上角 _tranForm.Location = p; _tranForm.Size = this.Size; _tranForm.Owner = this.ParentForm; _tranForm.Dock = DockStyle.Fill; _tranForm.Show(); _tranForm.BringToFront(); } })).Start(); } } public void initChart() { chart1.Series["Series1"].Points.Clear(); Series series = chart1.Series["Series1"]; chart1.DataSource = null; chart1.Series["Series1"].XValueMember = "logTime"; chart1.Series["Series1"].YValueMembers = "concentration"; chart1.Series["Series1"].MarkerStyle = MarkerStyle.Circle;//线条上的数据点标志类型 chart1.Series["Series1"].MarkerSize = 3; //标志大小 if (FormMain.gasDictionary.Keys.Contains(ip)) { FormMain.formMain.changeRealTimeChart(FormMain.gasDictionary[ip]); } chart1.Invalidate(); } private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) { bool handle; if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.Equals(DBNull.Value)) handle = true; else { handle = false; e.Cancel = handle; } } private void List_alllPoint_DataError(object sender, DataGridViewDataErrorEventArgs e) { bool handle; if (list_allPoint.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.Equals(DBNull.Value)) handle = true; else { handle = false; e.Cancel = handle; } } private void AimAt(object sender, MouseEventArgs e) { //59.8 //765, 443 double width = pictureBox1.Width; double height = pictureBox1.Height; //double angleD = (double)((e.X-382.5) / 382.5) * 29.9; //double angleP = (double)((e.Y-221.5) / 221.5) * (29.9 * 443 / 765); double angleD = (double)((e.X - (width/2)) / (width/2)) * 29.9; double angleP = (double)((e.Y - (height/2)) / (height/2)) * (29.9 * height / width); if (devType != "1") { angleP *= -1; } double horizontalAngle = Convert.ToDouble(label_angleD.Text) + angleD; double verticalAngle = Convert.ToDouble(label_angleP.Text) + angleP; if (horizontalAngle < 0 || horizontalAngle > 360) return; if (verticalAngle < -90 || verticalAngle > 90) return; string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/toPosition" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&horizontalAngle=" + horizontalAngle.ToString() + "&verticalAngle=" + verticalAngle.ToString(); string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False"){} } // 获取甲烷浓度 private void getValue() { int re = -1; try { if (ConfigHelper.GetAppConfig("controlType") == "1") { uint pUser = 0; CHCNetSDK.NET_DVR_SERIALSTART_V40 lpSerialStart = new CHCNetSDK.NET_DVR_SERIALSTART_V40(); lpSerialStart.dwSerialType = 2; lpSerialStart.bySerialNum = 1; lpSerialStart.byRes = new byte[0]; unsafe { CHCNetSDK.SERIALDATACALLBACK serialDataCallBack = new CHCNetSDK.SERIALDATACALLBACK(cbSerialDataCallBack); //建立通道 re = CHCNetSDK.NET_DVR_SerialStart(m_lUserID, 2, serialDataCallBack, pUser); if (re == -1) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); //MessageBox.Show("与云台建立透明通道失败:" + iLastErr); return; } } string msg = "FF 01 00 90 01 00"; byte[] buf = strToHexByte(msg); //byte[] buf = { 0xff, 0x01, 0x00, 0x4b, 0x03, 0xe8, 0x37 }; unsafe { //发送指令 fixed (byte* p = &buf[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("甲烷浓度错误: " + iLastErr); return; } } } } else { //换成webScoket形式 } } catch (Exception ex) { } finally { if (re != -1) { } } } // 获取实时角度 private void getAngle() { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { int re = -1; try { CHCNetSDK.SERIALDATACALLBACK serialDataCallBack = new CHCNetSDK.SERIALDATACALLBACK(cbSerialDataCallBack); uint pUser = 0; CHCNetSDK.NET_DVR_SERIALSTART_V40 lpSerialStart = new CHCNetSDK.NET_DVR_SERIALSTART_V40(); lpSerialStart.dwSerialType = 2; lpSerialStart.bySerialNum = 1; lpSerialStart.byRes = new byte[0]; //建立通道 re = CHCNetSDK.NET_DVR_SerialStart(m_lUserID, 2, serialDataCallBack, pUser); if (re == -1) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); //MessageBox.Show("与云台建立透明通道失败:" + iLastErr); return; } //查询水平角度 byte[] buf1 = { 0xFF, 0x01, 0x00, 0x51, 0x00, 0x00, 0x52 }; unsafe { //发送指令 fixed (byte* p = &buf1[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf1.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("查询水平角度失败:" + iLastErr); return; } } } //查询垂直角度 byte[] buf2 = { 0xFF, 0x01, 0x00, 0x53, 0x00, 0x00, 0x54 }; unsafe { //发送指令 fixed (byte* p = &buf2[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf2.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("查询垂直角度失败:" + iLastErr); return; } } } string msg = "FF 01 00 90 01 00"; byte[] buf = strToHexByte(msg); //byte[] buf = { 0xff, 0x01, 0x00, 0x4b, 0x03, 0xe8, 0x37 }; unsafe { //发送指令 fixed (byte* p = &buf[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("甲烷浓度错误: " + iLastErr); CHCNetSDK.NET_DVR_SerialStop(re); return; } } } //CHCNetSDK.NET_DVR_SerialStop(re); } catch (Exception e) { } finally { if (re != -1) { //CHCNetSDK.NET_DVR_SerialStop(re); } } } else { //替换成webScoket形式获取 } } public JArray LineArr; public JArray PresetArr; // 获取巡航列表 public void getLineList() { txt_line.Text = ""; selectLineValue = ""; string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/getLines" + "?deviceIp=" + ip; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { LogHelper.WriteLog("获取巡航列表失败"); } else { cbBox_lineList.Items.Clear(); cb_allLine.Items.Clear(); JObject json = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText); LineArr = JArray.Parse(json["data"].ToString()); if (json["data"].ToString() != "[]") { for (int i = 0; i < LineArr.Count; i++) { cbBox_lineList.Items.Add(LineArr[i]["selectName"].ToString()); cb_allLine.Items.Add(LineArr[i]["selectName"].ToString()); } if (LineArr.Count!=0) { cbBox_lineList.SelectedIndex = 0; cb_allLine.SelectedIndex = 0; } else { cbBox_lineList.SelectedItem = null; cb_allLine.SelectedItem = null; } } } getPresetList(); } public string selectLineValue = ""; public string selectPresetValue = ""; // 获取巡航点 public void getPresetList() { txt_preset.Text = ""; selectPresetValue = ""; if (txt_line.Text == "") { cbBox_presetList.Items.Clear(); return; } if (cbBox_lineList.SelectedItem == null) return; selectLineValue = findSelectValue(LineArr, cbBox_lineList.SelectedItem.ToString()); string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/getPoints" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&cruiseRoute=" + selectLineValue; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { cbBox_presetList.Items.Clear(); JObject json = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText); PresetArr = JArray.Parse(json["data"].ToString()); if (json["data"].ToString() != "[]") { for (int i = 0; i < PresetArr.Count; i++) { cbBox_presetList.Items.Add(PresetArr[i]["selectName"].ToString()); } } } } private unsafe void cbSerialDataCallBack(int lSerialHandle, IntPtr pRecvDataBuffer, uint dwBufSize, uint dwUser) { unsafe { byte[] b = new byte[7]; Marshal.Copy(pRecvDataBuffer, b, 0, 7); float angleD = (float)(Convert.ToInt32(Convert.ToString(b[4])) * 256 + Convert.ToInt32(Convert.ToString(b[5]))) / 100; //水平角度 if (Convert.ToString(b[0]) == "255" && Convert.ToString(b[1]) == "1" && Convert.ToString(b[2]) == "0" && Convert.ToString(b[3]) == "89") { coordinateUc1.Value = angleD; label_angleD.Text = Convert.ToString(angleD); //coordinateUc1.DrawPin(coordinateUc1.CreateGraphics()); coordinateUc1.Refresh(); } //垂直角度 else if (Convert.ToString(b[0]) == "255" && Convert.ToString(b[1]) == "1" && Convert.ToString(b[2]) == "0" && Convert.ToString(b[3]) == "91") { angleD = (Convert.ToInt32(Convert.ToString(b[4])) * 256 + Convert.ToInt32(Convert.ToString(b[5]))); if (angleD > 18000) { halfCoordinateUc1.value = (36000 - angleD) / 100; label_angleP.Text = Convert.ToString((36000 - angleD) / 100); } else { halfCoordinateUc1.value = (0 - angleD) / 100; label_angleP.Text = Convert.ToString((0 - angleD) / 100); } halfCoordinateUc1.Refresh(); //CHCNetSDK.NET_DVR_SerialStop(lSerialHandle); //getDataType = -1; } // 甲烷浓度、报警值 else if (Convert.ToString(b[0]) == "83" && Convert.ToString(b[1]) == "84") { byte[] v = new byte[35]; Marshal.Copy(pRecvDataBuffer, v, 0, 35); string value = Encoding.ASCII.GetString(v); //MessageBox.Show("CH4浓度:"+ value); CHCNetSDK.NET_DVR_SerialStop(lSerialHandle); } if (dwBufSize == 3) { CHCNetSDK.NET_DVR_SerialStop(lSerialHandle); } //getDataType = -1; } } public void initListAllPointView() { try { if (list_allPoint.Rows.Count != 0) list_allPoint.Rows.Clear(); if (list_allPoint.Columns.Count != 0) list_allPoint.Columns.Clear(); Panel panel = new Panel(); panel.BackColor = Color.FromArgb(41, 42, 73); panel.Size = new Size((int)(list_allPoint.Width * 0.95), 24); panel.Location = new Point(0, 0); list_allPoint.Controls.Add(panel); Label col1 = new Label(); col1.Text = "预置点"; col1.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col1.ForeColor = Color.White; col1.BackColor = Color.FromArgb(41, 42, 73); col1.Location = new Point(38, 0); list_allPoint.Controls.Add(col1); col1.BringToFront(); Label col2 = new Label(); col2.Text = "阈值ppm·m"; col2.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col2.ForeColor = Color.White; col2.BackColor = Color.FromArgb(41, 42, 73); col2.Location = new Point(145, 0); list_allPoint.Controls.Add(col2); col2.BringToFront(); Label col3 = new Label(); col3.Text = "位置"; col3.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col3.ForeColor = Color.White; col3.BackColor = Color.FromArgb(41, 42, 73); col3.Location = new Point(300, 0); list_allPoint.Controls.Add(col3); col3.BringToFront(); DataTable pointDatas = new DataTable("Datas"); pointDatas.Rows.Clear(); //pointDatas.Columns.Add("id", Type.GetType("System.String")); pointDatas.Columns.Add("serialName", Type.GetType("System.String")); pointDatas.Columns.Add("alarmValue", Type.GetType("System.String")); pointDatas.Columns.Add("position", Type.GetType("System.String")); list_allPoint.DataSource = pointDatas; //list_allPoint.Columns[0].Visible = false; list_allPoint.Columns[1].HeaderText = "预置点"; list_allPoint.Columns[2].HeaderText = "阈值"; list_allPoint.Columns[3].HeaderText = "位置"; //list_allPoint.Columns[0].Width = 50; list_allPoint.Columns[1].Width = 120; list_allPoint.Columns[2].Width = 50; list_allPoint.Columns[3].Width = 80; list_allPoint.Columns[0].ReadOnly = true; list_allPoint.Columns[1].ReadOnly = true; list_allPoint.Columns[2].ReadOnly = true; list_allPoint.Columns[3].ReadOnly = true; } catch (Exception ex) { } } public void initDataGridView() { try { if (dataGridView1.Rows.Count != 0) dataGridView1.Rows.Clear(); if(dataGridView1.Columns.Count != 0) dataGridView1.Columns.Clear(); int height = panel_alarm.Height; int width = panel_alarm.Width; Panel panel = new Panel(); panel.BackColor = Color.FromArgb(41, 42, 73); panel.Size = new Size((int)(width * 0.95), 24); panel.Location = new Point(0, 0); dataGridView1.Controls.Add(panel); //panel.BringToFront(); Label col1 = new Label(); col1.Text = "报警时间"; col1.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col1.ForeColor = Color.White; col1.BackColor = Color.FromArgb(41, 42, 73); col1.Location = new Point(31, 0); dataGridView1.Controls.Add(col1); col1.BringToFront(); Label col2 = new Label(); col2.Text = "浓度ppm·m"; col2.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col2.ForeColor = Color.White; col2.BackColor = Color.FromArgb(41, 42, 73); col2.Location = new Point(110, 0); dataGridView1.Controls.Add(col2); col2.BringToFront(); Label col3 = new Label(); col3.Text = "报警方位"; col3.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col3.ForeColor = Color.White; col3.BackColor = Color.FromArgb(41, 42, 73); col3.Location = new Point(200, 0); dataGridView1.Controls.Add(col3); col3.BringToFront(); Label col4 = new Label(); col4.Text = "报警事件"; col4.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col4.ForeColor = Color.White; col4.BackColor = Color.FromArgb(41, 42, 73); col4.Location = new Point(295, 0); dataGridView1.Controls.Add(col4); col4.BringToFront(); Label col5 = new Label(); col5.Text = "操作"; col5.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col5.ForeColor = Color.White; col5.BackColor = Color.FromArgb(41, 42, 73); col5.Location = new Point(425, 0); dataGridView1.Controls.Add(col5); col5.BringToFront(); Label col6 = new Label(); col6.Text = ""; col6.Font = new Font("微软雅黑", 10.5f, FontStyle.Bold); col6.ForeColor = Color.White; col6.BackColor = Color.FromArgb(41, 42, 73); col6.Location = new Point(460, 0); dataGridView1.Controls.Add(col6); DataTable alarmDatas = new DataTable("Datas"); alarmDatas.Rows.Clear(); alarmDatas.Columns.Add("id", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmTime", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmValue", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmDirection", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmContent", Type.GetType("System.String")); alarmDatas.Columns.Add("消警", Type.GetType("System.String")); alarmDatas.Columns.Add("定位", Type.GetType("System.String")); alarmDatas.Columns.Add("录像", Type.GetType("System.String")); dataGridView1.DataSource = alarmDatas; dataGridView1.Columns[0].Visible = false; dataGridView1.Columns[1].HeaderText = "时间"; dataGridView1.Columns[2].HeaderText = "浓度"; dataGridView1.Columns[3].HeaderText = "方位"; dataGridView1.Columns[4].HeaderText = "事件"; dataGridView1.Columns[5].HeaderText = "消警"; dataGridView1.Columns[6].HeaderText = "定位"; dataGridView1.Columns[7].HeaderText = "录像"; dataGridView1.Columns[0].Width = 50; dataGridView1.Columns[1].Width = 120; dataGridView1.Columns[2].Width = 50; dataGridView1.Columns[3].Width = 80; dataGridView1.Columns[4].Width = 100; dataGridView1.Columns[0].ReadOnly = true; dataGridView1.Columns[1].ReadOnly = true; dataGridView1.Columns[2].ReadOnly = true; dataGridView1.Columns[3].ReadOnly = true; dataGridView1.Columns[5].Width = 35; dataGridView1.AutoGenerateColumns = false; dataGridView1.Columns[5].ReadOnly = true; dataGridView1.Columns[6].Width = 35; dataGridView1.AutoGenerateColumns = false; dataGridView1.Columns[6].ReadOnly = true; dataGridView1.Columns[7].Width = 35; dataGridView1.AutoGenerateColumns = false; dataGridView1.Columns[7].ReadOnly = true; } catch (Exception ex) { } } public static bool refresh = false; public static JArray jar1; public void getDataGridViewData() { new Thread(new ThreadStart(() => { try { if (refresh) return; else refresh = true; string timeNow = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string timeStart = DateTime.Now.AddMinutes(-31).ToString("yyyy-MM-dd HH:mm:ss"); dataGridView1.DataSource = null; string query = "?keyword=" + monitorName + "&" + "startTime=" + timeStart + "&" + "endTime=" + timeNow + "&" + "offset=1&limit=100"; string result = Http.http("http://" + ConfigHelper.GetAppConfig("server").Trim() + "/alarm/listNowPage" + query, "POST", null); if (result == "") { //MessageBox.Show("服务器错误,获取报警列表失败"); label_datagridResult.Text = "服务器错误,获取报警列表失败"; label_datagridResult.ForeColor = Color.OrangeRed; label_datagridResult.Visible = true; refresh = false; return; } JObject json = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText); if (((JObject)JsonConvert.DeserializeObject(json["data"].ToString()))["rows"].ToString() == "[]") { label_datagridResult.Text = "无报警数据"; label_datagridResult.ForeColor = Color.DimGray; label_datagridResult.Visible = true; refresh = false; return; } label_datagridResult.Visible = false; jar1 = JArray.Parse(((JObject)JsonConvert.DeserializeObject(json["data"].ToString()))["rows"].ToString()); if (((JObject)JsonConvert.DeserializeObject(json["data"].ToString()))["rows"].ToString() != "[]") { DataTable alarmDatas = new DataTable("Datas"); alarmDatas.Columns.Add("id", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmTime", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmValue", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmDirection", Type.GetType("System.String")); alarmDatas.Columns.Add("alarmContent", Type.GetType("System.String")); alarmDatas.Columns.Add("消警", Type.GetType("System.String")); alarmDatas.Columns.Add("定位", Type.GetType("System.String")); alarmDatas.Columns.Add("录像", Type.GetType("System.String")); for (int i = 0; i < jar1.Count; i++) { if (jar1[i].Contains("id")) return; string id = jar1[i]["id"].ToString(); string alarmValue = jar1[i]["alarmValue"].ToString(); string alarmTime = jar1[i]["alarmTime"].ToString(); string alarmDirection = jar1[i]["alarmDirection"].ToString() + "," + jar1[i]["alarmPitch"].ToString(); string alarmContent = jar1[i]["alarmContent"].ToString(); alarmDatas.Rows.Add(new object[] { id, alarmTime, alarmValue, alarmDirection, alarmContent, "消警", "定位", "录像" }); } if (alarmDatas == null || alarmDatas.Rows.Count == 0 || jar1.Count != alarmDatas.Rows.Count) { refresh = false; return; } dataGridView1.DataSource = alarmDatas; refresh = false; } refresh = false; } catch (Exception ex) { //initDataGridView(); refresh = false; } })).Start(); } public void getPointsViewData() { new Thread(new ThreadStart(() => { try { list_allPoint.DataSource = null; if (cb_allLine.SelectedItem == null) return; string result = Http.http("http://" + ConfigHelper.GetAppConfig("server").Trim() + "/observ/list" + "?monitorId=" + monitorId + "&" + "lineNum=" + findSelectValue(LineArr, cb_allLine.SelectedItem.ToString()), "POST", null); if (result == ""){ return; } JObject json = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText); if (json["data"].ToString() == "[]") { return; } jar1 = JArray.Parse(json["data"].ToString()); DataTable pointDatas = new DataTable("Datas"); //pointDatas.Columns.Add("id", Type.GetType("System.String")); pointDatas.Columns.Add("serialName", Type.GetType("System.String")); pointDatas.Columns.Add("alarmValue", Type.GetType("System.String")); pointDatas.Columns.Add("position", Type.GetType("System.String")); for (int i = 0; i < jar1.Count; i++) { if (jar1[i].Contains("id")) return; //string id = jar1[i]["id"].ToString(); string alarmValue = jar1[i]["alarmValue"].ToString(); string serialName = jar1[i]["serialName"].ToString(); string position = jar1[i]["direction"].ToString() + "," + jar1[i]["pitch"].ToString(); pointDatas.Rows.Add(new object[] { serialName, alarmValue, position }); } list_allPoint.DataSource = pointDatas; /*if (((JObject)JsonConvert.DeserializeObject(json["data"].ToString()))["rows"].ToString() != "[]") { }*/ } catch (Exception ex) { } })).Start(); } int count = 0; private void drawLine(OpenCvSharp.Mat image) { int x = image.Width / 2; int y = image.Height / 2; OpenCvSharp.Point p1 = new OpenCvSharp.Point(x - 40, y - 30); OpenCvSharp.Point p2 = new OpenCvSharp.Point(x - 20, y - 30); OpenCvSharp.Cv2.Line(image, p1, p2, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); OpenCvSharp.Point p3 = new OpenCvSharp.Point(x - 40, y - 30); OpenCvSharp.Point p4 = new OpenCvSharp.Point(x - 40, y - 10); OpenCvSharp.Cv2.Line(image, p3, p4, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); OpenCvSharp.Point p5 = new OpenCvSharp.Point(x + 40, y - 30); OpenCvSharp.Point p6 = new OpenCvSharp.Point(x + 20, y - 30); OpenCvSharp.Cv2.Line(image, p5, p6, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); OpenCvSharp.Point p7 = new OpenCvSharp.Point(x + 40, y - 30); OpenCvSharp.Point p8 = new OpenCvSharp.Point(x + 40, y - 10); OpenCvSharp.Cv2.Line(image, p7, p8, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); OpenCvSharp.Point p9 = new OpenCvSharp.Point(x + 40, y + 30); OpenCvSharp.Point p10 = new OpenCvSharp.Point(x + 20, y + 30); OpenCvSharp.Cv2.Line(image, p9, p10, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); OpenCvSharp.Point p11 = new OpenCvSharp.Point(x + 40, y + 30); OpenCvSharp.Point p12 = new OpenCvSharp.Point(x + 40, y + 10); OpenCvSharp.Cv2.Line(image, p11, p12, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); OpenCvSharp.Point p13 = new OpenCvSharp.Point(x - 40, y + 30); OpenCvSharp.Point p14 = new OpenCvSharp.Point(x - 20, y + 30); OpenCvSharp.Cv2.Line(image, p13, p14, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); OpenCvSharp.Point p15 = new OpenCvSharp.Point(x - 40, y + 30); OpenCvSharp.Point p16 = new OpenCvSharp.Point(x - 40, y + 10); OpenCvSharp.Cv2.Line(image, p15, p16, new OpenCvSharp.Scalar(33, 33, 133, 255), 2); ScoketClient.drawLabel(image, label_gasValue.Text); } public void preview() { try { // 如果已经正在回放,先停止回放;暂停实时播放 if (rt_lRealHandle >= 0) { CHCNetSDK.NET_DVR_StopRealPlay(rt_lRealHandle); rt_lRealHandle = -1; } CHCNetSDK.NET_DVR_StopPlayBack(rt_lBackHandle); } catch (Exception ex) { } CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); lpPreviewInfo.hPlayWnd = pictureBox1.Handle;//预览窗口 lpPreviewInfo.lChannel = CtrlHome.hasNVR == "0" ? Int16.Parse("1") : CtrlHome.iChannelNum[index];//预te览的设备通道 lpPreviewInfo.dwStreamType = uint.Parse(CtrlHome.flow);//码流类型: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- 阻塞取流 lpPreviewInfo.dwDisplayBufNum = 1; //播放库播放缓冲区最大缓冲帧数 lpPreviewInfo.byProtoType = 0; lpPreviewInfo.byPreviewMode = 0; IntPtr pUser = new IntPtr();//用户数据 //打开预览 Start live view rt_lRealHandle = CtrlHome.hasNVR == "0" ? CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, pUser) : CHCNetSDK.NET_DVR_RealPlay_V40(CtrlHome.userIdNVR, ref lpPreviewInfo, null, pUser); if (rt_lRealHandle < 0) { return; } } private System.Windows.Forms.Panel LoadingPanel = new System.Windows.Forms.Panel(); private void radio_ptz_CheckedChanged(object sender, EventArgs e) { if (radio_ptz.Checked == true) { radio_ptz.ForeColor = Color.White; bak_ptz.BackgroundImage = Properties.Resources.标题框; radio_vedio.ForeColor = Color.Black; bak_vedio.BackgroundImage = null; radio_therod.ForeColor = Color.Black; bak_therod.BackgroundImage = null; radio_vedio.Checked = false; radio_therod.Checked = false; panel_ptz.Visible = true; panel_manControl.Visible = true; panel_videoControl.Visible = false; panel_therod.Visible = false; } } private void radio_vedio_CheckedChanged(object sender, EventArgs e) { if (radio_vedio.Checked == true) { radio_vedio.ForeColor = Color.White; bak_vedio.BackgroundImage = Properties.Resources.标题框; radio_ptz.ForeColor = Color.Black; bak_ptz.BackgroundImage = null; radio_therod.ForeColor = Color.Black; bak_therod.BackgroundImage = null; radio_ptz.Checked = false; radio_therod.Checked = false; panel_ptz.Visible = false; panel_manControl.Visible = false; panel_videoControl.Visible = true; panel_therod.Visible = false; } } public string allHigh = "", allSpeed = "", allStop = "", allAngle = ""; public bool therod_checked = false; private void radio_therod_CheckedChanged(object sender, EventArgs e) { therod_checked = radio_therod.Checked; if (radio_therod.Checked == true) { panel_ptz.Visible = false; panel_manControl.Visible = false; panel_videoControl.Visible = false; panel_therod.Visible = true; radio_therod.ForeColor = Color.White; bak_therod.BackgroundImage = Properties.Resources.标题框; radio_ptz.ForeColor = Color.Black; bak_ptz.BackgroundImage = null; radio_vedio.ForeColor = Color.Black; bak_vedio.BackgroundImage = null; radio_vedio.Checked = false; radio_ptz.Checked = false; txt_therod.Text = ""; txt_allAngle.Text = ""; txt_allSpeed.Text = ""; txt_allStop.Text = ""; allHigh = ""; allSpeed = ""; allStop = ""; allAngle = ""; string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/alarm/alarmRule" + "?monitorId=" + monitorId; string result = Http.http(conStr, "GET", null); JObject json = (JObject)JsonConvert.DeserializeObject(result); if (result == "" || json["success"].ToString() == "False") { } else { JObject data = (JObject)JsonConvert.DeserializeObject(json["data"].ToString()); allHigh = data["high"].ToString(); allSpeed = data["speed"].ToString(); allStop = data["stopTime"].ToString(); txt_therod.Text = data["high"].ToString(); txt_allSpeed.Text = data["speed"].ToString(); txt_allStop.Text = data["stopTime"].ToString(); if (data["angle"].ToString() != "" && System.Text.RegularExpressions.Regex.IsMatch(data["angle"].ToString(), @"^\d+$")) { txt_allAngle.Text = (Convert.ToDouble( data["angle"].ToString() ) / 10).ToString(); allAngle = txt_allAngle.Text; } } } } private void panel21_Paint(object sender, PaintEventArgs e) { } private void panel_left_Click(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { runOneAngle("left"); return; } left = !left; if (left) { panel1.BackgroundImage = Properties.Resources.left; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=left&isStop=0&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } })).Start(); } else { panel1.BackgroundImage = Properties.Resources.bakground; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=left&isStop=1&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } Thread.Sleep(100); getAngle(); })).Start(); } } private void panel_right_Click(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { runOneAngle("right"); return; } right = !right; if (right) { panel1.BackgroundImage = Properties.Resources.right; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=right&isStop=0&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } })).Start(); } else { panel1.BackgroundImage = Properties.Resources.bakground; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=right&isStop=1&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } Thread.Sleep(100); getAngle(); })).Start(); } } private void panel_up_Click(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { runOneAngle("up"); return; } up = !up; if (up) { panel1.BackgroundImage = Properties.Resources.up; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=up&isStop=0&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } })).Start(); } else { panel1.BackgroundImage = Properties.Resources.bakground; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=up&isStop=1&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } Thread.Sleep(100); getAngle(); })).Start(); } } private void panel_down_Click(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { runOneAngle("down"); return; } down = !down; if (down) { panel1.BackgroundImage = Properties.Resources.down; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=down&isStop=0&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } })).Start(); } else { panel1.BackgroundImage = Properties.Resources.bakground; new Thread(new ThreadStart(() => { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=down&isStop=1&speed=" + speed; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } Thread.Sleep(100); getAngle(); })).Start(); } } // 转小角度 public void runOneAngle(string position) { double horizontalAngle = Convert.ToDouble(label_angleD.Text); double verticalAngle = Convert.ToDouble(label_angleP.Text); if (position == "up") { if (devType == "1") { verticalAngle -= 1; } else { verticalAngle += 1; } } else if (position == "down") { if (devType == "1") { verticalAngle += 1; } else { verticalAngle -= 1; } } else if (position == "left") horizontalAngle -= 1; else if (position == "right") horizontalAngle += 1; if (horizontalAngle < 0 || horizontalAngle > 360) return; if (verticalAngle < -90 || verticalAngle > 90) return; string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/toPosition" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&horizontalAngle=" + horizontalAngle.ToString() + "&verticalAngle=" + verticalAngle.ToString(); string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } //向上 private void panel_up_MouseDown(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.up; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_UP, 0, (uint)3); uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); if (iLastErr > 0) MessageBox.Show("操作失败:" + iLastErr); } else { //new Thread(new ThreadStart(() => //{ string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=up&isStop=0&speed=" + speed; Http.http(conStr, "GET", null); /*string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } })).Start();*/ } } private void panel_up_MouseUp(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.bakground; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_UP, 1, (uint)3); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=up&isStop=1&speed=" + speed; Http.http(conStr, "GET", null); //string result = Http.http(conStr, "GET", null); } /*new Thread(new ThreadStart(() => { Thread.Sleep(100); getAngle(); })).Start();*/ } //向右 private void panel_right_MouseDown(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.right; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_RIGHT, 0, (uint)3); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=right&isStop=0&speed=" + speed; Http.http(conStr, "GET", null); } } private void panel_right_MouseUp(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.bakground; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_RIGHT, 1, (uint)3); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=right&isStop=1&speed=" + speed; Http.http(conStr, "GET", null); } } //向下 private void panel_down_MouseDown(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.down; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_DOWN, 0, (uint)3); } else { //new Thread(new ThreadStart(() => //{ string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=down&isStop=0&speed=" + speed; Http.http(conStr, "GET", null); /*string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } })).Start();*/ } } private void panel_down_MouseUp(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.bakground; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.TILT_DOWN, 1, (uint)3); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=down&isStop=1&speed=" + speed; Http.http(conStr, "GET", null); /*string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { }*/ } /*new Thread(new ThreadStart(() => { Thread.Sleep(100); getAngle(); })).Start();*/ } //向左 private void panel_left_MouseDown(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.left; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_LEFT, 0, (uint)3); } else { //new Thread(new ThreadStart(() => //{ string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=left&isStop=0&speed=" + speed; Http.http(conStr, "GET", null); /*string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } })).Start();*/ } } private void panel_left_MouseUp(object sender, MouseEventArgs e) { panel1.BackgroundImage = Properties.Resources.bakground; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControlWithSpeed(m_lRealHandle, CHCNetSDK.PAN_LEFT, 1, (uint)3); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/controlWithSpeed" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=left&isStop=1&speed=" + speed; Http.http(conStr, "GET", null); /*string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { }*/ } /*new Thread(new ThreadStart(() => { Thread.Sleep(100); getAngle(); })).Start();*/ } private void btn_cruiseStart_Click(object sender, EventArgs e) { if (checkInputbyCheck(false)) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/cruise" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=start" + "&cruiseRoute=" + selectLineValue + "&interval=" + ConfigHelper.GetAppConfig("interval").Trim(); string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { MessageBox.Show("巡航开启失败"); } else { MessageBox.Show("巡航开启成功"); } } } private void Btn_cruiseStop_Click(object sender, EventArgs e) { //if (checkInputbyCheck(false)) //{ string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/cruise" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=stop"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { MessageBox.Show("巡航停止失败"); } else { MessageBox.Show("巡航停止成功"); } //} } private void btn_reset_Click(object sender, EventArgs e) { int re = -1; try { panel1.BackgroundImage = Properties.Resources.bakground; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { int size = 1024; byte[] buffer = new byte[1024]; uint pUser = 0; CHCNetSDK.NET_DVR_SERIALSTART_V40 lpSerialStart = new CHCNetSDK.NET_DVR_SERIALSTART_V40(); lpSerialStart.dwSerialType = 2; lpSerialStart.bySerialNum = 1; lpSerialStart.byRes = new byte[0]; unsafe { CHCNetSDK.SERIALDATACALLBACK serialDataCallBack = new CHCNetSDK.SERIALDATACALLBACK(cbSerialDataCallBack); //建立通道 re = CHCNetSDK.NET_DVR_SerialStart(m_lUserID, 2, serialDataCallBack, pUser); if (re == -1) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); //MessageBox.Show("与云台建立透明通道失败:" + iLastErr); return; } } // 水平角度 string msg = "FF 01 00 4b 00 00"; byte[] buf = strToHexByte(msg); unsafe { //发送指令 fixed (byte* p = &buf[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("error code= " + iLastErr); return; } } } // 垂直角度 msg = "FF 01 00 4d 00 00"; buf = strToHexByte(msg); unsafe { //发送指令 fixed (byte* p = &buf[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("error code= " + iLastErr); return; } } } } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/toPosition" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&horizontalAngle=0&verticalAngle=0"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } } catch (Exception ex) { } finally { if (re != -1) CHCNetSDK.NET_DVR_SerialStop(re); new Thread(new ThreadStart(() => { Thread.Sleep(8000); getAngle(); })).Start(); } } /*private void btn_clean_Click(object sender, EventArgs e) { try { if (btn_clean.Text == "清洁镜头") { btn_clean.Text = "停止清洁"; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.WIPER_PWRON, 0); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=clean&isStop=0"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } new Thread(new ThreadStart(() => { Thread.Sleep(40000); btn_clean.Text = "清洁镜头"; })).Start(); } else if (btn_clean.Text == "停止清洁") { btn_clean.Text = "清洁镜头"; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.WIPER_PWRON, 1); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=clean&isStop=1"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } } } catch (Exception ex) { } }*/ private void btn_toPreset_Click(object sender, EventArgs e) { if (checkInputbyCheck(true)) { disableBtn(); panel1.BackgroundImage = Properties.Resources.bakground; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { bool re = false; re = CHCNetSDK.NET_DVR_PTZPreset(m_lRealHandle, CHCNetSDK.GOTO_PRESET, Convert.ToUInt32(txt_preset.Text)); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/preset" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=toPreset&presetIndex=" + selectPresetValue + "&cruiseRoute=" + selectLineValue + "&cruiseName=" + txt_line.Text + "&presetName=" + txt_preset.Text; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } new Thread(new ThreadStart(() => { Thread.Sleep(5000); getAngle(); })).Start(); } } public void disableBtn() { new Thread(new ThreadStart(() => { panel_manControl.Enabled = false; Thread.Sleep(3000); panel_manControl.Enabled = true; /*btn_exeAngle.Enabled = false; btn_cruiseStart.Enabled = false; btn_toPreset.Enabled = false; panel_up.Enabled = false; panel_left.Enabled = false; panel_right.Enabled = false; panel_down.Enabled = false; btn_exeAngle.Enabled = true; btn_cruiseStart.Enabled = true; btn_toPreset.Enabled = true; panel_up.Enabled = true; panel_left.Enabled = true; panel_right.Enabled = true; panel_down.Enabled = true;*/ })).Start(); } private void btn_exeAngle_Click(object sender, EventArgs e) { int re = -1; try { if (txt_directionAngle.Text.Trim() == "" || txt_pitchAngle.Text.Trim() == "") { MessageBox.Show("请输入角度值"); return; } if (txt_directionAngle.Text.Trim() != "") { if (Convert.ToDouble(txt_directionAngle.Text.Trim()) < 0 || Convert.ToDouble(txt_directionAngle.Text.Trim()) > 360) { MessageBox.Show("请输入正确的水平角度"); return; } } if (txt_pitchAngle.Text.Trim() != "") { if (Convert.ToDouble(txt_pitchAngle.Text.Trim()) < -90 || Convert.ToDouble(txt_pitchAngle.Text.Trim()) > 90) { MessageBox.Show("请输入正确的垂直角度"); return; } } disableBtn(); panel1.BackgroundImage = Properties.Resources.bakground; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { uint pUser = 0; CHCNetSDK.NET_DVR_SERIALSTART_V40 lpSerialStart = new CHCNetSDK.NET_DVR_SERIALSTART_V40(); lpSerialStart.dwSerialType = 2; lpSerialStart.bySerialNum = 1; lpSerialStart.byRes = new byte[0]; unsafe { CHCNetSDK.SERIALDATACALLBACK serialDataCallBack = new CHCNetSDK.SERIALDATACALLBACK(cbSerialDataCallBack); //建立通道 re = CHCNetSDK.NET_DVR_SerialStart(m_lUserID, 2, serialDataCallBack, pUser); if (re == -1) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); //MessageBox.Show("与云台建立透明通道失败:" + iLastErr); return; } } // 水平角度 if (txt_directionAngle.Text.Trim() != "") { double angleD = Convert.ToDouble(txt_directionAngle.Text.Trim()) * (short)(100); string angle = Convert.ToInt16(angleD).ToString("x8"); string msg = "FF 01 00 4B " + angle.Substring(angle.Length - 4, 2) + " " + angle.Substring(angle.Length - 2, 2); byte[] buf = strToHexByte(msg); //byte[] buf = { 0xff, 0x01, 0x00, 0x4b, 0x03, 0xe8, 0x37 }; unsafe { //发送指令 fixed (byte* p = &buf[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("error code= " + iLastErr); return; } } } } // 垂直角度 if (txt_pitchAngle.Text.Trim() != "") { string angle = ""; //(Convert.ToDouble(txt_pitchAngle.Text.Trim()) * (short)(100)).ToString("x8"); string msg = ""; if (Convert.ToDouble(txt_pitchAngle.Text.Trim()) < 0) { double angleD = Math.Abs(Convert.ToDouble(txt_pitchAngle.Text.Trim()) * (short)(100)); angle = Convert.ToInt16(angleD).ToString("x8"); //angle = Math.Abs((Convert.ToInt16(txt_pitchAngle.Text.Trim()) * (short)(100))).ToString("x8"); } else { double angleD = Convert.ToDouble(txt_pitchAngle.Text.Trim()) * (short)(100); angle = (36000 - Convert.ToInt16(angleD)).ToString("x8"); //angle = (36000 - Convert.ToInt16(txt_pitchAngle.Text.Trim()) * (short)(100)).ToString("x8"); } //if (txt_directionAngle.Text.Trim() != "") //{ // msg = "FF 01 00 4A " + angle.Substring(angle.Length - 4, 2) + " " + angle.Substring(angle.Length - 2, 2); //} //else { msg = "FF 01 00 4D " + angle.Substring(angle.Length - 4, 2) + " " + angle.Substring(angle.Length - 2, 2); } byte[] buf = strToHexByte(msg); //byte[] buf = { 0xff, 0x01, 0x00, 0x4d, 0x03, 0xe8, 0x39 }; unsafe { //发送指令 fixed (byte* p = &buf[0]) { bool re2 = CHCNetSDK.NET_DVR_SerialSend(re, 1, p, (uint)buf.Length); if (!re2) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); MessageBox.Show("error code= " + iLastErr); return; } } } } } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/toPosition" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&horizontalAngle=" + txt_directionAngle.Text.Trim() + "&verticalAngle=" + txt_pitchAngle.Text.Trim(); string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } } catch (Exception ex) { } finally { if (re != -1) CHCNetSDK.NET_DVR_SerialStop(re); new Thread(new ThreadStart(() => { Thread.Sleep(6000); getAngle(); })).Start(); } } /// <summary> /// 字符串转16进制字节数组 /// </summary> /// <param name="hexString"></param> /// <returns></returns> private static byte[] strToHexByte(string hexString) { string[] arr = hexString.Split(' '); string st = (Convert.ToInt32(arr[1], 16) + Convert.ToInt32(arr[2], 16) + Convert.ToInt32(arr[3], 16) + Convert.ToInt32(arr[4], 16) + Convert.ToInt32(arr[5], 16)).ToString("x8"); hexString = hexString + " " + st.Substring(st.Length - 2, 2); hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += "0"; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return returnBytes; } private void btn_presetAdd_Click(object sender, EventArgs e) { try { if((cbBox_lineList.Items.Count >= 5 && !cbBox_lineList.Items.Contains(txt_line.Text.Trim())) || (cbBox_presetList.Items.Count >=200 && !cbBox_presetList.Items.Contains(txt_preset.Text.Trim()))) { MessageBox.Show("云台支持5条巡航线,每条巡航线支持200个巡航点"); return; } if (txt_line.Text.Trim() == "") { MessageBox.Show("请输入巡航号"); return; } if (txt_preset.Text.Trim() == "") { MessageBox.Show("请输入预置点号"); return; } if (!checkParam()) return; if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { //设置预置点 bool re = false; re = CHCNetSDK.NET_DVR_PTZPreset(m_lRealHandle, CHCNetSDK.SET_PRESET, Convert.ToUInt32(txt_preset.Text)); //将预置点加入巡航路径 re = false; re = CHCNetSDK.NET_DVR_PTZCruise(m_lRealHandle, CHCNetSDK.FILL_PRE_SEQ, 1, Convert.ToByte(txt_preset.Text), Convert.ToByte(txt_preset.Text)); //设置巡航速度 re = false; re = CHCNetSDK.NET_DVR_PTZCruise(m_lRealHandle, CHCNetSDK.SET_SEQ_SPEED, 1, Convert.ToByte(txt_preset.Text), Convert.ToByte(txt_speed.Text)); re = false; //设置停顿时间 re = CHCNetSDK.NET_DVR_PTZCruise(m_lRealHandle, CHCNetSDK.SET_SEQ_DWELL, 1, Convert.ToByte(txt_preset.Text), Convert.ToByte(txt_presetStop.Text)); getPresetList(); MessageBox.Show("添加成功!"); } else { string line = "", preset = ""; if (cbBox_lineList.Items.Contains(txt_line.Text.Trim())) { line = selectLineValue; } if(cbBox_presetList.Items.Contains(txt_preset.Text.Trim())) { MessageBox.Show("当前已存在" + txt_preset.Text + "巡航点,请重新输入。"); return; } string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/preset" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=presetAdd&" + "&cruiseRoute=" + line + "&presetIndex=" + preset + "&cruiseName=" + txt_line.Text + "&presetName=" + txt_preset.Text + "&speed=" + txt_speed.Text + "&stopTime=" + txt_presetStop.Text + "&direction=" + label_angleD.Text + "&pitch=" + label_angleP.Text + "&alarmValue=" + txt_presetThreshold.Text; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { MessageBox.Show("添加失败"); } else { MessageBox.Show("添加成功"); getLineList(); } getAngle(); } } catch (Exception ex) { MessageBox.Show("添加失败,请核对输入" ); } /*else if (txt_line.Text == "fwcasic") //复位 { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/setPreset" + "?deviceIp=" + ip + "&command=" + "79"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False"){} return; } else if (txt_line.Text == "dlcasic") // 调整电流大小 { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/setPreset" + "?deviceIp=" + ip + "&command=" + "82A" + txt_preset.Text; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } return; }*/ } private void btn_presetDel_Click(object sender, EventArgs e) { try { if(checkInputbyCheck(true)) { DialogResult dr = MessageBox.Show("删除" + txt_line.Text + "," + txt_preset.Text + "之前,是否需要先转到该预置点?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { bool re = false; re = CHCNetSDK.NET_DVR_PTZPreset(m_lRealHandle, CHCNetSDK.GOTO_PRESET, Convert.ToUInt32(txt_preset.Text)); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/preset" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=toPreset&presetIndex=" + selectPresetValue + "&cruiseRoute=" + selectLineValue + "&cruiseName=" + txt_line.Text + "&presetName=" + txt_preset.Text; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } // 等待云台转到预置点 Thread.Sleep(1000); deletePoint(); } } else { deletePoint(); } getPresetList(); } /* byte pointNum = (byte)Convert.ToInt16(txt_preset.Text.Trim()); bool isExist = false; CHCNetSDK.NET_DVR_CRUISE_RET ret = new CHCNetSDK.NET_DVR_CRUISE_RET(); CHCNetSDK.NET_DVR_GetPTZCruise(m_lUserID, 1, 1, ref ret); CHCNetSDK.NET_DVR_CRUISE_POINT[] points = ret.struCruisePoint; for (int i = 0; i < cbBox_presetList.Items.Count; i++) { if (cbBox_presetList.Items[i].ToString() == pointNum.ToString()) { isExist = true; break; } } if (!isExist) { MessageBox.Show("不存在该预置点!"); return; }*/ } catch (Exception ex) { MessageBox.Show("删除失败:" + ex.Message); } } private void deletePoint() { DialogResult dr = MessageBox.Show("确认删除此预置点?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/preset" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=presetDel&presetIndex=" + selectPresetValue + "&cruiseRoute=" + selectLineValue + "&cruiseName=" + txt_line.Text + "&presetName=" + txt_preset.Text; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { MessageBox.Show("删除失败!"); } else { MessageBox.Show("删除成功!"); } getLineList(); } } //设置报警阈值 private void btn_save_Click(object sender, EventArgs e) { string query = "?monitorId=" + monitorId + "&" + "high=" + txt_therod.Text.Trim(); string result = Http.http("http://" + ConfigHelper.GetAppConfig("server").ToString().Trim() + "/alarm/resetAlarmRule" + query, "POST", null); if (result == "") { MessageBox.Show("服务器异常,设置失败"); return; } JObject json = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText); if (json["code"].ToString() == "200") { MessageBox.Show("设置成功"); } } private void btn_takePhoto_Click(object sender, EventArgs e) { take_Photo(); } public void take_Photo() { //btn_clean.Text = "清洁镜头"; int lChannel = 1; //通道号 Channel number CHCNetSDK.NET_DVR_JPEGPARA lpJpegPara = new CHCNetSDK.NET_DVR_JPEGPARA(); lpJpegPara.wPicQuality = 0; //图像质量 Image quality lpJpegPara.wPicSize = 0xff; //抓图分辨率 Picture size: 0xff-Auto(使用当前码流分辨率) //抓图分辨率需要设备支持,更多取值请参考SDK文档 //JPEG抓图保存成文件 Capture a JPEG picture string path = ConfigHelper.GetAppConfig("saveImagePath").Trim(); if (!System.IO.Directory.Exists(ConfigHelper.GetAppConfig("saveImagePath"))) { System.IO.Directory.CreateDirectory(ConfigHelper.GetAppConfig("saveImagePath")); } string sJpegPicFileName; sJpegPicFileName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".jpg";//图片保存路径和文件名 the path and file name to save if (!CHCNetSDK.NET_DVR_CaptureJPEGPicture(m_lUserID, lChannel, ref lpJpegPara, sJpegPicFileName)) { string str = "NET_DVR_CaptureJPEGPicture failed, error code= "; //MessageBox.Show(str); return; } else { replace_Photo(sJpegPicFileName); MessageBox.Show("图片已保存至:" + path); } } private void replace_Photo(string sJpegPicFileName) { FileStream fs = new FileStream(Application.StartupPath + "\\" + sJpegPicFileName, FileMode.Open); byte[] bytes = new byte[fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); MemoryStream ms = new MemoryStream(bytes); Bitmap bitmap = new Bitmap(ms); Graphics gh = Graphics.FromImage(bitmap); SolidBrush a = new SolidBrush(Color.Red); Font font = new Font("微软雅黑", 20f, FontStyle.Bold); gh.DrawString("CH4: " + label_gasValue.Text + "ppm·m", font, a, 40, 80); bitmap.Save(ConfigHelper.GetAppConfig("saveImagePath").Trim() + sJpegPicFileName, System.Drawing.Imaging.ImageFormat.Jpeg); bitmap.Dispose(); bitmap = null; File.Delete(Application.StartupPath + "\\" + sJpegPicFileName); } private void btn_zoomIn_MouseDown(object sender, MouseEventArgs e) { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.ZOOM_IN, 0); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=zoomIn&isStop=0"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } } private void btn_zoomIn_MouseUp(object sender, MouseEventArgs e) { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.ZOOM_IN, 1); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=zoomIn&isStop=1"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } } private void btn_zoomOut_MouseDown(object sender, MouseEventArgs e) { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.ZOOM_OUT, 0); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=zoomOut&isStop=0"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } } private void btn_zoomOut_MouseUp(object sender, MouseEventArgs e) { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.ZOOM_OUT, 1); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=zoomOut&isStop=1"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } } private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.ColumnIndex == 5) { try { DataGridViewRow row = dataGridView1.Rows[e.RowIndex]; string id = row.Cells["id"].Value.ToString(); string alarmDirection = row.Cells["alarmDirection"].Value.ToString(); string alarmTime = row.Cells["alarmTime"].Value.ToString(); string alarmValue = row.Cells["alarmValue"].Value.ToString(); DialogCancelAlarm cancel = new DialogCancelAlarm(id, alarmTime, alarmValue, alarmDirection); if (cancel.ShowDialog() == DialogResult.OK) { /* MessageBox.Show("操作成功", "提示"); getDataGridViewData(); if (CtrlHome.ctrlHome.alarmId_1 == id) { CtrlHome.ctrlHome.alarmId_1 = ""; CtrlHome.ctrlHome.panel_video1.BackgroundImage = Properties.Resources.小监控窗口紫色; } else if (CtrlHome.ctrlHome.alarmId_2 == id) { CtrlHome.ctrlHome.alarmId_2 = ""; CtrlHome.ctrlHome.panel_video2.BackgroundImage = Properties.Resources.小监控窗口紫色; } else if (CtrlHome.ctrlHome.alarmId_3 == id) { CtrlHome.ctrlHome.alarmId_3 = ""; CtrlHome.ctrlHome.panel_video3.BackgroundImage = Properties.Resources.小监控窗口紫色; } else if (CtrlHome.ctrlHome.alarmId_4 == id) { CtrlHome.ctrlHome.alarmId_4 = ""; CtrlHome.ctrlHome.panel_video4.BackgroundImage = Properties.Resources.小监控窗口紫色; }*/ } } catch (Exception ex) { MessageBox.Show("编辑失败:" + ex, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else if (e.ColumnIndex == 6) { //定位 DataGridViewRow row = dataGridView1.Rows[e.RowIndex]; string alarmDirection = row.Cells["alarmDirection"].Value.ToString(); string[] sArray = alarmDirection.Split(','); if (sArray.Length != 2) return; string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/toPosition" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&horizontalAngle=" + sArray[0].ToString() + "&verticalAngle=" + sArray[1].ToString(); string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } } else if (e.ColumnIndex == 7) { //播放录像 if (ConfigHelper.GetAppConfig("hasNVR") == "1") { DateTime startTime = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells["alarmTime"].Value.ToString()).AddSeconds(-10); DateTime endTime = startTime.AddSeconds(20); take_Video(CtrlHome.userIdNVR, startTime, endTime); } else { playRadio(e.RowIndex); } } } public void take_Video(int m_lUserID, DateTime dateTimeStart, DateTime dateTimeEnd) { try { // 如果已经正在回放,先停止回放;暂停实时播放 if (rt_lRealHandle >= 0) { CHCNetSDK.NET_DVR_StopRealPlay(rt_lRealHandle); rt_lRealHandle = -1; } CHCNetSDK.NET_DVR_StopPlayBack(rt_lBackHandle); } catch (Exception e) { } CHCNetSDK.NET_DVR_VOD_PARA struVodPara = new CHCNetSDK.NET_DVR_VOD_PARA(); struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara); struVodPara.struIDInfo.dwChannel = (uint)CtrlHome.iChannelNum[index]; //通道号 Channel number struVodPara.hWnd = pictureBox1.Handle;//回放窗口句柄 //设置回放的开始时间 Set the starting time to search video files struVodPara.struBeginTime.dwYear = (uint)dateTimeStart.Year; struVodPara.struBeginTime.dwMonth = (uint)dateTimeStart.Month; struVodPara.struBeginTime.dwDay = (uint)dateTimeStart.Day; struVodPara.struBeginTime.dwHour = (uint)dateTimeStart.Hour; struVodPara.struBeginTime.dwMinute = (uint)dateTimeStart.Minute; struVodPara.struBeginTime.dwSecond = (uint)dateTimeStart.Second; //设置回放的结束时间 Set the stopping time to search video files struVodPara.struEndTime.dwYear = (uint)dateTimeEnd.Year; struVodPara.struEndTime.dwMonth = (uint)dateTimeEnd.Month; struVodPara.struEndTime.dwDay = (uint)dateTimeEnd.Day; struVodPara.struEndTime.dwHour = (uint)dateTimeEnd.Hour; struVodPara.struEndTime.dwMinute = (uint)dateTimeEnd.Minute; struVodPara.struEndTime.dwSecond = (uint)dateTimeEnd.Second; //按时间回放 Playback by time rt_lBackHandle = CHCNetSDK.NET_DVR_PlayBackByTime_V40(m_lUserID, ref struVodPara); if (rt_lBackHandle < 0) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); string str = "NET_DVR_PlayBackByTime_V40 failed, error code= " + iLastErr; MessageBox.Show(str); return; } uint iOutValue = 0; if (!CHCNetSDK.NET_DVR_PlayBackControl_V40(rt_lBackHandle, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue)) { uint iLastErr = CHCNetSDK.NET_DVR_GetLastError(); string str = "NET_DVR_PLAYSTART failed, error code= " + iLastErr; //回放控制失败,输出错误号 MessageBox.Show(str); return; } } public void playRadio(int RowIndex) { //播放录像 try { if (RowIndex > dataGridView1.RowCount || RowIndex < 0) { MessageBox.Show("此段无视频"); return; } DataGridViewRow row = dataGridView1.Rows[RowIndex]; DateTime endTime = Convert.ToDateTime(row.Cells["alarmTime"].Value.ToString()); DateTime startTime = endTime.AddMinutes(-2); string[] arr = Directory.GetFiles(ConfigHelper.GetAppConfig("saveImagePath").Trim() + monitorName); if (arr.Length == 0) return; else { int length = arr[0].Split('\\').Length; for (int i = 0; i < arr.Length; i++) { string str = arr[i].Split('\\')[length - 1].Remove(10, 1).Insert(10, " ").Remove(13, 1).Insert(13, ":").Remove(16, 1).Insert(16, ":"); DateTime datetime = Convert.ToDateTime(str.Substring(0,str.Length-4)); if (datetime >= startTime && datetime <= endTime) { //string sVideoFileName = ConfigHelper.GetAppConfig("saveImagePath").Trim() + monitorName + "\\" + arr[i]; Process.Start(arr[i]); return; } } } } catch { playRadio(RowIndex + 1); } } private void label_presetListDown_Click(object sender, EventArgs e) { cbBox_presetList.DroppedDown = true; } private void cbBox_lineList_SelectedIndexChanged(object sender, EventArgs e) { if (cbBox_lineList.SelectedItem == null) { selectLineValue = ""; return; } txt_line.Text = cbBox_lineList.SelectedItem.ToString(); selectLineValue = findSelectValue(LineArr, cbBox_lineList.SelectedItem.ToString()); txt_preset.Text = ""; getPresetList(); } private void cbBox_presetList_SelectedIndexChanged(object sender, EventArgs e) { if (cbBox_presetList.SelectedItem == null) { selectPresetValue = ""; return; } txt_preset.Text = cbBox_presetList.SelectedItem.ToString(); selectPresetValue = findSelectValue(PresetArr, cbBox_presetList.SelectedItem.ToString()); } private void btn_zoomIn_Click_1(object sender, EventArgs e) { } private void CtrlRealTime_Load(object sender, EventArgs e) { //int a = 1; } /* private void list_allPoint_Scroll(object sender, ScrollEventArgs e) { int offSetValue = list_allPoint.HorizontalScrollingOffset; try { list_allPoint.HorizontalScrollingOffset = offSetValue; } catch { } list_allPoint.Invalidate(); }*/ private void panel24_Click(object sender, EventArgs e) { preview(); } private void cancel_alarm_one_Click(object sender, EventArgs e) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/alarm/cancelAll" + "?monitorId=" + monitorId; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show(ip + "一键消警成功"); getDataGridViewData(); } } private void cancel_alarm_all_Click(object sender, EventArgs e) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/alarm/cancelAll" + "?monitorId="; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("所有设备一键消警成功"); getDataGridViewData(); } } private void label13_Click(object sender, EventArgs e) { cbBox_lineList.DroppedDown = true; } private void tog_clean_CheckedChanged(object sender, EventArgs e) { try { if (tog_clean.Checked) { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.WIPER_PWRON, 0); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=clean&isStop=0"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } return; } new Thread(new ThreadStart(() => { Thread.Sleep(10000); tog_clean.Checked = false; })).Start(); } else { if (ConfigHelper.GetAppConfig("controlType").ToString().Trim() == "1") { CHCNetSDK.NET_DVR_PTZControl(m_lRealHandle, CHCNetSDK.WIPER_PWRON, 1); } else { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/control" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=clean&isStop=1"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } return; } } } catch (Exception ex) { } } // 电源开关 private void tog_switch_CheckedChanged(object sender, EventArgs e) { // HCNet/doorControl?deviceIpPort = &status =,其中deviceIpPort为ip和端口号 用英文逗号","隔开;status 1:开启,0:关闭 try { if (tog_switch.Checked) { DialogResult dr = MessageBox.Show("是否确认打开云台电源?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/doorControl" + "?deviceIpPort=" + ip + "," + port + "&status=1"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } return; } else { return; } } else { DialogResult dr = MessageBox.Show("是否确认关闭云台电源?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/doorControl" + "?deviceIpPort=" + ip + "," + port + "&status=0"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } return; } else { return; } } } catch (Exception ex) { } } private void track_speed_Scroll(object sender, EventArgs e) { speed = track_speed.Value; } public bool checkParam() { try { string pattern = @"^[1-9]\d*$"; // 巡航速度,要求1-63整数 if (!System.Text.RegularExpressions.Regex.IsMatch(txt_speed.Text.Trim(), pattern)) { MessageBox.Show("请输入正确的巡航速度(1-63整数)"); return false; } else if (Convert.ToInt16(txt_speed.Text) < 1 || Convert.ToInt16(txt_speed.Text) > 63) { MessageBox.Show("请输入正确的巡航速度(1-63整数)"); return false; } // 停留时间,要求0-255整数 if (!System.Text.RegularExpressions.Regex.IsMatch(txt_presetStop.Text.Trim(), @"^\d+$")) { MessageBox.Show("请输入正确的停留时间(0-255整数)"); return false; } else if ( Convert.ToInt16(txt_presetStop.Text) > 255 ) { MessageBox.Show("请输入正确的停留时间(0-255整数)"); return false; } // 报警阈值,要求大于0整数 if (!System.Text.RegularExpressions.Regex.IsMatch(txt_presetThreshold.Text.Trim(), pattern)) { MessageBox.Show("请输入正确的报警阈值(大于0整数)"); return false; } } catch(Exception ex) { MessageBox.Show("参数有误,请核对输入"); return false; } return true; } private void btn_presetInsert_Click(object sender, EventArgs e) { try { if (checkInputbyCheck(true)) { if(cbBox_presetList.Items.Count >= 200 && !cbBox_presetList.Items.Contains(txt_preset.Text.Trim())) { MessageBox.Show("每条巡航线支持200个巡航点,本条巡航先已达到。"); return; } if(checkParam()) { DialogPointInsert cancel = new DialogPointInsert(); if (cancel.ShowDialog() == DialogResult.OK) { } } } } catch (Exception ex) { MessageBox.Show("插入预置点失败,请核对输入"); } } // 插入预置点 public void insertPoint(string name) { if(cbBox_presetList.Items.Contains(name)) { MessageBox.Show("当前巡航线已存在" + name + ",请重新命名"); return; } string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/preset" + "?userId=" + m_lUserID + "&realHandle=" + m_lRealHandle + "&deviceIp=" + ip + "&command=presetInsert&&presetIndex=" + selectPresetValue + "&cruiseRoute=" + selectLineValue + "&cruiseName=" + txt_line.Text + "&presetName=" + name + "&speed=" + txt_speed.Text + "&stopTime=" + txt_presetStop.Text + "&direction=" + label_angleD.Text + "&pitch=" + label_angleP.Text + "&alarmValue=" + txt_presetThreshold.Text; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { MessageBox.Show("插入预置点失败"); } else { MessageBox.Show("插入预置点成功"); getLineList(); } getAngle(); } // 预置点列表上方下拉框 private void txt_line_TextChanged(object sender, EventArgs e) { if ( cbBox_lineList.Items.Contains(txt_line.Text) ) { cbBox_lineList.SelectedItem = txt_line.Text; } else { cbBox_lineList.SelectedItem = null; cbBox_presetList.SelectedItem = null; cbBox_presetList.Items.Clear(); txt_preset.Text = ""; selectLineValue = ""; selectPresetValue = ""; } } private void txt_preset_TextChanged(object sender, EventArgs e) { if ( cbBox_presetList.Items.Contains(txt_preset.Text) ) { cbBox_presetList.SelectedItem = txt_preset.Text; } else { cbBox_presetList.SelectedItem = null; selectPresetValue = ""; } } private void cb_allLine_SelectedIndexChanged(object sender, EventArgs e) { try { cb_allLine.Enabled = false; if (cb_allLine.SelectedItem == null) return; txt_allLine.Text = cb_allLine.SelectedItem.ToString(); getPointsViewData(); cb_allLine.Enabled = true; } catch (Exception ex) { } } private void btn_lineEdit_Click(object sender, EventArgs e) { if (checkInputbyCheck(false)) { if (cbBox_lineList.SelectedItem == null) { MessageBox.Show("请选择巡航号"); return; } DialogLineEdit cancel = new DialogLineEdit(ip, selectLineValue, cbBox_lineList.SelectedItem.ToString()); if(cancel.ShowDialog() == DialogResult.OK) { } } } private void btn_lineDel_Click(object sender, EventArgs e) { if (checkInputbyCheck(false)) { DialogResult dr = MessageBox.Show("是否确认删除" + txt_line.Text + "航线?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/cruiseRoute" + "?deviceIp=" + ip + "&command=cruiseDelete&cruiseValue=" + selectLineValue + "&cruiseName=" + txt_line.Text; string result = Http.http(conStr, "POST", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("删除成功!"); getLineList(); } } } } public string findSelectValue(JArray arr, string selectName) { for (int i = 0; i < arr.Count; i++) { if (arr[i]["selectName"].ToString() == selectName) { return arr[i]["selectValue"].ToString(); } } return ""; } public bool checkInputbyCheck(bool checkPreset) { if (txt_line.Text.Trim() == "") { MessageBox.Show("请输入巡航号"); return false; } if (!cbBox_lineList.Items.Contains(txt_line.Text.Trim())) { MessageBox.Show("不存在输入的巡航号,请重新选择"); return false; } if (checkPreset) { if (txt_preset.Text.Trim() == "") { MessageBox.Show("请选择预置点号"); return false; } if (!cbBox_presetList.Items.Contains(txt_preset.Text.Trim())) { MessageBox.Show("不存在输入的预置点,请重新选择"); return false; } } return true; } // 自检 private void btn_restart_Click(object sender, EventArgs e) { new Thread(new ThreadStart(() => { try { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/setPreset" + "?deviceIp=" + ip + "&command=" + "79"; string result = Http.http(conStr, "GET", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("自检成功"); } return; } catch (Exception ex) { } })).Start(); } // 复位 private void btn_exefw_Click(object sender, EventArgs e) { new Thread(new ThreadStart(() => { try { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/specialControl" + "?deviceIp=" + ip + "&command=" + "restart" + "&value="; string result = Http.http(conStr, "POST", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("复位成功"); } return; } catch(Exception ex) { } })).Start(); } private void label23_Click(object sender, EventArgs e) { cb_allLine.DroppedDown = true; } // 全局报警阈值修改 private void txt_therod_TextChanged(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) { return; } new Thread(new ThreadStart(() => { try { if (txt_therod.Text.Trim() == "") { DialogResult dr = MessageBox.Show("全局报警阈值不能设置空,是否置为默认值5000?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { txt_therod.Text = "5000"; } else { return; } } if (allHigh == txt_therod.Text.Trim()) return; if (!System.Text.RegularExpressions.Regex.IsMatch(txt_therod.Text.Trim(), @"^[1-9]\d*$")) { MessageBox.Show("请输入正确的全局报警阈值(大于0整数)"); return; } // 全局报警阈值设置(特殊定制指令) string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/specialControl" + "?deviceIp=" + ip + "&command=" + "68" + "&value=" + txt_therod.Text.Trim(); string result = Http.http(conStr, "POST", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("全局报警阈值设置成功"); getPointsViewData(); } } catch (Exception ex) { MessageBox.Show("请输入正确的全局报警阈值(大于0整数)"); } })).Start(); } // 全局巡航速度修改 private void txt_allSpeed_TextChanged(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) { return; } new Thread(new ThreadStart(() => { try { if (txt_allSpeed.Text.Trim() == "") { DialogResult dr = MessageBox.Show("全局巡航速度不能设置空,是否置为默认值30?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { txt_allSpeed.Text = "30"; } else { return; } } if (allSpeed == txt_allSpeed.Text.Trim()) return; if (!System.Text.RegularExpressions.Regex.IsMatch(txt_allSpeed.Text.Trim(), @"^[1-9]\d*$")) { MessageBox.Show("请输入正确的全局巡航速度(1-63整数)"); return; } else if (Convert.ToInt16(txt_allSpeed.Text) < 1 || Convert.ToInt16(txt_allSpeed.Text) > 63) { MessageBox.Show("请输入正确的全局巡航速度(1-63的整数)"); return; } // 一键巡检速度设置(特殊定制指令) string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/specialControl" + "?deviceIp=" + ip + "&command=" + "99" + "&value=" + txt_allSpeed.Text.Trim(); string result = Http.http(conStr, "POST", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("全局巡检速度设置成功"); } } catch (Exception ex) { MessageBox.Show("请输入正确的全局巡航速度(1-63的整数)"); } })).Start(); } private void btn_clearAll_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("是否确认一键删除该设备所有预置点?" , "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/specialControl" + "?deviceIp=" + ip + "&command=" + "65136"; string result = Http.http(conStr, "POST", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("删除成功!"); getLineList(); } } } // 全局停留时间修改 private void txt_allStop_TextChanged(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) { return; } new Thread(new ThreadStart(() => { try { if (txt_allStop.Text.Trim() == "") { DialogResult dr = MessageBox.Show("全局停留时间不能设置空,是否置为默认值3?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { txt_allStop.Text = "3"; } else { return; } } if (allStop == txt_allStop.Text.Trim()) return; if (!System.Text.RegularExpressions.Regex.IsMatch(txt_allStop.Text.Trim(), @"^\d+$")) { MessageBox.Show("请输入正确的全局停留时间(0-255的整数)"); return; } else if (Convert.ToInt16(txt_allStop.Text) > 255) { MessageBox.Show("请输入正确的全局停留时间(0-255的整数)"); return; } // 一键巡检速度设置(特殊定制指令) string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/specialControl" + "?deviceIp=" + ip + "&command=" + "9A" + "&value=" + txt_allStop.Text.Trim(); string result = Http.http(conStr, "POST", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("全局停留时间设置成功"); } } catch (Exception ex) { MessageBox.Show("请输入正确的全局停留时间(0-255的整数)"); } })).Start(); } // 全局检测角度修改 private void txt_allAngle_TextChanged(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) { return; } new Thread(new ThreadStart(() => { try { if (txt_allAngle.Text.Trim() == "") { DialogResult dr = MessageBox.Show("全局检测角度不能设置空,是否置为默认值5?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.OK) { txt_allAngle.Text = "5"; } else { return; } } if (allAngle == txt_allAngle.Text.Trim()) return; if (!System.Text.RegularExpressions.Regex.IsMatch(txt_allAngle.Text.Trim(), @"^(\d+)(\.\d{1})?$")) { MessageBox.Show("请输入检测全局偏移角度(0-25.5的整数或一位小数)"); return; } else if (Convert.ToDouble(txt_allAngle.Text.Trim()) > 25.5) { MessageBox.Show("请输入检测全局偏移角度(0-25.5的整数或一位小数)"); return; } double angle = Convert.ToDouble(txt_allAngle.Text.Trim()) * 10; string paramAngle = ((int)angle).ToString(); // 一键检测角度设置(特殊定制指令) string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/HCNet/specialControl" + "?deviceIp=" + ip + "&command=" + "94" + "&value=" + paramAngle; string result = Http.http(conStr, "POST", null); if (result == "" || ((JObject)JsonConvert.DeserializeObject(result))["success"].ToString() == "False") { } else { MessageBox.Show("全局检测偏移角度设置成功"); } } catch (Exception ex) { MessageBox.Show("请输入检测全局偏移角度(0-25.5的整数或一位小数)"); } })).Start(); } public bool checkInCruise() { string conStr = "http://" + ConfigHelper.GetAppConfig("server").Trim() + "/alarm/alarmRule" + "?monitorId=" + monitorId; string result = Http.http(conStr, "GET", null); JObject json = (JObject)JsonConvert.DeserializeObject(result); if (result == "" || json["success"].ToString() == "False") { } else { JObject data = (JObject)JsonConvert.DeserializeObject(json["data"].ToString()); string cruise = data["cruise"].ToString(); } return true; } } }