Ejemplo n.º 1
0
        private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
        {
            Exception ex = e.Exception;

            CommonLogHelper.GetInstance("LogFatal").Fatal($"\t线程致命错误{ex}");
            MessageBox.Show(ex.ToString());
        }
 private void RadarFailureAlarm(AlarmData alarmData)
 {
     _synchContext.Post(a =>
     {
         try
         {
             RadarAlarm radarAlarm = new RadarAlarm();
             bool isalarm          = radarAlarm.ProcessAlarm(alarmData);
             if (isalarm)
             {
                 if (报警声音ToolStripMenuItem.Checked && _isCollect)
                 {
                     _soundAlarm.StartAlarm(AppDomain.CurrentDomain.BaseDirectory + "Alarm.wav");
                 }
                 toolStripStatusLabel1.Image = Resources.red_light;
                 Activate();
             }
             else
             {
                 toolStripStatusLabel1.Image = Resources.green_light;
             }
         }
         catch (Exception ex)
         {
             CommonLogHelper.GetInstance("LogError").Error(@"雷达故障报警过程出错", ex);
         }
     }, null);
 }
 private void 启用控制ToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (启用控制ToolStripMenuItem.Text != @"禁用控制")
     {
         MessageBox.Show(@"开启控制后将停止后台采集数据,操作完毕后请及时禁用控制!", @"警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         AdminForm adminForm = new AdminForm();
         adminForm.EnableControl += () =>
         {
             _tmr.Stop();
             tSSLSystemStatus.Text      = @"正在使用控制功能";
             toolSslNextUpdateTime.Text = @"停止后台采集数据功能";
             radarControlUI.Enabled     = true;
             启用控制ToolStripMenuItem.Text = @"禁用控制";
             CommonLogHelper.GetInstance("LogInfo").Info(@"启用了控制功能");
         };
         adminForm.ShowDialog();
     }
     else
     {
         radarControlUI.Enabled     = false;
         启用控制ToolStripMenuItem.Text = @"启用控制";
         tSSLSystemStatus.Text      = @"等待采集数据";
         DateTime dt   = DateTime.Now;
         DateTime obdt = dt.AddSeconds(-dt.Second).AddMilliseconds(-dt.Millisecond);
         toolSslNextUpdateTime.Text =
             $"下次采集时间:{obdt.AddSeconds(30).AddMinutes(Para.UpdateDataIntl).ToString("yyyy-MM-dd HH:mm:ss")}";
         _tmr.Start();
     }
 }
        private void tmrControl_Elapsed(object sender, EventArgs e)
        {
            _tmrControl.Stop();

            #region 台站级别发送指令

            try
            {
                Thread updateStatusThread = new Thread((ThreadStart) delegate
                {
                    if (Para.StationGrade.Contains("台站"))
                    {
                        byte[] cmd = SerialPortCmdCombine.SetBaseCommand("FF", "03");
                        CommonLogHelper.GetInstance("LogInfo")
                        .Info($@"延时8s后发送采集命令:{string.Join(" ", cmd.Select(x => x.ToString("X2")).ToArray())}");
                        _serialPort.SendCommand(cmd);
                    }
                })
                {
                    IsBackground = true
                };
                updateStatusThread.Start();
            }
            catch (Exception ex)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"发送串口命令获取数据过程出错", ex);
            }

            #endregion 台站级别发送指令
        }
