private void DataLineFormPro_Load(object sender, EventArgs e) { if (_para.StationGrade.Contains("台站")) { _para.StationProList = new List <Common.StationPara>(); string conn = $"Data Source={_para.SqlServerPara.SqlIp};Initial Catalog={_para.SqlServerPara.SqlDb};User ID={_para.SqlServerPara.SqlUser};Password={_para.SqlServerPara.SqlPwd};"; RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(conn); var stations = (from s in radarDataContext.StationParaTable select s).Distinct().ToList(); foreach (Common.StationPara station in stations.Select(s => new Common.StationPara { StationId = s.StationID, StationName = s.StationName, Slong = s.Slong, Slat = s.Slat })) { _para.StationProList.Add(station); } } DateTime dt = DateTime.Now; DateTime dtvalue = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0); dtpEndTime.MaxDate = dtvalue; dtpEndTime.Value = dtvalue; dtpStartTime.MaxDate = dtvalue; dtpStartTime.Value = dtvalue.AddHours(-1); stationchkListBox.Items.Add("全选"); string[] ss = (from d in _para.StationProList select d.StationId).ToArray(); stationchkListBox.Items.AddRange(ss); }
private void cmbGrade_SelectedIndexChanged(object sender, EventArgs e) { if (cmbGrade.SelectedItem.ToString().Contains("省级")) { gbSerialPort.Enabled = false; dgvStationList.ReadOnly = true; string conn = $"Data Source={tbSqlIp.Text};Initial Catalog={tbDataBase.Text};User ID={tbUser.Text};Password={tbPassword.Text};"; RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(conn); var stations = (from s in radarDataContext.StationParaTable select s).Distinct().ToList(); dgvStationList.RowCount = stations.Count; for (int i = 0; i < dgvStationList.RowCount; i++) { dgvStationList[0, i].Value = (i + 1).ToString(CultureInfo.InvariantCulture); dgvStationList[1, i].Value = stations[i].StationID; dgvStationList[2, i].Value = stations[i].StationName; dgvStationList[3, i].Value = stations[i].Slong; dgvStationList[4, i].Value = stations[i].Slat; } } else { gbSerialPort.Enabled = true; dgvStationList.ReadOnly = false; dgvStationList.RowCount = 1; dgvStationList[0, 0].Value = "1"; dgvStationList[1, 0].Value = _para.StationInfo.StationId; dgvStationList[2, 0].Value = _para.StationInfo.StationName; dgvStationList[3, 0].Value = _para.StationInfo.Slong; dgvStationList[4, 0].Value = _para.StationInfo.Slat; } }
public DataBaseHelper(string connstr) { _radarDataContext = new RadarDataClassesDataContext(connstr); }
private void MainForm_Load(object sender, EventArgs e) { try { var updater = Updater.Instance; updater.Error += updater_Error; updater.UpdatesFound += updater_UpdatesFound; updater.NoUpdatesFound += updater_NoUpdatesFound; updater.MinmumVersionRequired += updater_OnUpdaterOnMinmumVersionRequired; updater.BeginCheckUpdateInProcess(); } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"自动更新过程出错", exception); } try { _para = Parameter.ReadCfg(); } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"读取系统参数过程出错", exception); MessageBox.Show(@"读取系统参数过程出错", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (_para.StationGrade.Contains("省级")) { //采集器设置ToolStripMenuItem.Visible = false; 台站选择ToolStripMenuItem.Visible = true; try { _para.StationProList = new List <StationPara>(); string conn = $"Data Source={_para.SqlServerPara.SqlIp};Initial Catalog={_para.SqlServerPara.SqlDb};User ID={_para.SqlServerPara.SqlUser};Password={_para.SqlServerPara.SqlPwd};"; RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(conn); var stations = (from s in radarDataContext.StationParaTable select s).Distinct().ToList(); foreach (StationPara station in stations.Select(s => new StationPara { StationId = s.StationID, StationName = s.StationName, Slong = s.Slong, Slat = s.Slat })) { _para.StationProList.Add(station); } foreach (ToolStripMenuItem stationToolStripMenuItem in stations.Select(station => new ToolStripMenuItem { Name = "stationToolStripMenuItem", Text = station.StationName, Tag = station.StationID })) { stationToolStripMenuItem.Click += StationToolStripMenuItem_Click; 台站选择ToolStripMenuItem.DropDownItems.Add(stationToolStripMenuItem); StationToolStripMenuItem_Click(stationToolStripMenuItem, e); } } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"加载站点信息出错", exception); MessageBox.Show(@"加载站点信息出错", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { //采集器设置ToolStripMenuItem.Visible = true; 台站选择ToolStripMenuItem.Visible = false; _smcForm = new StatusMonitorControlForm { MdiParent = this, WindowState = FormWindowState.Maximized, Para = _para, StationId = _para.StationInfo.StationId, }; _smcForm.Show(); } _tmr.Start(); }
private void 系统设置ToolStripMenuItem_Click(object sender, EventArgs e) { string staitongrad = _para.StationGrade; using (SettingForm setForm = new SettingForm()) { var result = setForm.ShowDialog(); if (result == DialogResult.OK) { _para = Parameter.ReadCfg(); if (!_para.StationGrade.Equals(staitongrad)) { foreach (Form mdiChild in MdiChildren) { ((StatusMonitorControlForm)mdiChild).CanClose = true; mdiChild.Close(); } if (_para.StationGrade.Contains("省级")) { //采集器设置ToolStripMenuItem.Visible = false; 台站选择ToolStripMenuItem.Visible = true; 台站选择ToolStripMenuItem.DropDownItems.Clear(); try { _para.StationProList = new List <StationPara>(); string conn = $"Data Source={_para.SqlServerPara.SqlIp};Initial Catalog={_para.SqlServerPara.SqlDb};User ID={_para.SqlServerPara.SqlUser};Password={_para.SqlServerPara.SqlPwd};"; RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(conn); var stations = (from s in radarDataContext.StationParaTable select s).Distinct().ToList(); foreach (StationPara station in stations.Select(s => new StationPara { StationId = s.StationID, StationName = s.StationName, Slong = s.Slong, Slat = s.Slat })) { _para.StationProList.Add(station); } foreach (ToolStripMenuItem stationToolStripMenuItem in stations.Select(station => new ToolStripMenuItem { Name = "stationToolStripMenuItem", Text = station.StationName, Tag = station.StationID })) { stationToolStripMenuItem.Click += StationToolStripMenuItem_Click; 台站选择ToolStripMenuItem.DropDownItems.Add(stationToolStripMenuItem); StationToolStripMenuItem_Click(stationToolStripMenuItem, e); } } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"加载站点信息出错", exception); MessageBox.Show(@"加载站点信息出错", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { //采集器设置ToolStripMenuItem.Visible = true; 台站选择ToolStripMenuItem.Visible = false; _smcForm = new StatusMonitorControlForm { MdiParent = this, WindowState = FormWindowState.Maximized, Para = _para, StationId = _para.StationInfo.StationId }; _smcForm.Show(); } } } } }
private void btnQuery_Click(object sender, EventArgs e) { Thread drawDataLineProThread = new Thread((ThreadStart) delegate { try { _synchContext.Post(a => { gbControl.Enabled = false; stationchkListBox.Enabled = false; powerchkListBox.Enabled = false; circularProgress.IsRunning = true; circularProgress.Visible = true; }, null); _powerDataDics.Clear(); _sheetNameList.Clear(); List <string> stationsList = new List <string>(); for (int i = 1; i < stationchkListBox.Items.Count; i++) { if (stationchkListBox.GetItemChecked(i)) { stationsList.Add(stationchkListBox.GetItemText(stationchkListBox.Items[i])); } } string conn = $"Data Source={_para.SqlServerPara.SqlIp};Initial Catalog={_para.SqlServerPara.SqlDb};User ID={_para.SqlServerPara.SqlUser};Password={_para.SqlServerPara.SqlPwd};"; DateTime sdt = dtpStartTime.Value; DateTime edt = dtpEndTime.Value; RadarDataClassesDataContext radarDataClasses = new RadarDataClassesDataContext(conn); List <string> powerList = new List <string>(); for (int i = 1; i < powerchkListBox.Items.Count; i++) { if (powerchkListBox.GetItemChecked(i)) { powerList.Add(powerchkListBox.GetItemText(powerchkListBox.Items[i])); } } for (int i = 0; i < powerList.Count; i++) { powerList[i] = DataEnum2Titles.ToProperties(powerList[i]); } _synchContext.Post(a => { chartVolCur.Titles.Clear(); chartVolCur.Titles.Add("电源数据曲线图"); chartVolCur.Titles.Add( $"({sdt.ToString(CultureInfo.InvariantCulture)}——{edt.ToString(CultureInfo.InvariantCulture)})"); chartVolCur.ChartAreas.Clear(); chartVolCur.Series.Clear(); chartVolCur.Legends.Clear(); ChartArea ca = new ChartArea("Default"); chartVolCur.ChartAreas.Add(ca); chartVolCur.ChartAreas[0].AxisX.IsMarginVisible = true; chartVolCur.ChartAreas[0].AxisX.Interval = 1; chartVolCur.ChartAreas[0].AxisX.MajorGrid.Interval = 1; //chartVolCur.Legends["Legend2"].DockedToChartArea = "Default"; foreach (var stationid in stationsList) { Dictionary <string, List <string> > powerDataDic = new Dictionary <string, List <string> >(); List <string> columnName = new List <string>(); chartVolCur.Legends.Add(new Legend(stationid) { Title = stationid, Docking = Docking.Bottom }); foreach (var powerName in powerList) { //chartVolCur.Legends["Legend2"].CellColumns.Add(new LegendCellColumn("Name", LegendCellColumnType.Text, stationid)); // Assign the legend to Series1. Series s = new Series(stationid + "_" + powerName) { MarkerSize = 10, MarkerStyle = MarkerStyle.Star10, ChartType = SeriesChartType.Line, IsValueShownAsLabel = true, BorderWidth = 3, ShadowOffset = 1, Legend = stationid, LegendText = DataEnum2Titles.ToTitles(powerName), IsVisibleInLegend = true, Font = new Font("Microsoft Sans Serif", 8F, FontStyle.Bold), }; var allpowerdata = (from vol in radarDataClasses.PowerDataTable where stationsList.Contains(vol.StationID) && vol.DateTime >= sdt && vol.DateTime <= edt orderby vol.DateTime ascending select vol).ToList(); for (int i = 0; i <= (edt - sdt).TotalMinutes; i++) { DateTime dt = sdt.AddMinutes(i); List <string> powerdata = new List <string>(); if (!powerDataDic.ContainsKey(dt.ToString(CultureInfo.InvariantCulture))) { powerDataDic.Add(dt.ToString(CultureInfo.InvariantCulture), powerdata); } var pd = (from v in allpowerdata where v.DateTime == dt && v.StationID == stationid select v).Distinct().ToList(); if (pd.Count > 0) { object obj = (typeof(PowerDataTable)).GetProperty(powerName).GetValue(pd[0], null); s.Points.AddXY(dt.ToString("HH:mm"), obj); powerDataDic[dt.ToString(CultureInfo.InvariantCulture)].Add(obj.ToString()); } else { s.Points.AddXY(dt.ToString("HH:mm"), DBNull.Value); powerDataDic[dt.ToString(CultureInfo.InvariantCulture)].Add(string.Empty); } } chartVolCur.Series.Add(s); columnName.Add(DataEnum2Titles.ToTitles(powerName)); } _powerDataDics.Add(stationid, powerDataDic); _sheetNameList.Add(stationid, columnName); } }, null); } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"数据查询并绘制曲线过程出错", exception); _synchContext.Post(a => MessageBox.Show(this, @"绘制复杂曲线过程错误," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error) , null); } finally { _synchContext.Post(a => { gbControl.Enabled = true; stationchkListBox.Enabled = true; powerchkListBox.Enabled = true; circularProgress.IsRunning = false; circularProgress.Visible = false; }, null); } }) { IsBackground = true }; drawDataLineProThread.Start(); }
private void 实时采集ToolStripMenuItem_Click(object sender, EventArgs e) { DateTime dt = DateTime.Now; DateTime obdt = dt.AddSeconds(-dt.Second).AddMilliseconds(-dt.Millisecond); #region 台站级别发送指令 if (Para.StationGrade.Contains("台站")) { Thread collectThread = new Thread((ThreadStart) delegate { try { SerialPortOperate tempSerialPortOperate = _serialPort; //_tempSerialPortOperate.ReturnCollectorRecData += ManualRecDataProcessing; byte[] cmd = SerialPortCmdCombine.SetBaseCommand("FF", "03"); CommonLogHelper.GetInstance("LogInfo") .Info($@"实时采集:发送采集命令:{string.Join(" ", cmd.Select(x => x.ToString("X2")).ToArray())}"); tempSerialPortOperate.SendCommand(cmd); } catch (Exception ex) { CommonLogHelper.GetInstance("LogInfo").Info(@"实时采集:发送串口命令获取数据过程出错"); CommonLogHelper.GetInstance("LogError").Error(@"实时采集:发送串口命令获取数据过程出错", ex); _synchContext.Post(a => MessageBox.Show(this, @"实时采集:发送串口命令获取数据过程出错," + ex.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error) , null); } }) { IsBackground = true }; collectThread.Start(); } #endregion 台站级别发送指令 #region 省级级别操作数据库 try { if (Para.StationGrade.Contains("省级")) { Thread collectProThread = new Thread((ThreadStart) delegate { tSSLSystemStatus.Text = @"获取最新数据"; RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(_conn); DataAdapter dataadp = new DataAdapter(StationId, obdt); dataadp.DataResolve(radarDataContext); _synchContext.Post(a => { try { if (dataadp.AlarmStatusData != null) { radarStatusUI.SetAlarmStatus(dataadp.AlarmStatusData); } if (dataadp.ControlStatusData != null) { radarControlUI.SetControlStatus(dataadp.ControlStatusData); } if (dataadp.RadarPowerData != null) { powerIndicationUI.SetPowerDataValue(dataadp.RadarPowerData); } if (dataadp.AlarmStatusData != null || dataadp.ControlStatusData != null || dataadp.RadarPowerData != null) { tSSLDataUpdateTime.Text = $"数据更新时间:{obdt.ToString("yyyy-MM-dd HH:mm")}"; } else { MessageBox.Show(@"无当前实时数据"); } } catch (Exception ex) { MessageBox.Show(@"数据显示到界面上出错" + ex); } }, null); CommonLogHelper.GetInstance("LogInfo").Info(@"获取数据库数据成功"); try { RadarFailureAlarm(dataadp.AlarmStatusData); } catch (Exception ex) { CommonLogHelper.GetInstance("LogError").Error(@"雷达故障报警过程出错", ex); } }) { IsBackground = true }; collectProThread.Start(); } } catch (Exception ex) { MessageBox.Show(this, @"提取数据库数据处理过程出错" + ex, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } #endregion 省级级别操作数据库 }
private void tmr_Elapsed(object sender, EventArgs e) { DateTime dt = DateTime.Now; DateTime obdt = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0); if (dt.Minute % Para.UpdateDataIntl == 0 && dt.Second == 30) { #region 台站级别发送指令 if (Para.StationGrade.Contains("台站")) { Thread collectTimeThread = new Thread((ThreadStart) delegate { try { _synchContext.Post(a => { toolSslNextUpdateTime.Text = $"下次采集时间:{obdt.AddSeconds(30).AddMinutes(Para.UpdateDataIntl).ToString("yyyy-MM-dd HH:mm:ss")}"; tSSLSystemStatus.Text = @"正在获取最新数据"; }, null); byte[] cmd = SerialPortCmdCombine.SetBaseCommand("FF", "03"); CommonLogHelper.GetInstance("LogInfo") .Info($@"发送定时采集命令:{string.Join(" ", cmd.Select(x => x.ToString("X2")).ToArray())}"); _isCollect = true; _serialPort.SendCommand(cmd); } catch (Exception ex) { CommonLogHelper.GetInstance("LogInfo").Info(@"发送串口命令获取数据过程出错"); CommonLogHelper.GetInstance("LogError").Error(@"发送串口命令获取数据过程出错", ex); } }) { IsBackground = true }; collectTimeThread.Start(); } #endregion 台站级别发送指令 } if (dt.Second == 40) { #region 停止声音报警 _soundAlarm.StopAlarm(); #endregion 停止声音报警 } if (dt.Minute % Para.UpdateDataIntl == 0 && dt.Second == 45) { #region 省级级别操作数据库 if (Para.StationGrade.Contains("省级")) { Thread collectProThread = new Thread((ThreadStart) delegate { try { bool havePowerData = false; tSSLSystemStatus.Text = @"获取最新数据"; RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(_conn); DataAdapter dataadp = new DataAdapter(StationId, obdt); dataadp.DataResolve(radarDataContext); _synchContext.Post(a => { toolSslNextUpdateTime.Text = $"下次采集时间:{obdt.AddSeconds(45).AddMinutes(Para.UpdateDataIntl).ToString("yyyy-MM-dd HH:mm:ss")}"; try { if (dataadp.AlarmStatusData != null) { radarStatusUI.SetAlarmStatus(dataadp.AlarmStatusData); } else { CommonLogHelper.GetInstance("LogInfo").Error(@"无当前报警数据"); } if (dataadp.ControlStatusData != null) { radarControlUI.SetControlStatus(dataadp.ControlStatusData); } else { CommonLogHelper.GetInstance("LogInfo").Error(@"无当前状态数据"); } if (dataadp.RadarPowerData != null) { powerIndicationUI.SetPowerDataValue(dataadp.RadarPowerData); havePowerData = true; } else { CommonLogHelper.GetInstance("LogInfo").Error(@"无当前电源数据"); } if (dataadp.AlarmStatusData != null || dataadp.ControlStatusData != null || dataadp.RadarPowerData != null) { tSSLDataUpdateTime.Text = $"数据更新时间:{obdt.ToString("yyyy-MM-dd HH:mm")}"; } } catch (Exception ex) { CommonLogHelper.GetInstance("LogError").Error(@"数据显示到界面上出错", ex); } }, null); CommonLogHelper.GetInstance("LogInfo").Info(@"获取数据库数据成功"); try { RadarFailureAlarm(dataadp.AlarmStatusData); } catch (Exception ex) { CommonLogHelper.GetInstance("LogError").Error(@"雷达故障报警过程出错", ex); } try { if (havePowerData) { PowerDataTable nowpowerData = radarDataContext.PowerDataTable.First(x => x.DateTime == dt && x.StationID == StationId); PowerDataTable prepowerData = radarDataContext.PowerDataTable.First( x => x.DateTime == dt.AddMinutes(-Para.UpdateDataIntl) && x.StationID == StationId); PowerAlarm(obdt, nowpowerData, prepowerData); } } catch (Exception ex) { CommonLogHelper.GetInstance("LogError").Error(@"电源跳变检查过程出错", ex); } } catch (Exception ex) { CommonLogHelper.GetInstance("LogError").Error(@"提取数据库数据处理过程出错", ex); } }) { IsBackground = true }; collectProThread.Start(); } #endregion 省级级别操作数据库 } if (dt.Minute % 5 == 0 && dt.Second == 50) { #region 正常入库失败后批量数据补入 Thread batchDataProcessThread = new Thread((ThreadStart) delegate { bool dbisAvaliable = true; try { RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(_conn); radarDataContext.Connection.Open(); radarDataContext.Connection.Close(); } catch (Exception) { dbisAvaliable = false; } if (dbisAvaliable) { DataBaseHelper dbHelper = new DataBaseHelper(_conn); try { DataAdapter dataAdapter = new DataAdapter(); CommonLogHelper.GetInstance("LogInfo").Info(@"开始批量数据入库"); dbHelper.AlarmStatusInsert(dataAdapter.DataResolve(new DataBaseHelper().AlarmStatusSelect())); dbHelper.ControlStatusInsert( dataAdapter.DataResolve(new DataBaseHelper().ControlStatusSelect())); dbHelper.PowerDataInsert(dataAdapter.DataResolve(new DataBaseHelper().PowerDataSelect())); dbHelper.SaveChanges(); CommonLogHelper.GetInstance("LogInfo").Info(@"批量数据入库成功"); new DataBaseHelper().DeleteAllSqLiteData(); CommonLogHelper.GetInstance("LogInfo").Info(@"本地数据删除成功"); } catch (Exception ex) { CommonLogHelper.GetInstance("LogInfo").Info(@"批量数据入库失败"); CommonLogHelper.GetInstance("LogError").Error(@"批量数据入库失败", ex); } finally { dbHelper.Dispose(); } } }) { IsBackground = true }; batchDataProcessThread.Start(); #endregion 正常入库失败后批量数据补入 } }
private void RecDataProcessing(byte[] message) { Thread newThread = new Thread((ThreadStart) delegate { try { if (message.Length <= 4) { CommonLogHelper.GetInstance("LogInfo").Info(@"未接收到采集数据"); return; } if (message[0] != Convert.ToByte("7E", 16)) { return; } if (message[1] != Convert.ToByte("D1", 16)) { return; } string m = message[4].ToString("X2"); switch (m) { case "03": #region 获取到的状态、报警、电压数据处理 _synchContext.Post(a => { tSSLSystemStatus.Text = @"获取最新数据成功"; }, null); DateTime dt = DateTime.Now; DateTime obdt = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0); DataAdapter dataadp = new DataAdapter(StationId, obdt); try { string msg = string.Join(" ", message.Select(x => x.ToString("X2")).ToArray()); CommonLogHelper.GetInstance("LogInfo").Info($@"接收到采集数据:{msg}"); dataadp.DataResolve(message); _synchContext.Post(a => { try { radarStatusUI.SetAlarmStatus(dataadp.AlarmStatusData); radarControlUI.SetControlStatus(dataadp.ControlStatusData); powerIndicationUI.SetPowerDataValue(dataadp.RadarPowerData); tSSLDataUpdateTime.Text = $"数据更新时间:{obdt.ToString("yyyy-MM-dd HH:mm")}"; } catch (Exception ex) { CommonLogHelper.GetInstance("LogError").Error(@"数据显示到界面上出错", ex); } }, null); RadarFailureAlarm(dataadp.AlarmStatusData); } catch (Exception e) { CommonLogHelper.GetInstance("LogError").Error(@"接收处理数据并显示过程出错", e); } if (_isCollect) { AlarmStatusTable alarmStatus = dataadp.DataResolve(dataadp.AlarmStatusData); ControlStatusTable controlStatus = dataadp.DataResolve(dataadp.ControlStatusData); PowerDataTable powerData = dataadp.DataResolve(dataadp.RadarPowerData); try { DataBaseHelper dbHelper = new DataBaseHelper(_conn); dbHelper.AlarmStatusInsert(alarmStatus); dbHelper.ControlStatusInsert(controlStatus); dbHelper.PowerDataInsert(powerData); dbHelper.SaveChanges(); CommonLogHelper.GetInstance("LogInfo").Info(@"数据入库成功"); } catch (Exception e) { CommonLogHelper.GetInstance("LogError").Error(@"数据入库过程出错", e); try { Lrdm.AlarmStatusModels localalarmStatus = dataadp.LocalDataResolve(dataadp.AlarmStatusData); Lrdm.ControlStatusModels localcontrolStatus = dataadp.LocalDataResolve(dataadp.ControlStatusData); Lrdm.PowerDataModels localpowerData = dataadp.LocalDataResolve(dataadp.RadarPowerData); DataBaseHelper dbHelper = new DataBaseHelper(); dbHelper.AlarmStatusInsert(localalarmStatus); dbHelper.ControlStatusInsert(localcontrolStatus); dbHelper.PowerDataInsert(localpowerData); CommonLogHelper.GetInstance("LogInfo").Info(@"数据入本地库成功"); } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"数据入本地库过程出错", exception); } } try { RadarDataClassesDataContext radarDataContext = new RadarDataClassesDataContext(_conn); PowerDataTable prepowerData = radarDataContext.PowerDataTable.First( x => x.DateTime == dt.AddMinutes(-Para.UpdateDataIntl) && x.StationID == StationId); PowerAlarm(obdt, powerData, prepowerData); } catch (Exception ex) { CommonLogHelper.GetInstance("LogError").Error(@"电源跳变检查报警过程出错", ex); } } #endregion 获取到的状态、报警、电压数据处理 break; case "81": string controlmsg = string.Join(" ", message.Select(x => x.ToString("X2")).ToArray()); CommonLogHelper.GetInstance("LogInfo").Info($@"接收到控制数据:{controlmsg}"); //isContinueKeyUp = isfirsControlcmd; break; } } catch (Exception e) { CommonLogHelper.GetInstance("LogError").Error(_isCollect ? @"接收处理数据并入库过程出错" : @"接收处理数据并显示过程出错", e); } finally { _isCollect = false; _synchContext.Post(a => { tSSLSystemStatus.Text = radarControlUI.Enabled ? @"正在使用控制功能" : @"等待采集数据"; }, null); } }) { IsBackground = true }; newThread.Start(); }
private void DrawNowDataLine() { Thread drawDataLineThread = new Thread((ThreadStart) delegate { try { _synchContext.Post(a => { gbControl.Enabled = false; circularProgress.IsRunning = true; circularProgress.Visible = true; }, null); _powerData.Clear(); DateTime sdt = dtpStartTime.Value; DateTime edt = dtpEndTime.Value; RadarDataClassesDataContext radarDataClasses = new RadarDataClassesDataContext(ConnectionString); _synchContext.Post(a => { chartVolCur.Titles.Clear(); chartVolCur.Titles.Add(DataEnum2Titles.ToTitles(DataName)); chartVolCur.Titles.Add( $"({sdt.ToString(CultureInfo.InvariantCulture)}——{edt.ToString(CultureInfo.InvariantCulture)})"); chartVolCur.ChartAreas.Clear(); chartVolCur.Series.Clear(); ChartArea ca = new ChartArea("CA1"); chartVolCur.ChartAreas.Add(ca); Series s = new Series("S1") { ChartType = SeriesChartType.Line, IsValueShownAsLabel = true, BorderWidth = 3, ShadowOffset = 1 }; chartVolCur.ChartAreas[0].AxisX.IsMarginVisible = true; chartVolCur.ChartAreas[0].AxisX.Interval = 1; chartVolCur.ChartAreas[0].AxisX.MajorGrid.Interval = 1; try { var powerdata = (from p in radarDataClasses.PowerDataTable where p.StationID == StationId && p.DateTime >= sdt && p.DateTime <= edt orderby p.DateTime ascending select p).ToList(); for (int i = 0; i <= (edt - sdt).TotalMinutes; i++) { DateTime dt = sdt.AddMinutes(i); var pd = (from v in powerdata where v.DateTime == dt select v).Distinct().ToList(); if (pd.Count > 0) { object obj = typeof(PowerDataTable).GetProperty(DataName).GetValue(pd[0], null); s.Points.AddXY(dt.ToString("HH:mm"), obj); _powerData.Add(dt.ToString(CultureInfo.InvariantCulture), obj.ToString()); } else { s.Points.AddXY(dt.ToString("HH:mm"), DBNull.Value); _powerData.Add(dt.ToString(CultureInfo.InvariantCulture), string.Empty); } } chartVolCur.Series.Add(s); } catch (Exception) { throw; } }, null); } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"实时数据查询并绘制曲线过程出错", exception); _synchContext.Post(a => MessageBox.Show(this, @"绘制当前曲线过程错误," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error) , null); } finally { _synchContext.Post(a => { gbControl.Enabled = true; circularProgress.IsRunning = false; circularProgress.Visible = false; }, null); } }) { IsBackground = true }; drawDataLineThread.Start(); }