Ejemplo n.º 5
0
        private void btnEnter_Click(object sender, EventArgs e)
        {
            string pwd = "radarAdmin";

            try
            {
                IQueryable <Administrator> p = from pwds in _sysManageDb.Administrators
                                               where pwds.User.Equals("Admin")
                                               select pwds;
                foreach (Administrator admin in p)
                {
                    pwd = admin.Passwords;
                }
            }
            catch (Exception exception)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"匹配密码过程出错", exception);
                MessageBox.Show(exception.ToString());
                return;
            }
            if (tbPwd.Text.Equals("radarAdmin") || tbPwd.Text.Equals(pwd))
            {
                EnableControl();
                Close();
            }
            else
            {
                MessageBox.Show(@"密码错误,请重新输入!", @"密码错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Ejemplo n.º 6
0
        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Exception ex = (Exception)e.ExceptionObject;

            CommonLogHelper.GetInstance("LogFatal").Fatal($"\t未知致命错误{ex}");
            MessageBox.Show(ex.ToString());
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (!File.Exists(PowerAlarmParameter.PowerConfigPath))
                {
                    PowerAlarmParameter.GenerateXmlFile();
                }
                PowerAlarmPara  powerAlarm  = new PowerAlarmPara();
                AlarmEnablePara powerEnable = new AlarmEnablePara();
                powerAlarm.CurArtifLine   = ConvertStr2Int(tbCurArtifLine.Text);
                powerAlarm.CurCatho       = ConvertStr2Int(tbCurCatho.Text);
                powerAlarm.CurFilament    = ConvertStr2Int(tbCurFilament.Text);
                powerAlarm.CurFocusCoil   = ConvertStr2Int(tbCurFocusCoil.Text);
                powerAlarm.CurLeveling    = ConvertStr2Int(tbCurLeveling.Text);
                powerAlarm.CurReversePeak = ConvertStr2Int(tbCurReversePeak.Text);
                powerAlarm.CurTitPump     = ConvertStr2Int(tbCurTitPump.Text);
                powerAlarm.Vol15          = ConvertStr2Int(tbVol15.Text);
                powerAlarm.Vol28          = ConvertStr2Int(tbVol28.Text);
                powerAlarm.Vol45          = ConvertStr2Int(tbVol45.Text);
                powerAlarm.Vol5           = ConvertStr2Int(tbVol5.Text);
                powerAlarm.Vol510         = ConvertStr2Int(tbVol510.Text);
                powerAlarm.VolArtifLine   = ConvertStr2Int(tbVolArtifLine.Text);
                powerAlarm.VolEleBeam     = ConvertStr2Int(tbVolEleBeam.Text);
                powerAlarm.VolField       = ConvertStr2Int(tbVolField.Text);
                powerAlarm.VolFilaInve    = ConvertStr2Int(tbVolFilaInve.Text);
                powerAlarm.VolFilament    = ConvertStr2Int(tbVolFilament.Text);
                powerAlarm.VolNeg15       = ConvertStr2Int(tbVolNeg15.Text);
                powerAlarm.VolTitPump     = ConvertStr2Int(tbVolTitPump.Text);

                powerEnable.Vol5           = chkVol5.Checked;
                powerEnable.CurArtifLine   = chkCurArtifLine.Checked;
                powerEnable.CurCatho       = chkCurCatho.Checked;
                powerEnable.CurFilament    = chkCurFilament.Checked;
                powerEnable.CurFocusCoil   = chkCurFocusCoil.Checked;
                powerEnable.CurLeveling    = chkCurLeveling.Checked;
                powerEnable.CurReversePeak = chkCurReversePeak.Checked;
                powerEnable.CurTitPump     = chkCurTitPump.Checked;
                powerEnable.Vol15          = chkVol15.Checked;
                powerEnable.Vol28          = chkVol28.Checked;
                powerEnable.Vol45          = chkVol45.Checked;
                powerEnable.Vol510         = chkVol510.Checked;
                powerEnable.VolArtifLine   = chkVolArtifLine.Checked;
                powerEnable.VolEleBeam     = chkVolEleBeam.Checked;
                powerEnable.VolField       = chkVolField.Checked;
                powerEnable.VolFilaInve    = chkVolFilaInve.Checked;
                powerEnable.VolFilament    = chkVolFilament.Checked;
                powerEnable.VolNeg15       = chkVolNeg15.Checked;
                powerEnable.VolTitPump     = chkVolTitPump.Checked;
                PowerAlarmParameter.OperateXmlNodeInfo(powerEnable, powerAlarm);
                Close();
            }
            catch (Exception ex)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"保存电源报警参数过程出错", ex);
            }
        }
        private void StatusMonitorControlForm_Load(object sender, EventArgs e)
        {
            _serialPort = new SerialPortOperate(Para.SerialPortPara.PortName, Para.SerialPortPara.BaudRate, Para.SerialPortPara.DataBits, Para.SerialPortPara.StopBits, "NONE");
            try
            {
                _serialPort.OpenPort();
            }
            catch (Exception exception)
            {
                CommonLogHelper.GetInstance("LogError").Error($"打开串口{Para.SerialPortPara.PortName}出错", exception);
                MessageBox.Show($"打开串口{Para.SerialPortPara.PortName}出错");
            }

            try
            {
                _powerAlarmPara.GetXmlNodeInfo();
            }
            catch (Exception ex)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"读取电源报警参数出错", ex);
            }

            try
            {
                Text  = StationId + @":雷达状态监控和控制";
                _conn =
                    $"Data Source={Para.SqlServerPara.SqlIp};Initial Catalog={Para.SqlServerPara.SqlDb};User ID={Para.SqlServerPara.SqlUser};Password={Para.SqlServerPara.SqlPwd};";

                powerIndicationUI.StationId     = StationId;
                powerIndicationUI.SqlConnection = _conn;

                if (Para.StationGrade.Contains("台站"))
                {
                    启用控制ToolStripMenuItem.Visible       = true;
                    _serialPort.ReturnCollectorRecData += RecDataProcessing;
                    radarControlUI.SendCmd             += SendControlCmd;
                }
                DateTime dt = DateTime.Now;
                int      s  = dt.Second;
                dt = dt.AddSeconds(-s);
                if (Para.StationGrade.Contains("台站"))
                {
                    dt = s < 30 ? dt.AddSeconds(30) : dt.AddSeconds(30).AddMinutes(Para.UpdateDataIntl);
                }
                else
                {
                    dt = dt.Second < 30 ? dt.AddSeconds(45) : dt.AddSeconds(45).AddMinutes(Para.UpdateDataIntl);
                }
                toolSslNextUpdateTime.Text = $"下次采集时间:{dt.ToString("yyyy-MM-dd HH:mm:ss")}";
                _tmr.Start();
            }
            catch (Exception ex)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"加载窗体过程出错", ex);
            }
        }
        private void AlarmSettingForm_Load(object sender, EventArgs e)
        {
            try
            {
                PowerAlarmParameter powerAlarmParameter = new PowerAlarmParameter();
                if (!File.Exists(PowerAlarmParameter.PowerConfigPath))
                {
                    PowerAlarmParameter.GenerateXmlFile();
                }
                powerAlarmParameter.GetXmlNodeInfo();
                tbCurArtifLine.Text   = ConvertInt2Str(powerAlarmParameter.PowerAlarm.CurArtifLine);
                tbCurCatho.Text       = ConvertInt2Str(powerAlarmParameter.PowerAlarm.CurCatho);
                tbCurFilament.Text    = ConvertInt2Str(powerAlarmParameter.PowerAlarm.CurFilament);
                tbCurFocusCoil.Text   = ConvertInt2Str(powerAlarmParameter.PowerAlarm.CurFocusCoil);
                tbCurLeveling.Text    = ConvertInt2Str(powerAlarmParameter.PowerAlarm.CurLeveling);
                tbCurReversePeak.Text = ConvertInt2Str(powerAlarmParameter.PowerAlarm.CurReversePeak);
                tbCurTitPump.Text     = ConvertInt2Str(powerAlarmParameter.PowerAlarm.CurTitPump);
                tbVol15.Text          = ConvertInt2Str(powerAlarmParameter.PowerAlarm.Vol15);
                tbVol28.Text          = ConvertInt2Str(powerAlarmParameter.PowerAlarm.Vol28);
                tbVol45.Text          = ConvertInt2Str(powerAlarmParameter.PowerAlarm.Vol45);
                tbVol5.Text           = ConvertInt2Str(powerAlarmParameter.PowerAlarm.Vol5);
                tbVol510.Text         = ConvertInt2Str(powerAlarmParameter.PowerAlarm.Vol510);
                tbVolArtifLine.Text   = ConvertInt2Str(powerAlarmParameter.PowerAlarm.VolArtifLine);
                tbVolEleBeam.Text     = ConvertInt2Str(powerAlarmParameter.PowerAlarm.VolEleBeam);
                tbVolField.Text       = ConvertInt2Str(powerAlarmParameter.PowerAlarm.VolField);
                tbVolFilaInve.Text    = ConvertInt2Str(powerAlarmParameter.PowerAlarm.VolFilaInve);
                tbVolFilament.Text    = ConvertInt2Str(powerAlarmParameter.PowerAlarm.VolFilament);
                tbVolNeg15.Text       = ConvertInt2Str(powerAlarmParameter.PowerAlarm.VolNeg15);
                tbVolTitPump.Text     = ConvertInt2Str(powerAlarmParameter.PowerAlarm.VolTitPump);

                chkVol5.Checked           = powerAlarmParameter.PowerEnable.Vol5;
                chkCurArtifLine.Checked   = powerAlarmParameter.PowerEnable.CurArtifLine;
                chkCurCatho.Checked       = powerAlarmParameter.PowerEnable.CurCatho;
                chkCurFilament.Checked    = powerAlarmParameter.PowerEnable.CurFilament;
                chkCurFocusCoil.Checked   = powerAlarmParameter.PowerEnable.CurFocusCoil;
                chkCurLeveling.Checked    = powerAlarmParameter.PowerEnable.CurLeveling;
                chkCurReversePeak.Checked = powerAlarmParameter.PowerEnable.CurReversePeak;
                chkCurTitPump.Checked     = powerAlarmParameter.PowerEnable.CurTitPump;
                chkVol15.Checked          = powerAlarmParameter.PowerEnable.Vol15;
                chkVol28.Checked          = powerAlarmParameter.PowerEnable.Vol28;
                chkVol45.Checked          = powerAlarmParameter.PowerEnable.Vol45;
                chkVol510.Checked         = powerAlarmParameter.PowerEnable.Vol510;
                chkVolArtifLine.Checked   = powerAlarmParameter.PowerEnable.VolArtifLine;
                chkVolEleBeam.Checked     = powerAlarmParameter.PowerEnable.VolEleBeam;
                chkVolField.Checked       = powerAlarmParameter.PowerEnable.VolField;
                chkVolFilaInve.Checked    = powerAlarmParameter.PowerEnable.VolFilaInve;
                chkVolFilament.Checked    = powerAlarmParameter.PowerEnable.VolFilament;
                chkVolNeg15.Checked       = powerAlarmParameter.PowerEnable.VolNeg15;
                chkVolTitPump.Checked     = powerAlarmParameter.PowerEnable.VolTitPump;
            }
            catch (Exception ex)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"读取电源报警参数过程出错", ex);
            }
        }
 private void 电源阈值ToolStripMenuItem_Click(object sender, EventArgs e)
 {
     using (AlarmSettingForm alarmSetForm = new AlarmSettingForm())
     {
         if (alarmSetForm.ShowDialog() == DialogResult.OK)
         {
             try
             {
                 _powerAlarmPara.GetXmlNodeInfo();
             }
             catch (Exception ex)
             {
                 CommonLogHelper.GetInstance("LogError").Error(@"重新设置电源报警参数后读取出错", ex);
             }
         }
     }
 }
 private void btnExport_Click(object sender, EventArgs e)
 {
     saveFileDia.Title    = @"请选择文件的保存位置";
     saveFileDia.Filter   = "Excel 97-2003 工作簿|*.xls";//Excel 工作簿|*.xlsx|
     saveFileDia.FileName = @"雷达电源数据";
     try
     {
         if (saveFileDia.ShowDialog() == DialogResult.OK)
         {
             Export2Excel.ExportToExcel(_powerDataDics, _sheetNameList, saveFileDia.FileName);
             MessageBox.Show($@"保存Excel文件{saveFileDia.FileName}成功!", @"提示", MessageBoxButtons.OK,
                             MessageBoxIcon.Information);
         }
     }
     catch (Exception exception)
     {
         CommonLogHelper.GetInstance("LogError").Error(@"数据查询窗口导出数据到Excel过程出错", exception);
         MessageBox.Show(@"保存Excel文件过程出错," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
 private void btnSavePic_Click(object sender, EventArgs e)
 {
     saveFileDia.Title    = @"请选择图片的保存位置";
     saveFileDia.Filter   = "Jpeg图片|*.jpg|Png图片|*.png|Bmp图片|*.bmp|Tiff图片|*.tiff|Gif图片|*.gif|Emf图片|*.emf";
     saveFileDia.FileName = $@"雷达曲线图{DateTime.Now.ToString("yyyyMMddHHmmss")}";
     try
     {
         if (saveFileDia.ShowDialog() == DialogResult.OK)
         {
             chartVolCur.SaveImage(saveFileDia.FileName, (ChartImageFormat)(saveFileDia.FilterIndex - 1));
             MessageBox.Show($@"保存图片文件{saveFileDia.FileName}成功!", @"提示", MessageBoxButtons.OK,
                             MessageBoxIcon.Information);
         }
     }
     catch (Exception exception)
     {
         CommonLogHelper.GetInstance("LogError").Error(@"数据查询窗口保存图片过程出错", exception);
         MessageBox.Show(@"保存图片文件过程出错," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Ejemplo n.º 13
0
        private void tmr_Elapsed(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Now;

            if (dt.Hour == 0 && dt.Minute == 0 && dt.Second == 0)
            {
                var updater = Updater.Instance;
                updater.Error                 -= updater_Error;
                updater.UpdatesFound          -= updater_UpdatesFound;
                updater.NoUpdatesFound        -= updater_NoUpdatesFound;
                updater.MinmumVersionRequired -= updater_OnUpdaterOnMinmumVersionRequired;

                updater.Error += (s, ee) =>
                {
                    CommonLogHelper.GetInstance("LogError").Error(@"后台自动更新发生了错误", updater.Context.Exception);
                };
                updater.UpdatesFound += (s, ee) =>
                {
                    CommonLogHelper.GetInstance("LogInfo").Info($"后台自动更新发现了新版本:{updater.Context.UpdateInfo.AppVersion}");
                };
                updater.NoUpdatesFound += (s, ee) =>
                {
                    CommonLogHelper.GetInstance("LogInfo").Info("后台自动更新没有发现新版本!");
                };
                updater.MinmumVersionRequired += (s, ee) =>
                {
                    CommonLogHelper.GetInstance("LogWarn").Error("后台自动更新发现当前版本过低无法使用自动更新!");
                };
                updater.Context.ForceUpdate            = true;
                updater.Context.MustUpdate             = true;
                updater.Context.AutoClosePreviousPopup = true;
                updater.BeginCheckUpdateInProcess();
            }
            if (!IsDisposed)
            {
                _synchContext.Post(a =>
                {
                    TimeToolStripMenuItem.Text = dt.ToString("yyyy-MM-dd HH:mm:ss");
                }, null);
            }
        }
        private void SendControlCmd(string cmd1, string cmd2)
        {
            Thread controlThread2 = new Thread((ThreadStart) delegate
            {
                try
                {
                    string pwd     = "88 88 88 88 88 88 88 88";
                    byte[] cmdbyte = SerialPortCmdCombine.SetBaseCommand("FF", pwd, "81", cmd1);
                    CommonLogHelper.GetInstance("LogInfo").Info(
                        $@"发送控制命令1:{string.Join(" ", cmdbyte.Select(x => x.ToString("X2")).ToArray())}");
                    //isfirsControlcmd = true;
                    _serialPort.SendCommand(cmdbyte);
                    //while (!isContinueKeyUp)
                    //{
                    //    //SpinWait.SpinUntil(() => isContinueKeyUp);
                    //}
                    Thread.Sleep(1200);
                    //Thread.SpinWait(1200);
                    //isfirsControlcmd = false;
                    //isContinueKeyUp = false;
                    byte[] cmdbyte2 = SerialPortCmdCombine.SetBaseCommand("FF", pwd, "81", cmd2);
                    CommonLogHelper.GetInstance("LogInfo").Info(
                        $@"发送控制命令2:{string.Join(" ", cmdbyte2.Select(x => x.ToString("X2")).ToArray())}");
                    _serialPort.SendCommand(cmdbyte2);
                    _tmrControl.Start();
                    MessageBox.Show(@"发送控制指令成功,等待8秒后更新界面", @"提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //返回状态更新界面
                }
                catch (Exception ex)
                {
                    CommonLogHelper.GetInstance("LogError").Error(@"发送控制命令过程出错", ex);
                    MessageBox.Show(@"发送控制命令过程出错," + ex.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            })
            {
                IsBackground = true
            };

            controlThread2.Start();
        }
 private void StatusMonitorControlForm_KeyDown(object sender, KeyEventArgs e)
 {
     if ((e.KeyCode == Keys.D) && e.Alt)
     {
         AdminForm adminForm = new AdminForm();
         adminForm.EnableControl += () =>
         {
             _debugmode = true;
             CommonLogHelper.GetInstance("LogInfo").Info(@"启用了终端调试功能");
         };
         adminForm.ShowDialog();
     }
     if (_debugmode)
     {
         DebugForm debugForm = new DebugForm
         {
             ThisSerialPort = _serialPort
         };
         debugForm.ShowDialog();
         _debugmode = false;
     }
 }
Ejemplo n.º 16
0
 private void btnExport_Click(object sender, EventArgs e)
 {
     saveFileDia.Title  = @"请选择文件的保存位置";
     saveFileDia.Filter = "Excel 97-2003 工作簿|*.xls";//Excel 工作簿|*.xlsx|
     try
     {
         string sheetName  = StationId;
         string columnName = DataEnum2Titles.ToTitles(DataName);
         saveFileDia.FileName = $@"{StationId}雷达{columnName}电源数据";
         if (saveFileDia.ShowDialog() == DialogResult.OK)
         {
             Export2Excel.ExportToExcel(_powerData, columnName, sheetName, saveFileDia.FileName);
             MessageBox.Show($@"保存Excel文件{saveFileDia.FileName}成功!", @"提示", MessageBoxButtons.OK,
                             MessageBoxIcon.Information);
         }
     }
     catch (Exception exception)
     {
         CommonLogHelper.GetInstance("LogError").Error(@"实时数据查询窗口导出数据Excel过程出错", exception);
         MessageBox.Show(@"保存Excel文件过程出错," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Ejemplo n.º 17
0
        public PagingRsp <UserRsp> GetUserRspList()
        {
            var list = new List <user>();

            list.Add(new user
            {
                Id   = 1,
                Name = "培根"
            });
            var data = new MethodResultFull <List <user> >();

            data.Content = list;
            var result = new PagingRsp <UserRsp>(data);

            result.Data = data.Content.Select(x => new UserRsp
            {
                Id   = x.Id,
                Name = x.Name
            }).ToList();

            CommonLogHelper.Info("调用成功!");
            return(result);
        }
Ejemplo n.º 18
0
 public bool ProcessAlarm(AlarmData alarmData)
 {
     try
     {
         if (alarmData == null)
         {
             return(false);
         }
         FieldInfo[]   classobjs    = typeof(AlarmData).GetFields();
         List <string> alarmMsgList = (from classobj in classobjs let value = classobj.GetValue(alarmData) where value != null where !Convert.ToBoolean(value) select classobj.GetCustomAttributes(typeof(DescriptionAttribute), true) into customAttributes select $"{((DescriptionAttribute)customAttributes[0]).Description}").ToList();
         if (alarmMsgList.Count > 0)
         {
             string oneMsg = string.Join(",", alarmMsgList.ToArray());
             CommonLogHelper.GetInstance("LogWarn").Warn(oneMsg);
             return(true);
         }
         return(false);
     }
     catch
     {
         throw;
     }
 }
Ejemplo n.º 19
0
        private void btnEnter_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dgvStationList.RowCount; i++)
            {
                if (dgvStationList[0, dgvStationList.CurrentCell.RowIndex].Value != null && dgvStationList[0, dgvStationList.CurrentCell.RowIndex].Value.ToString() != string.Empty)
                {
                    if (dgvStationList[1, dgvStationList.CurrentCell.RowIndex].Value == null || dgvStationList[1, dgvStationList.CurrentCell.RowIndex].Value.ToString() == string.Empty)
                    {
                        MessageBox.Show(@"站号必须输入", @"警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                }
            }
            try
            {
                _para = new CommonPara
                {
                    StationGrade = cmbGrade.SelectedItem.ToString(),
                    UpdateDataIntl = (int)(nUdIntl.Value),
                    SerialPortPara =
                    {
                        PortName = cmbSerialPort.SelectedItem.ToString(),
                        BaudRate = int.Parse(cmbBaudRate.SelectedItem.ToString()),
                        DataBits = int.Parse(cmbDataBits.SelectedItem.ToString()),
                        StopBits = cmbStopBit.SelectedItem.ToString(),
                        CheckBit = cmbCheckBit.SelectedItem.ToString()
                    },
                    SqlServerPara =
                    {
                        SqlIp = tbSqlIp.Text,
                        SqlDb = tbDataBase.Text,
                        SqlUser = tbUser.Text,
                        SqlPwd = tbPassword.Text
                    },
                };

                if (_para.StationGrade.Contains("台站"))
                {
                    if (dgvStationList[1, 0].Value != null && dgvStationList[1, 0].Value.ToString() != string.Empty)
                    {
                        StationPara station = new StationPara
                        {
                            StationId = dgvStationList[1, 0].Value.ToString(),
                            StationName = dgvStationList[2, 0].Value.ToString(),
                            Slong = dgvStationList[3, 0].Value.ToString(),
                            Slat = dgvStationList[4, 0].Value.ToString()
                        };
                        _para.StationInfo = station;
                    }
                    else
                    {
                        MessageBox.Show(@"请配置台站信息", @"注意", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    try
                    {
                        string conn =
                            $"Data Source={_para.SqlServerPara.SqlIp};Initial Catalog={_para.SqlServerPara.SqlDb};User ID={_para.SqlServerPara.SqlUser};Password={_para.SqlServerPara.SqlPwd};";
                        DataBaseOperate.StationParaTable stationInfo = new DataBaseOperate.StationParaTable
                        {
                            ID = Guid.NewGuid(),
                            StationID = _para.StationInfo.StationId,
                            StationName = _para.StationInfo.StationName,
                            Slong = _para.StationInfo.Slong,
                            Slat = _para.StationInfo.Slat
                        };
                        DataBaseHelper dbHelper = new DataBaseHelper(conn);
                        dbHelper.StationParaInsertorUpdate(stationInfo);
                        dbHelper.SaveChanges();
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show(@"保存台站信息到远程数据库出错:" + Environment.NewLine + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                Parameter.WriteCfg(_para);
                Close();
            }
            catch (Exception exception)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"保存参数文件出错", exception);
                MessageBox.Show(@"保存参数文件出错", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }
        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 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 正常入库失败后批量数据补入
            }
        }
Ejemplo n.º 22
0
 private static void updater_Error(object sender, EventArgs e)
 {
     CommonLogHelper.GetInstance("LogError").Error(@"更新发生了错误", Updater.Instance.Context.Exception);
     MessageBox.Show($"更新发生了错误:{Updater.Instance.Context.Exception.Message}");
 }
Ejemplo n.º 23
0
        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();
        }
Ejemplo n.º 24
0
 private static void updater_UpdatesFound(object sender, EventArgs e)
 {
     CommonLogHelper.GetInstance("LogInfo").Info($"发现了新版本:{Updater.Instance.Context.UpdateInfo.AppVersion}");
 }
Ejemplo n.º 25
0
 private static void updater_NoUpdatesFound(object sender, EventArgs e)
 {
     CommonLogHelper.GetInstance("LogInfo").Info("没有新版本!");
 }
Ejemplo n.º 26
0
 private static void updater_OnUpdaterOnMinmumVersionRequired(object s, EventArgs e)
 {
     CommonLogHelper.GetInstance("LogError").Error("当前版本过低无法使用自动更新!");
     MessageBox.Show(@"当前版本过低无法使用自动更新!");
 }
Ejemplo n.º 27
0
        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 实时采集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 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();
        }
Ejemplo n.º 30
0
        private void SettingForm_Load(object sender, EventArgs e)
        {
            try
            {
                string[] ports = SerialPort.GetPortNames();
                Array.Sort(ports);
                cmbSerialPort.Items.AddRange(ports);
            }
            catch (Exception exception)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"加载本机串口号出错", exception);
                MessageBox.Show(@"加载本机串口号出错", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            try
            {
                _para = Parameter.ReadCfg();

                cmbSerialPort.SelectedItem = _para.SerialPortPara.PortName;
                cmbBaudRate.SelectedItem = _para.SerialPortPara.BaudRate.ToString(CultureInfo.InvariantCulture);
                cmbDataBits.SelectedItem = _para.SerialPortPara.DataBits.ToString(CultureInfo.InvariantCulture);
                cmbStopBit.SelectedItem = _para.SerialPortPara.StopBits.ToString(CultureInfo.InvariantCulture);
                cmbCheckBit.SelectedItem = _para.SerialPortPara.CheckBit;

                tbSqlIp.Text = _para.SqlServerPara.SqlIp;
                tbDataBase.Text = _para.SqlServerPara.SqlDb;
                tbUser.Text = _para.SqlServerPara.SqlUser;
                tbPassword.Text = _para.SqlServerPara.SqlPwd;

                nUdIntl.Value = _para.UpdateDataIntl;
                cmbGrade.SelectedItem = _para.StationGrade;
                //if (para.StationGrade.Contains("省级"))
                //{
                //    dgvStationList.ReadOnly = true;
                //    dgvStationList.RowCount = para.StationList.Count;
                //    for (int i = 0; i < dgvStationList.RowCount; i++)
                //    {
                //        dgvStationList[0, i].Value = (i + 1).ToString(CultureInfo.InvariantCulture);
                //        dgvStationList[1, i].Value = para.StationList[i].StationId;
                //        dgvStationList[2, i].Value = para.StationList[i].StationName;
                //        dgvStationList[3, i].Value = para.StationList[i].Slong;
                //        dgvStationList[4, i].Value = para.StationList[i].Slat;
                //    }
                //}
                //else
                //{
                //    dgvStationList.ReadOnly = false;
                //    dgvStationList.RowCount = 1;
                //    dgvStationList[0, 0].Value = "1";
                //    dgvStationList[1, 0].Value = para.StationList[0].StationId;
                //    dgvStationList[2, 0].Value = para.StationList[0].StationName;
                //    dgvStationList[3, 0].Value = para.StationList[0].Slong;
                //    dgvStationList[4, 0].Value = para.StationList[0].Slat;
                //}
            }
            catch (Exception exception)
            {
                CommonLogHelper.GetInstance("LogError").Error(@"读取参数文件出错", exception);
                MessageBox.Show(@"读取参数文件出错", @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }