using JiangsuEarthquake.Base; using JiangsuEarthquake.Common; using JiangsuEarthquake.DataAccess; using JiangsuEarthquake.Models; using LiveCharts.Defaults; using LiveCharts.Wpf; using LiveCharts; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Runtime.Intrinsics.X86; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Threading; using System.IO.Ports; using JiangsuEarthquake.Views.UserControls; using HandyControl.Tools.Extension; using K4os.Compression.LZ4.Streams.Frames; using Org.BouncyCastle.Crypto.Paddings; using System.Data.Common; using Brush = System.Windows.Media.Brush; using Application = System.Windows.Application; using Color = System.Windows.Media.Color; using System.Diagnostics.Eventing.Reader; using Org.BouncyCastle.Utilities; namespace JiangsuEarthquake.ViewModels { public class MainViewModel : NotifyBase { #region ViewModel Define //页面 public static RealTimeDataViewModel realTimeDataViewModel1 = new RealTimeDataViewModel(1); public static RealTimeDataViewModel realTimeDataViewModel2 = new RealTimeDataViewModel(2); public static AlarmRecordViewModel alarmRecordViewModel1 = new AlarmRecordViewModel(1); public static AlarmRecordViewModel alarmRecordViewModel2 = new AlarmRecordViewModel(2); public static BoosterStationStateDataViewModel boosterStationStateDataViewModel1 = new BoosterStationStateDataViewModel(1); public static BoosterStationStateDataViewModel boosterStationStateDataViewModel2 = new BoosterStationStateDataViewModel(2); public static SeismometerStateDataViewModel seismometerStateDataViewModel1 = new SeismometerStateDataViewModel(1); public static SeismometerStateDataViewModel seismometerStateDataViewModel2 = new SeismometerStateDataViewModel(2); public static SeismometerParameterViewModel seismometerParameterViewModel1 = new SeismometerParameterViewModel(1); public static SeismometerParameterViewModel seismometerParameterViewModel2 = new SeismometerParameterViewModel(2); public static LogRecordViewModel logRecordViewModel1 = new LogRecordViewModel(1); public static LogRecordViewModel logRecordViewModel2 = new LogRecordViewModel(2); //public static SystemControlViewModel systemControlViewModel1 = new SystemControlViewModel(); //public static SystemControlViewModel systemControlViewModel2 = new SystemControlViewModel(); public static SystemEnvironDataViewModel systemEnvironDataViewModel1 = new SystemEnvironDataViewModel(1); public static SystemEnvironDataViewModel systemEnvironDataViewModel2 = new SystemEnvironDataViewModel(2); public static SystemMonitorDataViewModel systemMonitorDataViewModel1 = new SystemMonitorDataViewModel(1); public static SystemMonitorDataViewModel systemMonitorDataViewModel2 = new SystemMonitorDataViewModel(2); public static BaseStationModelViewModel baseStationModelViewModel1 = new BaseStationModelViewModel(); public static BaseStationModelViewModel baseStationModelViewModel2 = new BaseStationModelViewModel(); //控制 public static BaseStationStateModel baseStationStateModel1 = new BaseStationStateModel(); public static BaseStationStateModel baseStationStateModel2 = new BaseStationStateModel(); //public static SwitchStateModel switchStateModel1 = new SwitchStateModel(); //public static SwitchStateModel switchStateModel2 = new SwitchStateModel(); //public static StateFeedBackModel stateFeedBackModel1 = new StateFeedBackModel(); //public static StateFeedBackModel stateFeedBackModel2 = new StateFeedBackModel(); //public static SwitchInfoModel switchInfoModel1 = new SwitchInfoModel(); //public static SwitchInfoModel switchInfoModel2 = new SwitchInfoModel(); //public static EarthQuakeParaSetModel seismometerParameterViewModel1.EarthQuakeParaSet = new EarthQuakeParaSetModel(); //public static EarthQuakeParaSetModel seismometerParameterViewModel2.EarthQuakeParaSet = new EarthQuakeParaSetModel(); //public static EarthquakeSensorModel earthquakeSensorModel1 = new EarthquakeSensorModel(); //public static EarthquakeSensorModel earthquakeSensorModel2 = new EarthquakeSensorModel(); private BaseStationStateModel bssm; public BaseStationStateModel BSSM { get { return bssm; } set { bssm = value; this.DoNotify(); } } //private SwitchStateModel ss; //public SwitchStateModel SS //{ // get { return ss; } // set { ss = value; this.DoNotify(); } //} //private EarthQuakeParaSetModel eqps; //public EarthQuakeParaSetModel EQPS //{ // get { return eqps; } // set { eqps = value; } //} //private EarthquakeSensorModel eqsm; //public EarthquakeSensorModel EQSM //{ // get { return eqsm; } // set { eqsm = value; } //} #endregion #region Something Define /// /// 刷新下控制域的DataContext /// //public void FlashControlPageDataContext() //{ // if (station_id == 1) // { // SS = switchStateModel1; // //EQPS = seismometerParameterViewModel1.EarthQuakeParaSet; // //EQSM = earthquakeSensorModel1; // } // else if (station_id == 2) // { // SS = switchStateModel2; // //EQPS = seismometerParameterViewModel2.EarthQuakeParaSet; // //EQSM = earthquakeSensorModel2; // } //} private FrameworkElement _pageContent; public FrameworkElement PageContent { get { return _pageContent; } set { _pageContent = value; this.DoNotify(); } } public int station_id { get; set; } = 1; int ChartPointNum = 15; string Title_Name = ""; //设置当前显示的标题 1 浮标 2 接驳盒 3 系统控制 4 日志记录 private string bDCountDown = ""; public string BDCountDown { get { return bDCountDown; } set { bDCountDown = value; this.DoNotify(); } } private bool gridIsEnabled = true; public bool GridIsEnabled { get { return gridIsEnabled; } set { gridIsEnabled = value; this.DoNotify(); } } private Visibility vis = Visibility.Hidden; /// /// 按钮是否可见 /// public Visibility DetailButtonVisibility { get { return vis; } set { vis = value; this.DoNotify(); } } public static ErrorMessageModel EM { get; set; } = new ErrorMessageModel(); #endregion #region CommandBase Define public CommandBase NavChangedCommand { get; set; } public CommandBase CommunicationChangedCommand { get; set; }//切换控制器的通信路径 public CommandBase Switch { set; get; } #endregion #region Timer Define public DispatcherTimer timerOpenSetMsgHidden = new DispatcherTimer(); public DispatcherTimer timerCloseSetMsgHidden = new DispatcherTimer(); public DispatcherTimer timerSeisZeroSetStart = new DispatcherTimer(); public DispatcherTimer timerSeisZeroSetStop = new DispatcherTimer(); public DispatcherTimer timerSeisLevelSetStart = new DispatcherTimer(); public DispatcherTimer timerSeisLevelSetStop = new DispatcherTimer(); public DispatcherTimer timerMainSeis1ConnectMsgHidden = new DispatcherTimer(); public DispatcherTimer timerBackupSeis1ConnectMsgHidden = new DispatcherTimer(); public DispatcherTimer timerMainSeis2ConnectMsgHidden = new DispatcherTimer(); public DispatcherTimer timerBackupSeis2ConnectMsgHidden = new DispatcherTimer(); public DispatcherTimer timerBaseStationMsgHidden = new DispatcherTimer(); public DispatcherTimer timerMainSeisMsgHidden = new DispatcherTimer(); public DispatcherTimer timerBackupSeisMsgHidden = new DispatcherTimer(); public DispatcherTimer timerElectMsgHidden = new DispatcherTimer(); public DispatcherTimer timerBaseStationPowerOn = new DispatcherTimer(); public DispatcherTimer timerBaseStationPowerOff = new DispatcherTimer(); public DispatcherTimer timerMainSeisPowerOn = new DispatcherTimer(); public DispatcherTimer timerMainSeisPowerOff = new DispatcherTimer(); public DispatcherTimer timerBackupSeisPowerOn = new DispatcherTimer(); public DispatcherTimer timerBackupSeisPowerOff = new DispatcherTimer(); public DispatcherTimer timerElectPowerOn = new DispatcherTimer(); public DispatcherTimer timerElectPowerOff = new DispatcherTimer(); #endregion #region Communication //下位机 public CommandBase Socket1DoOpenCommand { get; set; } public CommandBase Socket2DoOpenCommand { get; set; } public ServerModel serverModel1 { get; set; } = new ServerModel(); public ServerModel serverModel2 { get; set; } = new ServerModel(); public static SocketInfo SocketServerInfo1 { get; set; } = new SocketInfo() //PLC1连接信息 { IP = Tools.GetAppSetting("XWJ_Service_IP1"), Port = Convert.ToInt32(Tools.GetAppSetting("XWJ_Service_Port1")) }; public static SocketInfo SocketServerInfo2 { get; set; } = new SocketInfo() //PLC2连接信息 { IP = Tools.GetAppSetting("XWJ_Service_IP2"), Port = Convert.ToInt32(Tools.GetAppSetting("XWJ_Service_Port2")) }; //升压站 public CommandBase Socket1DoConnectCommand { get; set; } //客户端连接/断开操作 public CommandBase Socket2DoConnectCommand { get; set; } //客户端连接/断开操作 public ClientModel clientModel1 { get; set; } = new ClientModel(); public ClientModel clientModel2 { get; set; } = new ClientModel(); public static SocketInfo SocketInfo1 { get; set; } = new SocketInfo() //PLC1连接信息 { IP = Tools.GetAppSetting("SYZ_Client_IP1"), Port = Convert.ToInt32(Tools.GetAppSetting("SYZ_Client_Port1")) }; public static SocketInfo SocketInfo2 { get; set; } = new SocketInfo() //PLC2连接信息 { IP = Tools.GetAppSetting("SYZ_Client_IP2"), Port = Convert.ToInt32(Tools.GetAppSetting("SYZ_Client_Port2")) }; //地震仪 public CommandBase SocketMainSeis1DoConnectCommand { get; set; } //客户端连接/断开操作 public CommandBase SocketMainSeis2DoConnectCommand { get; set; } //客户端连接/断开操作 public CommandBase SocketBackupSeis1DoConnectCommand { get; set; } //客户端连接/断开操作 public CommandBase SocketBackupSeis2DoConnectCommand { get; set; } //客户端连接/断开操作 public ClientModel clientModelMainSeis1 { get; set; } = new ClientModel(); public ClientModel clientModelMainSeis2 { get; set; } = new ClientModel(); public ClientModel clientModelBackupSeis1 { get; set; } = new ClientModel(); public ClientModel clientModelBackupSeis2 { get; set; } = new ClientModel(); public static SocketInfo SocketInfoMainSeis1 { get; set; } = new SocketInfo() { IP = Tools.GetAppSetting("MainSeis_Client_IP1"), Port = Convert.ToInt32(Tools.GetAppSetting("MainSeis_Client_Port1")) }; public static SocketInfo SocketInfoMainSeis2 { get; set; } = new SocketInfo() { IP = Tools.GetAppSetting("MainSeis_Client_IP2"), Port = Convert.ToInt32(Tools.GetAppSetting("MainSeis_Client_Port2")) }; public static SocketInfo SocketInfoBackupSeis1 { get; set; } = new SocketInfo() { IP = Tools.GetAppSetting("BackupSeis_Client_IP1"), Port = Convert.ToInt32(Tools.GetAppSetting("BackupSeis_Client_Port1")) }; public static SocketInfo SocketInfoBackupSeis2 { get; set; } = new SocketInfo() { IP = Tools.GetAppSetting("BackupSeis_Client_IP2"), Port = Convert.ToInt32(Tools.GetAppSetting("BackupSeis_Client_Port2")) }; #region Useless //public CommandBase Com1DoConnectCommand { get; set; } //串口连接/断开操作 //public CommandBase Com2DoConnectCommand { get; set; } //串口连接/断开操作 //public ComModel comModel1 { get; set; } = new ComModel(); //public ComModel2 comModel2 { get; set; } = new ComModel2(); //public static SerialInfo SerialInfo1 { get; set; } = new SerialInfo() //初始化串口连接信息 //{ // PortName = Tools.GetAppSetting("PortName1"), // BaudRate = Convert.ToInt32(Tools.GetAppSetting("BaudRate1")), // DataBit = 8, // Parity = Parity.None, // StopBits = StopBits.One //}; //public static SerialInfo SerialInfo2 { get; set; } = new SerialInfo() //初始化串口连接信息 //{ // PortName = Tools.GetAppSetting("PortName2"), // BaudRate = Convert.ToInt32(Tools.GetAppSetting("BaudRate2")), // DataBit = 8, // Parity = Parity.None, // StopBits = StopBits.One //}; #endregion #endregion public static DialogViewModel vm; public MainViewModel() { vm = new DialogViewModel { Content = "" }; #region Command Define this.NavChangedCommand = new CommandBase(); this.NavChangedCommand.DoExcute = new Action(DoNavChanged); this.NavChangedCommand.DoCanExcute = new Func((o) => true); this.Switch = new CommandBase(); this.Switch.DoExcute = new Action(Btn_Switch); this.Switch.DoCanExcute = new Func((o) => true); this.Socket1DoOpenCommand = new CommandBase(); this.Socket1DoOpenCommand.DoExcute = new Action(Socket1DoOpen); this.Socket1DoOpenCommand.DoCanExcute = new Func((o) => true); this.Socket2DoOpenCommand = new CommandBase(); this.Socket2DoOpenCommand.DoExcute = new Action(Socket2DoOpen); this.Socket2DoOpenCommand.DoCanExcute = new Func((o) => true); this.Socket1DoConnectCommand = new CommandBase(); this.Socket1DoConnectCommand.DoExcute = new Action(DoSocket1Connect); this.Socket1DoConnectCommand.DoCanExcute = new Func((o) => true); this.Socket2DoConnectCommand = new CommandBase(); this.Socket2DoConnectCommand.DoExcute = new Action(DoSocket2Connect); this.Socket2DoConnectCommand.DoCanExcute = new Func((o) => true); this.SocketMainSeis1DoConnectCommand = new CommandBase(); this.SocketMainSeis1DoConnectCommand.DoExcute = new Action(DoSocketMainSeis1Connect); this.SocketMainSeis1DoConnectCommand.DoCanExcute = new Func((o) => true); this.SocketMainSeis2DoConnectCommand = new CommandBase(); this.SocketMainSeis2DoConnectCommand.DoExcute = new Action(DoSocketMainSeis2Connect); this.SocketMainSeis2DoConnectCommand.DoCanExcute = new Func((o) => true); this.SocketBackupSeis1DoConnectCommand = new CommandBase(); this.SocketBackupSeis1DoConnectCommand.DoExcute = new Action(DoSocketBackupSeis1Connect); this.SocketBackupSeis1DoConnectCommand.DoCanExcute = new Func((o) => true); this.SocketBackupSeis2DoConnectCommand = new CommandBase(); this.SocketBackupSeis2DoConnectCommand.DoExcute = new Action(DoSocketBackupSeis2Connect); this.SocketBackupSeis2DoConnectCommand.DoCanExcute = new Func((o) => true); #endregion #region Timer Set timerOpenSetMsgHidden.Interval = TimeSpan.FromSeconds(2); timerOpenSetMsgHidden.Tick += TimerOpenSetMsgHidden_Tick; timerCloseSetMsgHidden.Interval = TimeSpan.FromSeconds(2); timerCloseSetMsgHidden.Tick += TimerCloseSetMsgHidden_Tick; timerSeisZeroSetStart.Interval = TimeSpan.FromSeconds(20); timerSeisZeroSetStart.Tick += TimerSeisZeroSetStart_Tick; timerSeisZeroSetStop.Interval = TimeSpan.FromSeconds(20); timerSeisZeroSetStop.Tick += TimerSeisZeroSetStop_Tick; timerSeisLevelSetStart.Interval = TimeSpan.FromSeconds(20); timerSeisLevelSetStart.Tick += TimerSeisLevelSetStart_Tick; timerSeisLevelSetStop.Interval = TimeSpan.FromSeconds(20); timerSeisLevelSetStop.Tick += TimerSeisLevelSetStop_Tick; timerMainSeis1ConnectMsgHidden.Interval = TimeSpan.FromSeconds(2); timerMainSeis1ConnectMsgHidden.Tick += TimerMainSeis1ConnectMsgHidden_Tick; timerBackupSeis1ConnectMsgHidden.Interval = TimeSpan.FromSeconds(2); timerBackupSeis1ConnectMsgHidden.Tick += TimerBackupSeis1ConnectMsgHidden_Tick; timerMainSeis2ConnectMsgHidden.Interval = TimeSpan.FromSeconds(2); timerMainSeis2ConnectMsgHidden.Tick += TimerMainSeis2ConnectMsgHidden_Tick; timerBackupSeis2ConnectMsgHidden.Interval = TimeSpan.FromSeconds(2); timerBackupSeis2ConnectMsgHidden.Tick += TimerBackupSeis2ConnectMsgHidden_Tick; timerBaseStationMsgHidden.Interval = TimeSpan.FromSeconds(2); timerBaseStationMsgHidden.Tick += TimerBaseStationMsgHidden_Tick; timerMainSeisMsgHidden.Interval = TimeSpan.FromSeconds(2); timerMainSeisMsgHidden.Tick += TimerMainSeisMsgHidden_Tick; timerBackupSeisMsgHidden.Interval = TimeSpan.FromSeconds(2); timerBackupSeisMsgHidden.Tick += TimerBackupSeisMsgHidden_Tick; timerElectMsgHidden.Interval = TimeSpan.FromSeconds(2); timerElectMsgHidden.Tick += TimerElectMsgHidden_Tick; timerBaseStationPowerOn.Interval = TimeSpan.FromSeconds(20); timerBaseStationPowerOn.Tick += TimerBaseStationPowerOn_Tick; timerBaseStationPowerOff.Interval = TimeSpan.FromSeconds(20); timerBaseStationPowerOff.Tick += TimerBaseStationPowerOff_Tick; timerMainSeisPowerOn.Interval = TimeSpan.FromSeconds(20); timerMainSeisPowerOn.Tick += TimerMainSeisPowerOn_Tick; timerMainSeisPowerOff.Interval = TimeSpan.FromSeconds(20); timerMainSeisPowerOff.Tick += TimerMainSeisPowerOff_Tick; timerBackupSeisPowerOn.Interval = TimeSpan.FromSeconds(20); timerBackupSeisPowerOn.Tick += TimerBackupSeisPowerOn_Tick; timerBackupSeisPowerOff.Interval = TimeSpan.FromSeconds(20); timerBackupSeisPowerOff.Tick += TimerBackupSeisPowerOff_Tick; timerElectPowerOn.Interval = TimeSpan.FromSeconds(20); timerElectPowerOn.Tick += TimerElectPowerOn_Tick; timerElectPowerOff.Interval = TimeSpan.FromSeconds(20); timerElectPowerOff.Tick += TimerElectPowerOff_Tick; #endregion #region 日志页面初始化 string sql = String.Format("select * from log_record where StationID = {0} ORDER by id desc limit 100", 1); MySqlDataReader dataReader = DBHelper.ExecuteReader(sql, 1); int index = 1; while (dataReader.Read()) { LogRecordModel logRecord = new LogRecordModel(); logRecord.Index = index++; logRecord.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); logRecord.Device_Name = dataReader["Device_Name"].ToString(); logRecord.Operation_Type = dataReader["Operation_Type"].ToString(); logRecord.Record = dataReader["Record"].ToString(); logRecordViewModel1.TotalLogRecordList.Add(logRecord); } dataReader.Dispose(); logRecordViewModel1.RecordCount = index - 1; logRecordViewModel1.TotalPage = index <= 10 ? 1 : (int)Math.Ceiling((double)index / 10); for (int i = 0; i < (logRecordViewModel1.RecordCount < 10 ? logRecordViewModel1.RecordCount : 10); i++) { logRecordViewModel1.LogRecordList.Add(logRecordViewModel1.TotalLogRecordList[i]); } logRecordViewModel1.LogMsg = string.Format("共计{0}页,当前第{1}页", logRecordViewModel1.TotalPage, 1); sql = String.Format("select * from log_record where StationID = {0} ORDER by id desc limit 100", 2); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { LogRecordModel logRecord = new LogRecordModel(); logRecord.Index = index++; logRecord.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); logRecord.Device_Name = dataReader["Device_Name"].ToString(); logRecord.Operation_Type = dataReader["Operation_Type"].ToString(); logRecord.Record = dataReader["Record"].ToString(); logRecordViewModel2.TotalLogRecordList.Add(logRecord); } dataReader.Dispose(); logRecordViewModel2.RecordCount = index - 1; logRecordViewModel2.TotalPage = index <= 10 ? 1 : (int)Math.Ceiling((double)index / 10); for (int i = 0; i < (logRecordViewModel2.RecordCount < 10 ? logRecordViewModel2.RecordCount : 10); i++) { logRecordViewModel2.LogRecordList.Add(logRecordViewModel2.TotalLogRecordList[i]); } logRecordViewModel2.LogMsg = string.Format("共计{0}页,当前第{1}页", logRecordViewModel2.TotalPage, 1); #endregion #region 告警页面初始化 sql = String.Format("select * from alarm_info where StationID = {0} ORDER by id desc limit 100", 1); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { AlarmRecordModel alarmRecordModel = new AlarmRecordModel(); alarmRecordModel.Index = index++; alarmRecordModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); alarmRecordModel.ParaName = dataReader["ParaName"].ToString(); alarmRecordModel.ParaNum = Convert.ToInt32(string.IsNullOrEmpty(dataReader["ParaNum"].ToString()) ? 0 : dataReader["ParaNum"]); alarmRecordModel.ParaContent = dataReader["ParaContent"].ToString(); alarmRecordModel.ProcessingMethod = dataReader["ProcessingMethod"].ToString(); if (dataReader["UrgencyLevel"].ToString() == "1") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleRed"); } else if (dataReader["UrgencyLevel"].ToString() == "2") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleOrange"); } else { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleYellow"); } if (dataReader["IsHandled"].ToString() == "0") { alarmRecordModel.IsHandled = "未处理"; } else if (dataReader["IsHandled"].ToString() == "1") { alarmRecordModel.IsHandled = "已处理"; } else { alarmRecordModel.IsHandled = "处理中"; } alarmRecordViewModel1.TotalAlarmRecordList.Add(alarmRecordModel); } dataReader.Dispose(); alarmRecordViewModel1.RecordCount = index - 1; alarmRecordViewModel1.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (alarmRecordViewModel1.RecordCount < 10 ? alarmRecordViewModel1.RecordCount : 10); i++) { alarmRecordViewModel1.AlarmRecordList.Add(alarmRecordViewModel1.TotalAlarmRecordList[i]); } alarmRecordViewModel1.AlarmMsg = string.Format("共计{0}页,当前第{1}页", alarmRecordViewModel1.TotalPage, 1); sql = String.Format("select * from alarm_info where StationID = {0} ORDER by id desc limit 100", 2); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { AlarmRecordModel alarmRecordModel = new AlarmRecordModel(); alarmRecordModel.Index = index++; alarmRecordModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); alarmRecordModel.ParaName = dataReader["ParaName"].ToString(); alarmRecordModel.ParaNum = Convert.ToInt32(string.IsNullOrEmpty(dataReader["ParaNum"].ToString()) ? 0 : dataReader["ParaNum"]); alarmRecordModel.ParaContent = dataReader["ParaContent"].ToString(); alarmRecordModel.ProcessingMethod = dataReader["ProcessingMethod"].ToString(); if (dataReader["UrgencyLevel"].ToString() == "1") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleRed"); } else if (dataReader["UrgencyLevel"].ToString() == "2") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleOrange"); } else { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleYellow"); } if (dataReader["IsHandled"].ToString() == "0") { alarmRecordModel.IsHandled = "未处理"; } else if (dataReader["IsHandled"].ToString() == "1") { alarmRecordModel.IsHandled = "已处理"; } else { alarmRecordModel.IsHandled = "处理中"; } alarmRecordViewModel2.TotalAlarmRecordList.Add(alarmRecordModel); } dataReader.Dispose(); alarmRecordViewModel2.RecordCount = index - 1; alarmRecordViewModel2.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (alarmRecordViewModel2.RecordCount < 10 ? alarmRecordViewModel2.RecordCount : 10); i++) { alarmRecordViewModel2.AlarmRecordList.Add(alarmRecordViewModel2.TotalAlarmRecordList[i]); } alarmRecordViewModel2.AlarmMsg = string.Format("共计{0}页,当前第{1}页", alarmRecordViewModel2.TotalPage, 1); #endregion #region 系统环境数据页面初始化 sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit 100", 1); dataReader = DBHelper.ExecuteReader(sql, 1); string sqlSub = String.Format("select * from juncbox_cavity_state where StationID = {0} ORDER by id desc limit 100", 1); MySqlDataReader dataReaderSub = DBHelper.ExecuteReader(sqlSub, 1); index = 1; while (dataReader.Read()) { BaseStationEnvirModel baseStationEnvirModel = new BaseStationEnvirModel(); baseStationEnvirModel.Index = index++; baseStationEnvirModel.DataTime = Convert.ToDateTime(dataReader["DataTime"]); baseStationEnvirModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); baseStationEnvirModel.Temperature = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Temperature"].ToString()) ? "0" : dataReader["Temperature"]); baseStationEnvirModel.Humidity = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Humidity"].ToString()) ? "0" : dataReader["Humidity"]); baseStationEnvirModel.AttitudeX = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeX"].ToString()) ? "0" : dataReader["AttitudeX"]); baseStationEnvirModel.AttitudeY = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeY"].ToString()) ? "0" : dataReader["AttitudeY"]); baseStationEnvirModel.AttitudeZ = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeZ"].ToString()) ? "0" : dataReader["AttitudeZ"]); if (dataReaderSub.Read()) { int leakState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Leakage"].ToString()) ? "2" : dataReaderSub["Leakage"]); if (leakState == 1) { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleRed"); } else if (leakState == 0) { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleGreen"); } else { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleGray"); } //int hatchState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Hatch_State"].ToString()) ? "2" : dataReaderSub["Hatch_State"]); //if (hatchState == 1) //{ // baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleRed"); //} //else if (hatchState == 0) //{ // baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleGreen"); //} //else //{ // baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleGray"); //} } else { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleGray"); //baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleGray"); } systemEnvironDataViewModel1.TotalSystemStateDataList.Add(baseStationEnvirModel); } dataReader.Dispose(); dataReaderSub.Dispose(); systemEnvironDataViewModel1.RecordCount = index - 1; systemEnvironDataViewModel1.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (systemEnvironDataViewModel1.RecordCount < 10 ? systemEnvironDataViewModel1.RecordCount : 10); i++) { systemEnvironDataViewModel1.SystemStateDataList.Add(systemEnvironDataViewModel1.TotalSystemStateDataList[i]); } systemEnvironDataViewModel1.SystemStateMsg = string.Format("共计{0}页,当前第{1}页", systemEnvironDataViewModel1.TotalPage, 1); sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit 100", 2); dataReader = DBHelper.ExecuteReader(sql, 1); sqlSub = String.Format("select * from juncbox_cavity_state where StationID = {0} ORDER by id desc limit 100", 2); dataReaderSub = DBHelper.ExecuteReader(sqlSub, 1); index = 1; while (dataReader.Read()) { BaseStationEnvirModel baseStationEnvirModel = new BaseStationEnvirModel(); baseStationEnvirModel.Index = index++; baseStationEnvirModel.DataTime = Convert.ToDateTime(dataReader["DataTime"]); baseStationEnvirModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); baseStationEnvirModel.Temperature = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Temperature"].ToString()) ? "0" : dataReader["Temperature"]); baseStationEnvirModel.Humidity = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Humidity"].ToString()) ? "0" : dataReader["Humidity"]); baseStationEnvirModel.AttitudeX = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeX"].ToString()) ? "0" : dataReader["AttitudeX"]); baseStationEnvirModel.AttitudeY = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeY"].ToString()) ? "0" : dataReader["AttitudeY"]); baseStationEnvirModel.AttitudeZ = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeZ"].ToString()) ? "0" : dataReader["AttitudeZ"]); if (dataReaderSub.Read()) { int leakState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Leakage"].ToString()) ? "2" : dataReaderSub["Leakage"]); if (leakState == 1) { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleRed"); } else if (leakState == 0) { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleGreen"); } else { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleGray"); } //int hatchState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Hatch_State"].ToString()) ? "2" : dataReaderSub["Hatch_State"]); //if (hatchState == 1) //{ // baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleRed"); //} //else if (hatchState == 0) //{ // baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleGreen"); //} //else //{ // baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleGray"); //} } else { baseStationEnvirModel.Leakage = (ImageSource)Application.Current.FindResource("CycleGray"); //baseStationEnvirModel.Hatch_State = (ImageSource)Application.Current.FindResource("CycleGray"); } systemEnvironDataViewModel2.TotalSystemStateDataList.Add(baseStationEnvirModel); } dataReader.Dispose(); dataReaderSub.Dispose(); systemEnvironDataViewModel2.RecordCount = index - 1; systemEnvironDataViewModel2.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (systemEnvironDataViewModel2.RecordCount < 10 ? systemEnvironDataViewModel2.RecordCount : 10); i++) { systemEnvironDataViewModel2.SystemStateDataList.Add(systemEnvironDataViewModel2.TotalSystemStateDataList[i]); } systemEnvironDataViewModel2.SystemStateMsg = string.Format("共计{0}页,当前第{1}页", systemEnvironDataViewModel2.TotalPage, 1); #endregion #region 系统状态数据页面初始化 sql = String.Format("select * from juncbox_monitor where StationID = {0} ORDER by id desc limit 100", 1); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { BaseStationMonitorModel baseStationMonitorModel = new BaseStationMonitorModel(); baseStationMonitorModel.Index = index++; baseStationMonitorModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); baseStationMonitorModel.Seis1_Voltage = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis1_Voltage"].ToString()) ? "0" : dataReader["Seis1_Voltage"]); baseStationMonitorModel.Seis1_Current = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis1_Current"].ToString()) ? "0" : dataReader["Seis1_Current"]); baseStationMonitorModel.Seis2_Voltage = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis2_Voltage"].ToString()) ? "0" : dataReader["Seis2_Voltage"]); baseStationMonitorModel.Seis2_Current = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis2_Current"].ToString()) ? "0" : dataReader["Seis2_Current"]); baseStationMonitorModel.Elect_Current = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Elect_Current"].ToString()) ? "0" : dataReader["Elect_Current"]); baseStationMonitorModel.Out_Voltage12_Reserved1 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Out_Voltage12_Reserved1"].ToString()) ? "0" : dataReader["Out_Voltage12_Reserved1"]); baseStationMonitorModel.Out_Voltage12_Reserved2 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Out_Voltage12_Reserved2"].ToString()) ? "0" : dataReader["Out_Voltage12_Reserved2"]); baseStationMonitorModel.Reserved = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Reserved"].ToString()) ? "0" : dataReader["Reserved"]); systemMonitorDataViewModel1.TotalSystemMonitorDataList.Add(baseStationMonitorModel); } dataReader.Dispose(); systemMonitorDataViewModel1.RecordCount = index - 1; systemMonitorDataViewModel1.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (systemMonitorDataViewModel1.RecordCount < 10 ? systemMonitorDataViewModel1.RecordCount : 10); i++) { systemMonitorDataViewModel1.SystemMonitorDataList.Add(systemMonitorDataViewModel1.TotalSystemMonitorDataList[i]); } systemMonitorDataViewModel1.SystemMonitorDataMsg = string.Format("共计{0}页,当前第{1}页", systemMonitorDataViewModel1.TotalPage, 1); sql = String.Format("select * from juncbox_monitor where StationID = {0} ORDER by id desc limit 100", 2); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { BaseStationMonitorModel baseStationMonitorModel = new BaseStationMonitorModel(); baseStationMonitorModel.Index = index++; baseStationMonitorModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); baseStationMonitorModel.Seis1_Voltage = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis1_Voltage"].ToString()) ? "0" : dataReader["Seis1_Voltage"]); baseStationMonitorModel.Seis1_Current = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis1_Current"].ToString()) ? "0" : dataReader["Seis1_Current"]); baseStationMonitorModel.Seis2_Voltage = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis2_Voltage"].ToString()) ? "0" : dataReader["Seis2_Voltage"]); baseStationMonitorModel.Seis2_Current = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Seis2_Current"].ToString()) ? "0" : dataReader["Seis2_Current"]); baseStationMonitorModel.Elect_Current = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Elect_Current"].ToString()) ? "0" : dataReader["Elect_Current"]); baseStationMonitorModel.Out_Voltage12_Reserved1 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Out_Voltage12_Reserved1"].ToString()) ? "0" : dataReader["Out_Voltage12_Reserved1"]); baseStationMonitorModel.Out_Voltage12_Reserved2 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Out_Voltage12_Reserved2"].ToString()) ? "0" : dataReader["Out_Voltage12_Reserved2"]); baseStationMonitorModel.Reserved = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Reserved"].ToString()) ? "0" : dataReader["Reserved"]); systemMonitorDataViewModel2.TotalSystemMonitorDataList.Add(baseStationMonitorModel); } dataReader.Dispose(); systemMonitorDataViewModel2.RecordCount = index - 1; systemMonitorDataViewModel2.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (systemMonitorDataViewModel2.RecordCount < 10 ? systemMonitorDataViewModel2.RecordCount : 10); i++) { systemMonitorDataViewModel2.SystemMonitorDataList.Add(systemMonitorDataViewModel2.TotalSystemMonitorDataList[i]); } systemMonitorDataViewModel2.SystemMonitorDataMsg = string.Format("共计{0}页,当前第{1}页", systemMonitorDataViewModel2.TotalPage, 1); #endregion #region 升压站状态数据界面初始化 sql = String.Format("select RecordTime,In_Vol,In_Cur,Power,RelayStatus from boosterstation_state where StationID = {0} ORDER by id desc limit 100", 1); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { BoosterStationStateDataModel boosterStationStateDataModel = new BoosterStationStateDataModel(); boosterStationStateDataModel.Index = index++; boosterStationStateDataModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); boosterStationStateDataModel.In_Vol = Convert.ToSingle(string.IsNullOrEmpty(dataReader["In_Vol"].ToString()) ? "0" : dataReader["In_Vol"]); boosterStationStateDataModel.In_Cur = Convert.ToSingle(string.IsNullOrEmpty(dataReader["In_Cur"].ToString()) ? "0" : dataReader["In_Cur"]); boosterStationStateDataModel.Power = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Power"].ToString()) ? "0" : dataReader["Power"]); if (dataReader["RelayStatus"].ToString() == "1") boosterStationStateDataModel.RelayStatus = (ImageSource)Application.Current.FindResource("DeviceOn"); else boosterStationStateDataModel.RelayStatus = (ImageSource)Application.Current.FindResource("DeviceOff"); boosterStationStateDataViewModel1.TotalBoosterStationStateDataList.Add(boosterStationStateDataModel); } dataReader.Dispose(); boosterStationStateDataViewModel1.RecordCount = index - 1; boosterStationStateDataViewModel1.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (boosterStationStateDataViewModel1.RecordCount < 10 ? boosterStationStateDataViewModel1.RecordCount : 10); i++) { boosterStationStateDataViewModel1.BoosterStationStateDataList.Add(boosterStationStateDataViewModel1.TotalBoosterStationStateDataList[i]); } boosterStationStateDataViewModel1.BoosterStationStateMsg = string.Format("共计{0}页,当前第{1}页", boosterStationStateDataViewModel1.TotalPage, 1); sql = String.Format("select RecordTime,In_Vol,In_Cur,Power,RelayStatus from boosterstation_state where StationID = {0} ORDER by id desc limit 100", 2); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { BoosterStationStateDataModel boosterStationStateDataModel = new BoosterStationStateDataModel(); boosterStationStateDataModel.Index = index++; boosterStationStateDataModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); boosterStationStateDataModel.In_Vol = Convert.ToSingle(string.IsNullOrEmpty(dataReader["In_Vol"].ToString()) ? "0" : dataReader["In_Vol"]); boosterStationStateDataModel.In_Cur = Convert.ToSingle(string.IsNullOrEmpty(dataReader["In_Cur"].ToString()) ? "0" : dataReader["In_Cur"]); boosterStationStateDataModel.Power = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Power"].ToString()) ? "0" : dataReader["Power"]); if (dataReader["RelayStatus"].ToString() == "1") boosterStationStateDataModel.RelayStatus = (ImageSource)Application.Current.FindResource("DeviceOn"); else boosterStationStateDataModel.RelayStatus = (ImageSource)Application.Current.FindResource("DeviceOff"); boosterStationStateDataViewModel2.TotalBoosterStationStateDataList.Add(boosterStationStateDataModel); } dataReader.Dispose(); boosterStationStateDataViewModel2.RecordCount = index - 1; boosterStationStateDataViewModel2.TotalPage = (index - 1) <= 10 ? 1 : (int)Math.Ceiling((double)(index - 1) / 10); for (int i = 0; i < (boosterStationStateDataViewModel2.RecordCount < 10 ? boosterStationStateDataViewModel2.RecordCount : 10); i++) { boosterStationStateDataViewModel2.BoosterStationStateDataList.Add(boosterStationStateDataViewModel2.TotalBoosterStationStateDataList[i]); } boosterStationStateDataViewModel2.BoosterStationStateMsg = string.Format("共计{0}页,当前第{1}页", boosterStationStateDataViewModel2.TotalPage, 1); #endregion #region 升压站状态页面折线图初始化 var chartValuesTeam1 = new ChartValues(); var chartValuesTeam2 = new ChartValues(); sql = String.Format("select RecordTime,In_Vol,In_Cur from boosterstation_state where StationID = {0} ORDER by id desc limit {1}", 1, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["In_Vol"]) && !Convert.IsDBNull(dataReader["In_Cur"])) { chartValuesTeam1.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Vol"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesTeam2.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Cur"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); boosterStationStateDataViewModel1.SeriesCollection = new SeriesCollection { new LineSeries { Title = "输入电压", Values =chartValuesTeam1, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, new LineSeries { Title = "输入电流", Values = chartValuesTeam2, LineSmoothness = 0, ScalesYAt = 1, Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 165, 0)), Fill = new SolidColorBrush(Colors.Transparent) }, }; boosterStationStateDataViewModel1.XFormatter = val => new DateTime((long)val).ToString("MM/dd HH:mm"); boosterStationStateDataViewModel1.YFormatter1 = val => val.ToString("F2") + " V"; boosterStationStateDataViewModel1.YFormatter2 = val => val.ToString("F2") + " A"; var chartValuesTeam3 = new ChartValues(); var chartValuesTeam4 = new ChartValues(); sql = String.Format("select RecordTime,In_Vol,In_Cur from boosterstation_state where StationID = {0} ORDER by id desc limit {1}", 2, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["In_Vol"]) && !Convert.IsDBNull(dataReader["In_Cur"])) { chartValuesTeam3.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Vol"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesTeam4.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Cur"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); boosterStationStateDataViewModel2.SeriesCollection = new SeriesCollection { new LineSeries { Title = "输入电压", Values = chartValuesTeam3, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, new LineSeries { Title = "输入电流", Values = chartValuesTeam4, LineSmoothness = 0, ScalesYAt = 1, Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 165, 0)), Fill = new SolidColorBrush(Colors.Transparent) }, }; boosterStationStateDataViewModel2.XFormatter = val => new DateTime((long)val).ToString("MM/dd HH:mm"); boosterStationStateDataViewModel2.YFormatter1 = val => val.ToString("F2") + " V"; boosterStationStateDataViewModel2.YFormatter2 = val => val.ToString("F2") + " A"; #endregion #region 地震仪状态页面初始化 sql = String.Format("select * from seismograph_state where StationID = {0} ORDER by id desc limit 90", 1); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { EarthquakeSensorModel earthquakeSensorModel = new EarthquakeSensorModel(); earthquakeSensorModel.Index = index++; earthquakeSensorModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); earthquakeSensorModel.Out_Vol = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Out_Vol"].ToString()) ? "0" : dataReader["Out_Vol"]); earthquakeSensorModel.Backup_Vol = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Backup_Vol"].ToString()) ? "0" : dataReader["Backup_Vol"]); earthquakeSensorModel.Pre = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Pre"].ToString()) ? "0" : dataReader["Pre"]); earthquakeSensorModel.Tem = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Tem"].ToString()) ? "0" : dataReader["Tem"]); earthquakeSensorModel.Sei_Tilt_Angle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_Tilt_Angle"].ToString()) ? "0" : dataReader["Sei_Tilt_Angle"]); earthquakeSensorModel.OBS_Tilt_Angle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["OBS_Tilt_Angle"].ToString()) ? "0" : dataReader["OBS_Tilt_Angle"]); earthquakeSensorModel.Species_Dif = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Species_Dif"].ToString()) ? "0" : dataReader["Species_Dif"]); earthquakeSensorModel.Frequency_Dif = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Frequency_Dif"].ToString()) ? "0" : dataReader["Frequency_Dif"]); earthquakeSensorModel.CF_Total_Cap = Convert.ToSingle(string.IsNullOrEmpty(dataReader["CF_Total_Cap"].ToString()) ? "0" : dataReader["CF_Total_Cap"]); earthquakeSensorModel.CF_Usable_Cap = Convert.ToSingle(string.IsNullOrEmpty(dataReader["CF_Usable_Cap"].ToString()) ? "0" : dataReader["CF_Usable_Cap"]); earthquakeSensorModel.SD_Total_Cap1 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Total_Cap1"].ToString()) ? "0" : dataReader["SD_Total_Cap1"]); earthquakeSensorModel.SD_Usable_Cap1 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Usable_Cap1"].ToString()) ? "0" : dataReader["SD_Usable_Cap1"]); earthquakeSensorModel.SD_Total_Cap2 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Total_Cap2"].ToString()) ? "0" : dataReader["SD_Total_Cap2"]); earthquakeSensorModel.SD_Usable_Cap2 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Usable_Cap2"].ToString()) ? "0" : dataReader["SD_Usable_Cap2"]); earthquakeSensorModel.Sei_U_Point = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_U_Point"].ToString()) ? "0" : dataReader["Sei_U_Point"]); earthquakeSensorModel.Sei_V_Point = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_V_Point"].ToString()) ? "0" : dataReader["Sei_V_Point"]); earthquakeSensorModel.Sei_W_Point = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_W_Point"].ToString()) ? "0" : dataReader["Sei_W_Point"]); earthquakeSensorModel.North_Angle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["North_Angle"].ToString()) ? "0" : dataReader["North_Angle"]); seismometerStateDataViewModel1.TotalSeismometerStateDataList.Add(earthquakeSensorModel); } dataReader.Dispose(); seismometerStateDataViewModel1.RecordCount = index - 1; seismometerStateDataViewModel1.TotalPage = (index - 1) <= 9 ? 1 : (int)Math.Ceiling((double)(index - 1) / 9); for (int i = 0; i < (seismometerStateDataViewModel1.RecordCount < 9 ? seismometerStateDataViewModel1.RecordCount : 9); i++) { seismometerStateDataViewModel1.SeismometerStateDataList.Add(seismometerStateDataViewModel1.TotalSeismometerStateDataList[i]); } seismometerStateDataViewModel1.SeismometerStateMsg = string.Format("共计{0}页,当前第{1}页", seismometerStateDataViewModel1.TotalPage, 1); sql = String.Format("select * from seismograph_state where StationID = {0} ORDER by id desc limit 90", 2); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { EarthquakeSensorModel earthquakeSensorModel = new EarthquakeSensorModel(); earthquakeSensorModel.Index = index++; earthquakeSensorModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); earthquakeSensorModel.Out_Vol = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Out_Vol"].ToString()) ? "0" : dataReader["Out_Vol"]); earthquakeSensorModel.Backup_Vol = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Backup_Vol"].ToString()) ? "0" : dataReader["Backup_Vol"]); earthquakeSensorModel.Pre = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Pre"].ToString()) ? "0" : dataReader["Pre"]); earthquakeSensorModel.Tem = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Tem"].ToString()) ? "0" : dataReader["Tem"]); earthquakeSensorModel.Sei_Tilt_Angle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_Tilt_Angle"].ToString()) ? "0" : dataReader["Sei_Tilt_Angle"]); earthquakeSensorModel.OBS_Tilt_Angle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["OBS_Tilt_Angle"].ToString()) ? "0" : dataReader["OBS_Tilt_Angle"]); earthquakeSensorModel.Species_Dif = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Species_Dif"].ToString()) ? "0" : dataReader["Species_Dif"]); earthquakeSensorModel.Frequency_Dif = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Frequency_Dif"].ToString()) ? "0" : dataReader["Frequency_Dif"]); earthquakeSensorModel.CF_Total_Cap = Convert.ToSingle(string.IsNullOrEmpty(dataReader["CF_Total_Cap"].ToString()) ? "0" : dataReader["CF_Total_Cap"]); earthquakeSensorModel.CF_Usable_Cap = Convert.ToSingle(string.IsNullOrEmpty(dataReader["CF_Usable_Cap"].ToString()) ? "0" : dataReader["CF_Usable_Cap"]); earthquakeSensorModel.SD_Total_Cap1 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Total_Cap1"].ToString()) ? "0" : dataReader["SD_Total_Cap1"]); earthquakeSensorModel.SD_Usable_Cap1 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Usable_Cap1"].ToString()) ? "0" : dataReader["SD_Usable_Cap1"]); earthquakeSensorModel.SD_Total_Cap2 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Total_Cap2"].ToString()) ? "0" : dataReader["SD_Total_Cap2"]); earthquakeSensorModel.SD_Usable_Cap2 = Convert.ToSingle(string.IsNullOrEmpty(dataReader["SD_Usable_Cap2"].ToString()) ? "0" : dataReader["SD_Usable_Cap2"]); earthquakeSensorModel.Sei_U_Point = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_U_Point"].ToString()) ? "0" : dataReader["Sei_U_Point"]); earthquakeSensorModel.Sei_V_Point = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_V_Point"].ToString()) ? "0" : dataReader["Sei_V_Point"]); earthquakeSensorModel.Sei_W_Point = Convert.ToSingle(string.IsNullOrEmpty(dataReader["Sei_W_Point"].ToString()) ? "0" : dataReader["Sei_W_Point"]); earthquakeSensorModel.North_Angle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["North_Angle"].ToString()) ? "0" : dataReader["North_Angle"]); seismometerStateDataViewModel2.TotalSeismometerStateDataList.Add(earthquakeSensorModel); } dataReader.Dispose(); seismometerStateDataViewModel2.RecordCount = index - 1; seismometerStateDataViewModel2.TotalPage = (index - 1) <= 9 ? 1 : (int)Math.Ceiling((double)(index - 1) / 9); for (int i = 0; i < (seismometerStateDataViewModel2.RecordCount < 9 ? seismometerStateDataViewModel2.RecordCount : 9); i++) { seismometerStateDataViewModel2.SeismometerStateDataList.Add(seismometerStateDataViewModel2.TotalSeismometerStateDataList[i]); } seismometerStateDataViewModel2.SeismometerStateMsg = string.Format("共计{0}页,当前第{1}页", seismometerStateDataViewModel2.TotalPage, 1); #endregion #region 地震仪参数设置页面初始化 #region 地震仪参数显示 sql = String.Format("select * from seismograph_para where StationID = {0} ORDER by id desc limit 70", 1); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { EarthQuakeParaSetModel earthQuakeParaSetModel = new EarthQuakeParaSetModel(); earthQuakeParaSetModel.Index = index++; earthQuakeParaSetModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); earthQuakeParaSetModel.SeisID = Convert.ToInt32(string.IsNullOrEmpty(dataReader["SeisID"].ToString()) ? 0 : dataReader["SeisID"]); earthQuakeParaSetModel.StationNo = Convert.ToInt32(string.IsNullOrEmpty(dataReader["StationNo"].ToString()) ? 0 : dataReader["StationNo"]); earthQuakeParaSetModel.StationName = dataReader["StationName"].ToString(); earthQuakeParaSetModel.StationShortName = dataReader["StationShortName"].ToString(); earthQuakeParaSetModel.EarthQuakeCount = Convert.ToInt32(string.IsNullOrEmpty(dataReader["EarthQuakeCount"].ToString()) ? "0" : dataReader["EarthQuakeCount"]); earthQuakeParaSetModel.ChannelsNo = Convert.ToInt32(string.IsNullOrEmpty(dataReader["ChannelsNo"].ToString()) ? "0" : dataReader["ChannelsNo"]); earthQuakeParaSetModel.WD = Convert.ToSingle(string.IsNullOrEmpty(dataReader["WD"].ToString()) ? "0" : dataReader["WD"]); earthQuakeParaSetModel.JD = Convert.ToSingle(string.IsNullOrEmpty(dataReader["JD"].ToString()) ? "0" : dataReader["JD"]); earthQuakeParaSetModel.GaoCheng = Convert.ToInt32(string.IsNullOrEmpty(dataReader["GaoCheng"].ToString()) ? "0" : dataReader["GaoCheng"]); earthQuakeParaSetModel.StartTime = dataReader["StartTime"].ToString(); earthQuakeParaSetModel.Station_Id = dataReader["Station_Id"].ToString(); earthQuakeParaSetModel.Software_Version = dataReader["Software_Version"].ToString(); seismometerParameterViewModel1.TotalSeismometerParameterList.Add(earthQuakeParaSetModel); } dataReader.Dispose(); seismometerParameterViewModel1.RecordCount = index - 1; seismometerParameterViewModel1.TotalPage = (index - 1) <= 7 ? 1 : (int)Math.Ceiling((double)(index - 1) / 7); for (int i = 0; i < (seismometerParameterViewModel1.RecordCount < 7 ? seismometerParameterViewModel1.RecordCount : 7); i++) { seismometerParameterViewModel1.SeismometerParameterList.Add(seismometerParameterViewModel1.TotalSeismometerParameterList[i]); } seismometerParameterViewModel1.SeismometerParameterMsg = string.Format("共计{0}页,当前第{1}页", seismometerParameterViewModel1.TotalPage, 1); sql = String.Format("select * from seismograph_para where StationID = {0} ORDER by id desc limit 70", 2); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { EarthQuakeParaSetModel earthQuakeParaSetModel = new EarthQuakeParaSetModel(); earthQuakeParaSetModel.Index = index++; earthQuakeParaSetModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); earthQuakeParaSetModel.SeisID = Convert.ToInt32(string.IsNullOrEmpty(dataReader["SeisID"].ToString()) ? 0 : dataReader["SeisID"]); earthQuakeParaSetModel.StationNo = Convert.ToInt32(string.IsNullOrEmpty(dataReader["StationNo"].ToString()) ? 0 : dataReader["StationNo"]); earthQuakeParaSetModel.StationName = dataReader["StationName"].ToString(); earthQuakeParaSetModel.StationShortName = dataReader["StationShortName"].ToString(); earthQuakeParaSetModel.EarthQuakeCount = Convert.ToInt32(string.IsNullOrEmpty(dataReader["EarthQuakeCount"].ToString()) ? "0" : dataReader["EarthQuakeCount"]); earthQuakeParaSetModel.ChannelsNo = Convert.ToInt32(string.IsNullOrEmpty(dataReader["ChannelsNo"].ToString()) ? "0" : dataReader["ChannelsNo"]); earthQuakeParaSetModel.WD = Convert.ToSingle(string.IsNullOrEmpty(dataReader["WD"].ToString()) ? "0" : dataReader["WD"]); earthQuakeParaSetModel.JD = Convert.ToSingle(string.IsNullOrEmpty(dataReader["JD"].ToString()) ? "0" : dataReader["JD"]); earthQuakeParaSetModel.GaoCheng = Convert.ToInt32(string.IsNullOrEmpty(dataReader["GaoCheng"].ToString()) ? "0" : dataReader["GaoCheng"]); earthQuakeParaSetModel.StartTime = dataReader["StartTime"].ToString(); earthQuakeParaSetModel.Station_Id = dataReader["Station_Id"].ToString(); earthQuakeParaSetModel.Software_Version = dataReader["Software_Version"].ToString(); seismometerParameterViewModel2.TotalSeismometerParameterList.Add(earthQuakeParaSetModel); } dataReader.Dispose(); seismometerParameterViewModel2.RecordCount = index - 1; seismometerParameterViewModel2.TotalPage = (index - 1) <= 7 ? 1 : (int)Math.Ceiling((double)(index - 1) / 7); for (int i = 0; i < (seismometerParameterViewModel2.RecordCount < 7 ? seismometerParameterViewModel2.RecordCount : 7); i++) { seismometerParameterViewModel2.SeismometerParameterList.Add(seismometerParameterViewModel2.TotalSeismometerParameterList[i]); } seismometerParameterViewModel2.SeismometerParameterMsg = string.Format("共计{0}页,当前第{1}页", seismometerParameterViewModel2.TotalPage, 1); #endregion #region 地震仪参数初始化 string MainSeisName1 = Tools.GetAppSetting("MainSeisName1"); string MainSeisName2 = Tools.GetAppSetting("MainSeisName2"); sql = String.Format("select * from seismograph_para where StationID = {0} and StationName LIKE '{1}' ORDER by id desc limit 1", 1, "%" + MainSeisName1 + "%"); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { seismometerParameterViewModel1.EarthQuakeParaSet.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); seismometerParameterViewModel1.EarthQuakeParaSet.StationNo = Convert.IsDBNull(dataReader["StationNo"]) ? 0 : Convert.ToInt32(dataReader["StationNo"]); seismometerParameterViewModel1.EarthQuakeParaSet.StationName = Convert.IsDBNull(dataReader["StationName"]) ? "" : dataReader["StationName"].ToString(); seismometerParameterViewModel1.EarthQuakeParaSet.StationShortName = Convert.IsDBNull(dataReader["StationShortName"]) ? "" : dataReader["StationShortName"].ToString(); seismometerParameterViewModel1.EarthQuakeParaSet.EarthQuakeCount = Convert.IsDBNull(dataReader["EarthQuakeCount"]) ? (short)0 : Convert.ToInt16(dataReader["EarthQuakeCount"]); seismometerParameterViewModel1.EarthQuakeParaSet.ChannelsNo = Convert.IsDBNull(dataReader["ChannelsNo"]) ? (short)0 : Convert.ToInt16(dataReader["ChannelsNo"]); seismometerParameterViewModel1.EarthQuakeParaSet.WD = Convert.IsDBNull(dataReader["WD"]) ? 0 : Convert.ToInt32(dataReader["WD"]); seismometerParameterViewModel1.EarthQuakeParaSet.JD = Convert.IsDBNull(dataReader["JD"]) ? 0 : Convert.ToInt32(dataReader["JD"]); seismometerParameterViewModel1.EarthQuakeParaSet.GaoCheng = Convert.IsDBNull(dataReader["GaoCheng"]) ? 0 : Convert.ToInt32(dataReader["GaoCheng"]); seismometerParameterViewModel1.EarthQuakeParaSet.StartTime = Convert.IsDBNull(dataReader["StartTime"]) ? "" : dataReader["StartTime"].ToString(); seismometerParameterViewModel1.EarthQuakeParaSet.Station_Id = Convert.IsDBNull(dataReader["Station_Id"]) ? "" : dataReader["Station_Id"].ToString(); seismometerParameterViewModel1.EarthQuakeParaSet.Software_Version = Convert.IsDBNull(dataReader["Software_Version"]) ? "" : dataReader["Software_Version"].ToString(); } dataReader.Dispose(); sql = String.Format("select * from seismograph_para where StationID = {0} and StationName LIKE '{1}' ORDER by id desc limit 1", 2, "%" + MainSeisName2 + "%"); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { seismometerParameterViewModel2.EarthQuakeParaSet.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); seismometerParameterViewModel2.EarthQuakeParaSet.StationNo = Convert.IsDBNull(dataReader["StationNo"]) ? 0 : Convert.ToInt32(dataReader["StationNo"]); seismometerParameterViewModel2.EarthQuakeParaSet.StationName = Convert.IsDBNull(dataReader["StationName"]) ? "" : dataReader["StationName"].ToString(); seismometerParameterViewModel2.EarthQuakeParaSet.StationShortName = Convert.IsDBNull(dataReader["StationShortName"]) ? "" : dataReader["StationShortName"].ToString(); seismometerParameterViewModel2.EarthQuakeParaSet.EarthQuakeCount = Convert.IsDBNull(dataReader["EarthQuakeCount"]) ? (short)0 : Convert.ToInt16(dataReader["EarthQuakeCount"]); seismometerParameterViewModel2.EarthQuakeParaSet.ChannelsNo = Convert.IsDBNull(dataReader["ChannelsNo"]) ? (short)0 : Convert.ToInt16(dataReader["ChannelsNo"]); seismometerParameterViewModel2.EarthQuakeParaSet.WD = Convert.IsDBNull(dataReader["WD"]) ? 0 : Convert.ToInt32(dataReader["WD"]); seismometerParameterViewModel2.EarthQuakeParaSet.JD = Convert.IsDBNull(dataReader["JD"]) ? 0 : Convert.ToInt32(dataReader["JD"]); seismometerParameterViewModel2.EarthQuakeParaSet.GaoCheng = Convert.IsDBNull(dataReader["GaoCheng"]) ? 0 : Convert.ToInt32(dataReader["GaoCheng"]); seismometerParameterViewModel2.EarthQuakeParaSet.StartTime = Convert.IsDBNull(dataReader["StartTime"]) ? "" : dataReader["StartTime"].ToString(); seismometerParameterViewModel2.EarthQuakeParaSet.Station_Id = Convert.IsDBNull(dataReader["Station_Id"]) ? "" : dataReader["Station_Id"].ToString(); seismometerParameterViewModel2.EarthQuakeParaSet.Software_Version = Convert.IsDBNull(dataReader["Software_Version"]) ? "" : dataReader["Software_Version"].ToString(); } dataReader.Dispose(); #endregion #endregion #region 实时数据显示页面折线图初始化 var chartValuesConboxTem = new ChartValues(); var chartValuesConboxHum = new ChartValues(); sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit {1}", 1, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["Temperature"]) && !Convert.IsDBNull(dataReader["Humidity"])) { chartValuesConboxTem.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Temperature"]), DateTime = Convert.ToDateTime(dataReader["DataTime"]), }); chartValuesConboxHum.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Humidity"]), DateTime = Convert.ToDateTime(dataReader["DataTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel1.SeriesCollectionConboxTem = new SeriesCollection { new LineSeries { Title = "温度", Values = chartValuesConboxTem, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; realTimeDataViewModel1.SeriesCollectionConboxHum = new SeriesCollection { new LineSeries { Title = "湿度", Values = chartValuesConboxHum, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; var chartValuesMainSeisVol = new ChartValues(); var chartValuesMainSeisCur = new ChartValues(); sql = String.Format("select RecordTime,Seis1_Voltage,Seis1_Current from juncbox_monitor where StationID = {0} ORDER by id desc limit {1}", 1, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["Seis1_Voltage"]) && !Convert.IsDBNull(dataReader["Seis1_Current"])) { chartValuesMainSeisVol.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis1_Voltage"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesMainSeisCur.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis1_Current"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel1.SeriesCollectionMainSeis = new SeriesCollection { new LineSeries { Title = "电压", Values = chartValuesMainSeisVol, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, new LineSeries { Title = "电流", Values = chartValuesMainSeisCur, LineSmoothness = 0, ScalesYAt = 1, Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 165, 0)), Fill = new SolidColorBrush(Colors.Transparent) }, }; var chartValuesBackupSeisVol = new ChartValues(); var chartValuesBackupSeisCur = new ChartValues(); sql = String.Format("select RecordTime,Seis2_Voltage,Seis2_Current from juncbox_monitor where StationID = {0} ORDER by id desc limit {1}", 1, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["Seis2_Voltage"]) && !Convert.IsDBNull(dataReader["Seis2_Current"])) { chartValuesBackupSeisVol.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis2_Voltage"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesBackupSeisCur.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis2_Current"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel1.SeriesCollectionBackupSeis = new SeriesCollection { new LineSeries { Title = "电压", Values = chartValuesBackupSeisVol, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, new LineSeries { Title = "电流", Values = chartValuesBackupSeisCur, LineSmoothness = 0, ScalesYAt = 1, Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 165, 0)), Fill = new SolidColorBrush(Colors.Transparent) }, }; var chartValuesBoosterStationVol = new ChartValues(); var chartValuesBoosterStationCur = new ChartValues(); sql = String.Format("select * from boosterstation_state where StationID = {0} ORDER by id desc limit {1}", 1, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["In_Vol"]) && !Convert.IsDBNull(dataReader["In_Cur"])) { chartValuesBoosterStationVol.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Vol"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesBoosterStationCur.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Cur"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel1.SeriesCollectionBoosterStationVol = new SeriesCollection { new LineSeries { Title = "输入电压", Values = chartValuesBoosterStationVol, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; realTimeDataViewModel1.SeriesCollectionBoosterStationCur = new SeriesCollection { new LineSeries { Title = "输入电流", Values = chartValuesBoosterStationCur, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; realTimeDataViewModel1.XFormatter = val => new DateTime((long)val).ToString("MM/dd HH:mm"); realTimeDataViewModel1.YFormatterVol = val => val.ToString("F2") + " V"; realTimeDataViewModel1.YFormatterCur = val => val.ToString("F2") + " A"; realTimeDataViewModel1.YFormatterTem = val => val.ToString("F2") + " ℃"; realTimeDataViewModel1.YFormatterHum = val => val.ToString("F2") + " %"; chartValuesConboxTem = new ChartValues(); chartValuesConboxHum = new ChartValues(); sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit {1}", 2, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["Temperature"]) && !Convert.IsDBNull(dataReader["Humidity"])) { chartValuesConboxTem.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Temperature"]), DateTime = Convert.ToDateTime(dataReader["DataTime"]), }); chartValuesConboxHum.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Humidity"]), DateTime = Convert.ToDateTime(dataReader["DataTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel2.SeriesCollectionConboxTem = new SeriesCollection { new LineSeries { Title = "温度", Values = chartValuesConboxTem, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; realTimeDataViewModel2.SeriesCollectionConboxHum = new SeriesCollection { new LineSeries { Title = "湿度", Values = chartValuesConboxHum, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; chartValuesMainSeisVol = new ChartValues(); chartValuesMainSeisCur = new ChartValues(); sql = String.Format("select RecordTime,Seis1_Voltage,Seis1_Current from juncbox_monitor where StationID = {0} ORDER by id desc limit {1}", 2, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["Seis1_Voltage"]) && !Convert.IsDBNull(dataReader["Seis1_Current"])) { chartValuesMainSeisVol.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis1_Voltage"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesMainSeisCur.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis1_Current"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel2.SeriesCollectionMainSeis = new SeriesCollection { new LineSeries { Title = "电压", Values = chartValuesMainSeisVol, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, new LineSeries { Title = "电流", Values = chartValuesMainSeisCur, LineSmoothness = 0, ScalesYAt = 1, Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 165, 0)), Fill = new SolidColorBrush(Colors.Transparent) }, }; chartValuesBackupSeisVol = new ChartValues(); chartValuesBackupSeisCur = new ChartValues(); sql = String.Format("select RecordTime,Seis2_Voltage,Seis2_Current from juncbox_monitor where StationID = {0} ORDER by id desc limit {1}", 2, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["Seis2_Voltage"]) && !Convert.IsDBNull(dataReader["Seis2_Current"])) { chartValuesBackupSeisVol.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis2_Voltage"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesBackupSeisCur.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["Seis2_Current"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel2.SeriesCollectionBackupSeis = new SeriesCollection { new LineSeries { Title = "电压", Values = chartValuesBackupSeisVol, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, new LineSeries { Title = "电流", Values = chartValuesBackupSeisCur, LineSmoothness = 0, ScalesYAt = 1, Stroke = new SolidColorBrush(Color.FromArgb(255, 255, 165, 0)), Fill = new SolidColorBrush(Colors.Transparent) }, }; chartValuesBoosterStationVol = new ChartValues(); chartValuesBoosterStationCur = new ChartValues(); sql = String.Format("select * from boosterstation_state where StationID = {0} ORDER by id desc limit {1}", 2, ChartPointNum); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { if (!Convert.IsDBNull(dataReader["In_Vol"]) && !Convert.IsDBNull(dataReader["In_Cur"])) { chartValuesBoosterStationVol.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Vol"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); chartValuesBoosterStationCur.Add(new DateTimePoint { Value = Convert.ToSingle(dataReader["In_Cur"]), DateTime = Convert.ToDateTime(dataReader["RecordTime"]), }); } } dataReader.Dispose(); realTimeDataViewModel2.SeriesCollectionBoosterStationVol = new SeriesCollection { new LineSeries { Title = "输入电压", Values = chartValuesBoosterStationVol, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; realTimeDataViewModel2.SeriesCollectionBoosterStationCur = new SeriesCollection { new LineSeries { Title = "输入电流", Values = chartValuesBoosterStationCur, LineSmoothness = 0, ScalesYAt = 0, Stroke = new SolidColorBrush(Color.FromArgb(255, 43, 237, 241)), Fill = new SolidColorBrush(Colors.Transparent) }, }; realTimeDataViewModel2.XFormatter = val => new DateTime((long)val).ToString("MM/dd HH:mm"); realTimeDataViewModel2.YFormatterVol = val => val.ToString("F2") + " V"; realTimeDataViewModel2.YFormatterCur = val => val.ToString("F2") + " A"; realTimeDataViewModel2.YFormatterTem = val => val.ToString("F2") + " ℃"; realTimeDataViewModel2.YFormatterHum = val => val.ToString("F2") + " %"; #endregion #region 实时数据显示页面数据初始化 sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit 1", 1); dataReader = DBHelper.ExecuteReader(sql, 1); sqlSub = String.Format("select * from juncbox_cavity_state where StationID = {0} ORDER by id desc limit 1", 1); dataReaderSub = DBHelper.ExecuteReader(sqlSub, 1); string sqlMon = String.Format("select * from juncbox_monitor where StationID = {0} ORDER by id desc limit 1", 1); MySqlDataReader dataReaderMon = DBHelper.ExecuteReader(sqlMon, 1); //while (dataReader.Read()) //{ if (dataReaderMon.Read()) { string voltage = string.IsNullOrEmpty(dataReaderMon["Seis1_Voltage"].ToString()) ? "0.00" : dataReaderMon["Seis1_Voltage"].ToString(); string current = string.IsNullOrEmpty(dataReaderMon["Seis1_Current"].ToString()) ? "0.00" : dataReaderMon["Seis1_Current"].ToString(); realTimeDataViewModel1.BaseStationStatus[0].Value = voltage + " / " + current; voltage = string.IsNullOrEmpty(dataReaderMon["Seis2_Voltage"].ToString()) ? "0.00" : dataReaderMon["Seis2_Voltage"].ToString(); current = string.IsNullOrEmpty(dataReaderMon["Seis2_Current"].ToString()) ? "0.00" : dataReaderMon["Seis2_Current"].ToString(); realTimeDataViewModel1.BaseStationStatus[3].Value = voltage + " / " + current; realTimeDataViewModel1.DataTimeMainSeis = Convert.ToDateTime(dataReaderMon["RecordTime"]); realTimeDataViewModel1.DataTimeBackupSeis = Convert.ToDateTime(dataReaderMon["RecordTime"]); } else { realTimeDataViewModel1.BaseStationStatus[0].Value = "0.00 / 0.00"; realTimeDataViewModel1.BaseStationStatus[3].Value = "0.00 / 0.00"; realTimeDataViewModel1.DataTimeMainSeis = DateTime.Now; realTimeDataViewModel1.DataTimeBackupSeis = DateTime.Now; } if (dataReader.Read()) { realTimeDataViewModel1.BaseStationStatus[1].Value = string.IsNullOrEmpty(dataReader["Temperature"].ToString()) ? "0.00" : dataReader["Temperature"].ToString(); realTimeDataViewModel1.BaseStationStatus[4].Value = string.IsNullOrEmpty(dataReader["Humidity"].ToString()) ? "0.00" : dataReader["Humidity"].ToString(); //realTimeDataViewModel1.BaseStationStatus[4].Value = string.IsNullOrEmpty(dataReader["JBH_Attitude_x"].ToString()) ? "0.00" : dataReader["JBH_Attitude_x"].ToString(); //realTimeDataViewModel1.BaseStationStatus[5].Value = string.IsNullOrEmpty(dataReader["JBH_Attitude_y"].ToString()) ? "0.00" : dataReader["JBH_Attitude_y"].ToString(); //realTimeDataViewModel1.BaseStationStatus[6].Value = string.IsNullOrEmpty(dataReader["JBH_Attitude_z"].ToString()) ? "0.00" : dataReader["JBH_Attitude_z"].ToString(); realTimeDataViewModel1.DataTimeConboxTem = Convert.ToDateTime(dataReader["DataTime"]); realTimeDataViewModel1.DataTimeConboxHum = Convert.ToDateTime(dataReader["DataTime"]); } else { realTimeDataViewModel1.BaseStationStatus[1].Value = "0.00"; realTimeDataViewModel1.BaseStationStatus[4].Value = "0.00"; realTimeDataViewModel1.DataTimeConboxTem = DateTime.Now; realTimeDataViewModel1.DataTimeConboxHum = DateTime.Now; } if (dataReaderSub.Read()) { int leakState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Leakage"].ToString()) ? "2" : dataReaderSub["Leakage"]); if (leakState == 1) { realTimeDataViewModel1.LeakageImage = (ImageSource)Application.Current.FindResource("CycleRed"); } else if (leakState == 0) { realTimeDataViewModel1.LeakageImage = (ImageSource)Application.Current.FindResource("CycleGreen"); } else { realTimeDataViewModel1.LeakageImage = (ImageSource)Application.Current.FindResource("CycleGray"); } //int hatchState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Hatch_State"].ToString()) ? "2" : dataReaderSub["Hatch_State"]); //if (hatchState == 1) //{ // realTimeDataViewModel1.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleRed"); //} //else if (hatchState == 0) //{ // realTimeDataViewModel1.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGreen"); //} //else //{ // realTimeDataViewModel1.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGray"); //} } else { realTimeDataViewModel1.LeakageImage = (ImageSource)Application.Current.FindResource("CycleGray"); //realTimeDataViewModel1.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGray"); } //} dataReader.Dispose(); dataReaderSub.Dispose(); dataReaderMon.Dispose(); sql = String.Format("select * from boosterstation_state where StationID = {0} ORDER by id desc limit 1", 1); dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { realTimeDataViewModel1.BaseStationStatus[2].Value = string.IsNullOrEmpty(dataReader["In_Vol"].ToString()) ? "0.00" : dataReader["In_Vol"].ToString(); realTimeDataViewModel1.BaseStationStatus[5].Value = string.IsNullOrEmpty(dataReader["In_Cur"].ToString()) ? "0.00" : dataReader["In_Cur"].ToString(); realTimeDataViewModel1.DataTimeBoosterStationVol = Convert.ToDateTime(dataReader["RecordTime"]); realTimeDataViewModel1.DataTimeBoosterStationCur = Convert.ToDateTime(dataReader["RecordTime"]); } dataReader.Dispose(); sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit 1", 2); dataReader = DBHelper.ExecuteReader(sql, 1); sqlSub = String.Format("select * from juncbox_cavity_state where StationID = {0} ORDER by id desc limit 1", 2); dataReaderSub = DBHelper.ExecuteReader(sqlSub, 1); sqlMon = String.Format("select * from juncbox_monitor where StationID = {0} ORDER by id desc limit 1", 2); dataReaderMon = DBHelper.ExecuteReader(sqlMon, 1); //while (dataReader.Read()) //{ if (dataReaderMon.Read()) { string voltage = string.IsNullOrEmpty(dataReaderMon["Seis1_Voltage"].ToString()) ? "0.00" : dataReaderMon["Seis1_Voltage"].ToString(); string current = string.IsNullOrEmpty(dataReaderMon["Seis1_Current"].ToString()) ? "0.00" : dataReaderMon["Seis1_Current"].ToString(); realTimeDataViewModel2.BaseStationStatus[0].Value = voltage + " / " + current; voltage = string.IsNullOrEmpty(dataReaderMon["Seis2_Voltage"].ToString()) ? "0.00" : dataReaderMon["Seis2_Voltage"].ToString(); current = string.IsNullOrEmpty(dataReaderMon["Seis2_Current"].ToString()) ? "0.00" : dataReaderMon["Seis2_Current"].ToString(); realTimeDataViewModel2.BaseStationStatus[3].Value = voltage + " / " + current; realTimeDataViewModel2.DataTimeMainSeis = Convert.ToDateTime(dataReaderMon["RecordTime"]); realTimeDataViewModel2.DataTimeBackupSeis = Convert.ToDateTime(dataReaderMon["RecordTime"]); } else { realTimeDataViewModel2.BaseStationStatus[0].Value = "0.00 / 0.00"; realTimeDataViewModel2.BaseStationStatus[3].Value = "0.00 / 0.00"; realTimeDataViewModel2.DataTimeMainSeis = DateTime.Now; realTimeDataViewModel2.DataTimeBackupSeis = DateTime.Now; } if (dataReader.Read()) { realTimeDataViewModel2.BaseStationStatus[1].Value = string.IsNullOrEmpty(dataReader["Temperature"].ToString()) ? "0.00" : dataReader["Temperature"].ToString(); realTimeDataViewModel2.BaseStationStatus[4].Value = string.IsNullOrEmpty(dataReader["Humidity"].ToString()) ? "0.00" : dataReader["Humidity"].ToString(); //realTimeDataViewModel2.BaseStationStatus[4].Value = string.IsNullOrEmpty(dataReader["JBH_Attitude_x"].ToString()) ? "0.00" : dataReader["JBH_Attitude_x"].ToString(); //realTimeDataViewModel2.BaseStationStatus[5].Value = string.IsNullOrEmpty(dataReader["JBH_Attitude_y"].ToString()) ? "0.00" : dataReader["JBH_Attitude_y"].ToString(); //realTimeDataViewModel2.BaseStationStatus[6].Value = string.IsNullOrEmpty(dataReader["JBH_Attitude_z"].ToString()) ? "0.00" : dataReader["JBH_Attitude_z"].ToString(); realTimeDataViewModel2.DataTimeConboxTem = Convert.ToDateTime(dataReader["DataTime"]); realTimeDataViewModel2.DataTimeConboxHum = Convert.ToDateTime(dataReader["DataTime"]); } else { realTimeDataViewModel2.BaseStationStatus[1].Value = "0.00"; realTimeDataViewModel2.BaseStationStatus[4].Value = "0.00"; realTimeDataViewModel2.DataTimeConboxTem = DateTime.Now; realTimeDataViewModel2.DataTimeConboxHum = DateTime.Now; } if (dataReaderSub.Read()) { int leakState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Leakage"].ToString()) ? "2" : dataReaderSub["Leakage"]); if (leakState == 1) { realTimeDataViewModel2.LeakageImage = (ImageSource)Application.Current.FindResource("CycleRed"); } else if (leakState == 0) { realTimeDataViewModel2.LeakageImage = (ImageSource)Application.Current.FindResource("CycleGreen"); } else { realTimeDataViewModel2.LeakageImage = (ImageSource)Application.Current.FindResource("CycleGray"); } //int hatchState = Convert.ToInt32(string.IsNullOrEmpty(dataReaderSub["Hatch_State"].ToString()) ? "2" : dataReaderSub["Hatch_State"]); //if (hatchState == 1) //{ // realTimeDataViewModel2.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleRed"); //} //else if (hatchState == 0) //{ // realTimeDataViewModel2.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGreen"); //} //else //{ // realTimeDataViewModel2.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGray"); //} } else { realTimeDataViewModel2.LeakageImage = (ImageSource)Application.Current.FindResource("CycleGray"); //realTimeDataViewModel2.HatchStateImage = (ImageSource)Application.Current.FindResource("CycleGray"); } //} dataReader.Dispose(); dataReaderSub.Dispose(); dataReaderMon.Dispose(); sql = String.Format("select * from boosterstation_state where StationID = {0} ORDER by id desc limit 1", 2); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { realTimeDataViewModel2.BaseStationStatus[2].Value = string.IsNullOrEmpty(dataReader["In_Vol"].ToString()) ? "0.00" : dataReader["In_Vol"].ToString(); realTimeDataViewModel2.BaseStationStatus[5].Value = string.IsNullOrEmpty(dataReader["In_Cur"].ToString()) ? "0.00" : dataReader["In_Cur"].ToString(); realTimeDataViewModel2.DataTimeBoosterStationVol = Convert.ToDateTime(dataReader["RecordTime"]); realTimeDataViewModel2.DataTimeBoosterStationCur = Convert.ToDateTime(dataReader["RecordTime"]); } dataReader.Dispose(); #endregion #region 实时数据显示页面告警数据初始化 sql = String.Format("select * from alarm_info where StationID = {0} ORDER by id desc limit 7", 1); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { AlarmRecordModel alarmRecordModel = new AlarmRecordModel(); alarmRecordModel.Index = index++; alarmRecordModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); alarmRecordModel.ParaName = dataReader["ParaName"].ToString(); alarmRecordModel.ParaContent = dataReader["ParaContent"].ToString(); alarmRecordModel.ProcessingMethod = dataReader["ProcessingMethod"].ToString(); if (dataReader["UrgencyLevel"].ToString() == "1") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleYellow"); } else if (dataReader["UrgencyLevel"].ToString() == "2") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleOrange"); } else { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleRed"); } realTimeDataViewModel1.AlarmList.Add(alarmRecordModel); } dataReader.Dispose(); sql = String.Format("select * from alarm_info where StationID = {0} ORDER by id desc limit 7", 2); dataReader = DBHelper.ExecuteReader(sql, 1); index = 1; while (dataReader.Read()) { AlarmRecordModel alarmRecordModel = new AlarmRecordModel(); alarmRecordModel.Index = index++; alarmRecordModel.RecordTime = Convert.ToDateTime(dataReader["RecordTime"]); alarmRecordModel.ParaName = dataReader["ParaName"].ToString(); alarmRecordModel.ParaContent = dataReader["ParaContent"].ToString(); alarmRecordModel.ProcessingMethod = dataReader["ProcessingMethod"].ToString(); if (dataReader["UrgencyLevel"].ToString() == "1") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleYellow"); } else if (dataReader["UrgencyLevel"].ToString() == "2") { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleOrange"); } else { alarmRecordModel.UrgencyLevel = (ImageSource)Application.Current.FindResource("CycleRed"); } realTimeDataViewModel2.AlarmList.Add(alarmRecordModel); } dataReader.Dispose(); #endregion #region 实时数据显示页面三维模型姿态数据初始化 sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit 1", 1); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { realTimeDataViewModel1.BaseStationGesture.RollAngle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeX"].ToString()) ? "0.00" : dataReader["AttitudeX"].ToString()); realTimeDataViewModel1.BaseStationGesture.PitchAngle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeY"].ToString()) ? "0.00" : dataReader["AttitudeY"].ToString()); realTimeDataViewModel1.BaseStationGesture.HeadingAngle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeZ"].ToString()) ? "0.00" : dataReader["AttitudeZ"].ToString()); } dataReader.Dispose(); baseStationModelViewModel1.BaseStationGesture.RollAngle = realTimeDataViewModel1.BaseStationGesture.RollAngle; baseStationModelViewModel1.BaseStationGesture.PitchAngle = realTimeDataViewModel1.BaseStationGesture.PitchAngle; baseStationModelViewModel1.BaseStationGesture.HeadingAngle = realTimeDataViewModel1.BaseStationGesture.HeadingAngle; float CalibrationHG = Convert.ToSingle(Tools.GetAppSetting("CalibrationHG")); float CalibrationFY = Convert.ToSingle(Tools.GetAppSetting("CalibrationFY")); float CalibrationPH = Convert.ToSingle(Tools.GetAppSetting("CalibrationPH")); realTimeDataViewModel1.BaseStationGesture.PY_HG = realTimeDataViewModel1.BaseStationGesture.RollAngle - CalibrationHG; realTimeDataViewModel1.BaseStationGesture.PY_FY = realTimeDataViewModel1.BaseStationGesture.PitchAngle - CalibrationFY; realTimeDataViewModel1.BaseStationGesture.PY_PH = realTimeDataViewModel1.BaseStationGesture.HeadingAngle - CalibrationPH; if (Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_HG) <= 0.75) realTimeDataViewModel1.AngleBackgroundX = new SolidColorBrush(Colors.Green); else if (Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_HG) > 0.75 && Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_HG) <= 1) realTimeDataViewModel1.AngleBackgroundX = new SolidColorBrush(Colors.Yellow); else realTimeDataViewModel1.AngleBackgroundX = new SolidColorBrush(Colors.Red); if (Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_FY) <= 0.75) realTimeDataViewModel1.AngleBackgroundY = new SolidColorBrush(Colors.Green); else if (Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_FY) > 0.75 && Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_FY) <= 1) realTimeDataViewModel1.AngleBackgroundY = new SolidColorBrush(Colors.Yellow); else realTimeDataViewModel1.AngleBackgroundY = new SolidColorBrush(Colors.Red); if (Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_PH) <= 0.75) realTimeDataViewModel1.AngleBackgroundZ = new SolidColorBrush(Colors.Green); else if (Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_PH) > 0.75 && Math.Abs(realTimeDataViewModel1.BaseStationGesture.PY_PH) <= 1) realTimeDataViewModel1.AngleBackgroundZ = new SolidColorBrush(Colors.Yellow); else realTimeDataViewModel1.AngleBackgroundZ = new SolidColorBrush(Colors.Red); sql = String.Format("select * from juncbox_env where StationID = {0} ORDER by id desc limit 1", 2); dataReader = DBHelper.ExecuteReader(sql, 1); while (dataReader.Read()) { realTimeDataViewModel2.BaseStationGesture.RollAngle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeX"].ToString()) ? "0.00" : dataReader["AttitudeX"].ToString()); realTimeDataViewModel2.BaseStationGesture.PitchAngle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeY"].ToString()) ? "0.00" : dataReader["AttitudeY"].ToString()); realTimeDataViewModel2.BaseStationGesture.HeadingAngle = Convert.ToSingle(string.IsNullOrEmpty(dataReader["AttitudeZ"].ToString()) ? "0.00" : dataReader["AttitudeZ"].ToString()); } dataReader.Dispose(); baseStationModelViewModel2.BaseStationGesture.RollAngle = realTimeDataViewModel2.BaseStationGesture.RollAngle; baseStationModelViewModel2.BaseStationGesture.PitchAngle = realTimeDataViewModel2.BaseStationGesture.PitchAngle; baseStationModelViewModel2.BaseStationGesture.HeadingAngle = realTimeDataViewModel2.BaseStationGesture.HeadingAngle; realTimeDataViewModel2.BaseStationGesture.PY_HG = realTimeDataViewModel2.BaseStationGesture.RollAngle - CalibrationHG; realTimeDataViewModel2.BaseStationGesture.PY_FY = realTimeDataViewModel2.BaseStationGesture.PitchAngle - CalibrationFY; realTimeDataViewModel2.BaseStationGesture.PY_PH = realTimeDataViewModel2.BaseStationGesture.HeadingAngle - CalibrationPH; if (Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_HG) <= 0.75) realTimeDataViewModel2.AngleBackgroundX = new SolidColorBrush(Colors.Green); else if (Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_HG) > 0.75 && Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_HG) <= 1) realTimeDataViewModel2.AngleBackgroundX = new SolidColorBrush(Colors.Yellow); else realTimeDataViewModel2.AngleBackgroundX = new SolidColorBrush(Colors.Red); if (Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_FY) <= 0.75) realTimeDataViewModel2.AngleBackgroundY = new SolidColorBrush(Colors.Green); else if (Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_FY) > 0.75 && Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_FY) <= 1) realTimeDataViewModel2.AngleBackgroundY = new SolidColorBrush(Colors.Yellow); else realTimeDataViewModel2.AngleBackgroundY = new SolidColorBrush(Colors.Red); if (Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_PH) <= 0.75) realTimeDataViewModel2.AngleBackgroundZ = new SolidColorBrush(Colors.Green); else if (Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_PH) > 0.75 && Math.Abs(realTimeDataViewModel2.BaseStationGesture.PY_PH) <= 1) realTimeDataViewModel2.AngleBackgroundZ = new SolidColorBrush(Colors.Yellow); else realTimeDataViewModel2.AngleBackgroundZ = new SolidColorBrush(Colors.Red); #endregion #region 状态设置页面电源On/Off状态初始化 if(station_id==1) { ElectPowerOpenBtnIsEnabled = false; ElectPowerCloseBtnIsEnabled = false; } sql = String.Format("select RelayStatus from boosterstation_state where StationID = {0} ORDER by id desc limit 1", 1); dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader["RelayStatus"].ToString() == "1") baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff"); } dataReader.Dispose(); sql = String.Format("select RelayStatus from boosterstation_state where StationID = {0} ORDER by id desc limit 1", 2); dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader["RelayStatus"].ToString() == "1") baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff"); } dataReader.Dispose(); sql = String.Format("select * from juncbox_state where StationID = {0} ORDER by id desc limit 1", 1); dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader["JunBox_Seis1"].ToString() == "1") baseStationStateModel1.JunBox_Seis1 = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel1.JunBox_Seis1 = (ImageSource)Application.Current.FindResource("DeviceOff"); if (dataReader["JunBox_Seis2"].ToString() == "1") baseStationStateModel1.JunBox_Seis2 = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel1.JunBox_Seis2 = (ImageSource)Application.Current.FindResource("DeviceOff"); //if (dataReader["JunBox_Elect"].ToString() == "1") // baseStationStateModel1.JunBox_Elect = (ImageSource)Application.Current.FindResource("DeviceOn"); //else baseStationStateModel1.JunBox_Elect = (ImageSource)Application.Current.FindResource("NoDevice"); //if (dataReader["JunBox_ProBoard_PowCarrier_State"].ToString() == "0") // baseStationStateModel1.JunBox_ProBoard_PowCarrier_State = new SolidColorBrush(Colors.Green); //else if (dataReader["JunBox_ProBoard_PowCarrier_State"].ToString() == "1") // baseStationStateModel1.JunBox_ProBoard_PowCarrier_State = new SolidColorBrush(Colors.Red); //else // baseStationStateModel1.JunBox_ProBoard_PowCarrier_State = new SolidColorBrush(Colors.Gray); //if (dataReader["JunBox_ProBoard_OptSwitch_State"].ToString() == "0") // baseStationStateModel1.JunBox_ProBoard_OptSwitch_State = new SolidColorBrush(Colors.Green); //else if (dataReader["JunBox_ProBoard_OptSwitch_State"].ToString() == "1") // baseStationStateModel1.JunBox_ProBoard_OptSwitch_State = new SolidColorBrush(Colors.Red); //else // baseStationStateModel1.JunBox_ProBoard_OptSwitch_State = new SolidColorBrush(Colors.Gray); if (dataReader["JunBox_ProBoard_Seis1_State"].ToString() == "0") baseStationStateModel1.JunBox_ProBoard_Seis1_State = new SolidColorBrush(Colors.Green); else if (dataReader["JunBox_ProBoard_Seis1_State"].ToString() == "1") baseStationStateModel1.JunBox_ProBoard_Seis1_State = new SolidColorBrush(Colors.Red); else baseStationStateModel1.JunBox_ProBoard_Seis1_State = new SolidColorBrush(Colors.Gray); if (dataReader["JunBox_ProBoard_Seis2_State"].ToString() == "0") baseStationStateModel1.JunBox_ProBoard_Seis2_State = new SolidColorBrush(Colors.Green); else if (dataReader["JunBox_ProBoard_Seis2_State"].ToString() == "1") baseStationStateModel1.JunBox_ProBoard_Seis2_State = new SolidColorBrush(Colors.Red); else baseStationStateModel1.JunBox_ProBoard_Seis2_State = new SolidColorBrush(Colors.Gray); if (dataReader["JunBox_ProBoard_Elect_State"].ToString() == "0") baseStationStateModel1.JunBox_ProBoard_Elect_State = new SolidColorBrush(Colors.Green); else if (dataReader["JunBox_ProBoard_Elect_State"].ToString() == "1") baseStationStateModel1.JunBox_ProBoard_Elect_State = new SolidColorBrush(Colors.Red); else baseStationStateModel1.JunBox_ProBoard_Elect_State = new SolidColorBrush(Colors.Gray); //if (dataReader["Seis_Power_State"].ToString() == "0") // baseStationStateModel1.Seis_Power_State = "备"; //else if (dataReader["Seis_Power_State"].ToString() == "1") // baseStationStateModel1.Seis_Power_State = "主"; //else // baseStationStateModel1.Seis_Power_State = "/"; //if (dataReader["Seis_Power_SupplyMethod"].ToString() == "0") // baseStationStateModel1.Seis_Power_SupplyMethod = "电池"; //else if (dataReader["Seis_Power_SupplyMethod"].ToString() == "1") // baseStationStateModel1.Seis_Power_SupplyMethod = "外部"; //else // baseStationStateModel1.Seis_Power_SupplyMethod = "/"; if (dataReader["JunBox_PowCarrier"].ToString() == "1") baseStationStateModel1.JunBox_PowCarrier = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel1.JunBox_PowCarrier = (ImageSource)Application.Current.FindResource("DeviceOff"); if (dataReader["JunBox_OptSwitch"].ToString() == "1") baseStationStateModel1.JunBox_OptSwitch = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel1.JunBox_OptSwitch = (ImageSource)Application.Current.FindResource("DeviceOff"); } dataReader.Dispose(); sql = String.Format("select * from juncbox_state where StationID = {0} ORDER by id desc limit 1", 2); dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader["JunBox_Seis1"].ToString() == "1") baseStationStateModel2.JunBox_Seis1 = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel2.JunBox_Seis1 = (ImageSource)Application.Current.FindResource("DeviceOff"); if (dataReader["JunBox_Seis2"].ToString() == "1") baseStationStateModel2.JunBox_Seis2 = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel2.JunBox_Seis2 = (ImageSource)Application.Current.FindResource("DeviceOff"); if (dataReader["JunBox_Elect"].ToString() == "1") baseStationStateModel2.JunBox_Elect = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel2.JunBox_Elect = (ImageSource)Application.Current.FindResource("DeviceOff"); //if (dataReader["JunBox_ProBoard_PowCarrier_State"].ToString() == "0") // baseStationStateModel2.JunBox_ProBoard_PowCarrier_State = new SolidColorBrush(Colors.Green); //else if (dataReader["JunBox_ProBoard_PowCarrier_State"].ToString() == "1") // baseStationStateModel2.JunBox_ProBoard_PowCarrier_State = new SolidColorBrush(Colors.Red); //else // baseStationStateModel2.JunBox_ProBoard_PowCarrier_State = new SolidColorBrush(Colors.Gray); //if (dataReader["JunBox_ProBoard_OptSwitch_State"].ToString() == "0") // baseStationStateModel2.JunBox_ProBoard_OptSwitch_State = new SolidColorBrush(Colors.Green); //else if (dataReader["JunBox_ProBoard_OptSwitch_State"].ToString() == "1") // baseStationStateModel2.JunBox_ProBoard_OptSwitch_State = new SolidColorBrush(Colors.Red); //else // baseStationStateModel2.JunBox_ProBoard_OptSwitch_State = new SolidColorBrush(Colors.Gray); if (dataReader["JunBox_ProBoard_Seis1_State"].ToString() == "0") baseStationStateModel2.JunBox_ProBoard_Seis1_State = new SolidColorBrush(Colors.Green); else if (dataReader["JunBox_ProBoard_Seis1_State"].ToString() == "1") baseStationStateModel2.JunBox_ProBoard_Seis1_State = new SolidColorBrush(Colors.Red); else baseStationStateModel2.JunBox_ProBoard_Seis1_State = new SolidColorBrush(Colors.Gray); if (dataReader["JunBox_ProBoard_Seis2_State"].ToString() == "0") baseStationStateModel2.JunBox_ProBoard_Seis2_State = new SolidColorBrush(Colors.Green); else if (dataReader["JunBox_ProBoard_Seis2_State"].ToString() == "1") baseStationStateModel2.JunBox_ProBoard_Seis2_State = new SolidColorBrush(Colors.Red); else baseStationStateModel2.JunBox_ProBoard_Seis2_State = new SolidColorBrush(Colors.Gray); if (dataReader["JunBox_ProBoard_Elect_State"].ToString() == "0") baseStationStateModel2.JunBox_ProBoard_Elect_State = new SolidColorBrush(Colors.Green); else if (dataReader["JunBox_ProBoard_Elect_State"].ToString() == "1") baseStationStateModel2.JunBox_ProBoard_Elect_State = new SolidColorBrush(Colors.Red); else baseStationStateModel2.JunBox_ProBoard_Elect_State = new SolidColorBrush(Colors.Gray); //if (dataReader["Seis_Power_State"].ToString() == "0") // baseStationStateModel2.Seis_Power_State = "备"; //else if (dataReader["Seis_Power_State"].ToString() == "1") // baseStationStateModel2.Seis_Power_State = "主"; //else // baseStationStateModel2.Seis_Power_State = "/"; //if (dataReader["Seis_Power_SupplyMethod"].ToString() == "0") // baseStationStateModel2.Seis_Power_SupplyMethod = "电池"; //else if (dataReader["Seis_Power_SupplyMethod"].ToString() == "1") // baseStationStateModel2.Seis_Power_SupplyMethod = "外部"; //else // baseStationStateModel2.Seis_Power_SupplyMethod = "/"; if (dataReader["JunBox_PowCarrier"].ToString() == "1") baseStationStateModel2.JunBox_PowCarrier = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel2.JunBox_PowCarrier = (ImageSource)Application.Current.FindResource("DeviceOff"); if (dataReader["JunBox_OptSwitch"].ToString() == "1") baseStationStateModel2.JunBox_OptSwitch = (ImageSource)Application.Current.FindResource("DeviceOn"); else baseStationStateModel2.JunBox_OptSwitch = (ImageSource)Application.Current.FindResource("DeviceOff"); } dataReader.Dispose(); #endregion //默认打开第一个界面 DoNavChanged("RealTimeDataView"); } #region Communication Command #region Lower Computer /// /// SocketServer1连接 /// /// public void Socket1DoOpen(object o) { if (serverModel1.IsOpened) //服务器已开启 { Task.Run(new Action(async () => { await Task.Delay(100); serverModel1.DoStop(); serverModel1 = new ServerModel(); })); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','海底地震监测基站-接驳盒','通信连接','服务器已关闭');"; DBHelper.ExecuteNonQuery(sql, 1); } else { Task.Run(new Action(async () => { await Task.Delay(150); if (serverModel1.DoStart(SocketServerInfo1)) { //EM.Socket1ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo1.IP, SocketInfo1.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("XWJ_Service_IP1", SocketServerInfo1.IP); Tools.UpdateAppSettings("XWJ_Service_Port1", SocketServerInfo1.Port.ToString()); string record = "服务器已开启,IP:" + SocketServerInfo1.IP + ",Port:" + SocketServerInfo1.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','海底地震监测基站-接驳盒','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); } })); } } /// /// SocketServer2连接 /// /// public void Socket2DoOpen(object o) { if (serverModel2.IsOpened) //服务器已开启 { Task.Run(new Action(async () => { await Task.Delay(100); serverModel2.DoStop(); serverModel2 = new ServerModel(); })); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-接驳盒','通信连接','服务器已关闭');"; DBHelper.ExecuteNonQuery(sql, 1); } else { Task.Run(new Action(async () => { await Task.Delay(150); if (serverModel2.DoStart(SocketServerInfo2)) { //EM.Socket1ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo1.IP, SocketInfo1.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("XWJ_Service_IP2", SocketServerInfo2.IP); Tools.UpdateAppSettings("XWJ_Service_Port2", SocketServerInfo2.Port.ToString()); string record = "服务器已开启,IP:" + SocketServerInfo2.IP + ",Port:" + SocketServerInfo2.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-接驳盒','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); } })); } } #endregion #region Booster Station /// /// SocketClient1连接 /// /// public void DoSocket1Connect(object o) { if (clientModel1.IsConnected) { Task.Run(new Action(async () => { await Task.Delay(100); clientModel1.DisConnect(); })); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','升压站电控通信系统','通信连接','连接已断开');"; DBHelper.ExecuteNonQuery(sql, 1); } else { Task.Run(new Action(async () => { await Task.Delay(150); if (clientModel1.DoConnect(SocketInfo1)) { //EM.Socket1ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo1.IP, SocketInfo1.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("SYZ_Client_IP1", SocketInfo1.IP); Tools.UpdateAppSettings("SYZ_Client_Port1", SocketInfo1.Port.ToString()); string record = "连接已建立,IP:" + SocketInfo1.IP + ",Port:" + SocketInfo1.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','升压站电控通信系统','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); } })); } } /// /// SocketClient2连接 /// /// public void DoSocket2Connect(object o) { if (clientModel2.IsConnected) { Task.Run(new Action(async () => { await Task.Delay(100); clientModel2.DisConnect(); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','升压站电控通信系统','通信连接','连接已断开');"; DBHelper.ExecuteNonQuery(sql, 1); })); } else { Task.Run(new Action(async () => { await Task.Delay(200); if (clientModel2.DoConnect(SocketInfo2)) { // EM.Socket2ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo2.IP, SocketInfo2.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("SYZ_Client_IP2", SocketInfo2.IP); Tools.UpdateAppSettings("SYZ_Client_Port2", SocketInfo2.Port.ToString()); string record = "连接已建立,IP:" + SocketInfo2.IP + ",Port:" + SocketInfo2.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','升压站电控通信系统','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); } })); } } #endregion #region Seismograph public byte[] CloseByte() { List sendCloseDataSeis = new List(); List checkCloseByte = new List(); byte[] checkCloseCode = new byte[2]; //发送断开连接消息 sendCloseDataSeis.Clear(); sendCloseDataSeis.AddRange(new byte[] { 0xBF, 0x13, 0x97, 0x74 }); //SYNC sendCloseDataSeis.AddRange(new byte[] { 0xA0, 0x50 }); //CMD sendCloseDataSeis.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH //消息字 byte[] msg = new byte[2]; msg = BitConverter.GetBytes(500); msg = Tools.PadArrayWithZeros(msg, 2); sendCloseDataSeis.AddRange(msg); //DATA checkCloseByte.Clear(); checkCloseByte.AddRange(new byte[] { 0xA0, 0x50 }); //CMD checkCloseByte.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH checkCloseByte.AddRange(msg); //DATA checkCloseCode = Tools.ComputeChecksum(checkCloseByte.ToArray()); //CHK_SUM sendCloseDataSeis.AddRange(checkCloseCode); return sendCloseDataSeis.ToArray(); } #region MainSeis1ConnectMsg private void TimerMainSeis1ConnectMsgHidden_Tick(object sender, EventArgs e) { MainSeis1ConnectMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private string mainSeis1ConnectMsg; public string MainSeis1ConnectMsg { get { return mainSeis1ConnectMsg; } set { mainSeis1ConnectMsg = value; this.DoNotify(); } } private Brush mainSeis1ConnectMsgForeground; public Brush MainSeis1ConnectMsgForeground { get { return mainSeis1ConnectMsgForeground; } set { mainSeis1ConnectMsgForeground = value; this.DoNotify(); } } private Visibility mainSeis1ConnectMsgVisibility = Visibility.Visible; public Visibility MainSeis1ConnectMsgVisibility { get { return mainSeis1ConnectMsgVisibility; } set { mainSeis1ConnectMsgVisibility = value; this.DoNotify(); } } private bool isMainSeis1CertSucs = false; public bool IsMainSeis1CertSucs { get { return isMainSeis1CertSucs; } set { isMainSeis1CertSucs = value; this.DoNotify(); } } #endregion /// /// DoSocketMainSeis1Connect连接 /// /// public void DoSocketMainSeis1Connect(object o) { if (clientModelMainSeis1.IsConnected) { //发送断开连接消息 clientModelMainSeis1.SendMessage(CloseByte()); Task.Run(new Action(async () => { await Task.Delay(100); clientModelMainSeis1.DisConnect(); IsMainSeis1CertSucs = false; App.Current.Dispatcher.Invoke(() => { MainSeis1ConnectMsgVisibility = Visibility.Visible; MainSeis1ConnectMsg = "连接断开!"; MainSeis1ConnectMsgForeground = new SolidColorBrush(Colors.Red); }); })); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','海底地震监测基站-主地震仪','通信连接','连接已断开');"; DBHelper.ExecuteNonQuery(sql, 1); } else { Task.Run(new Action(async () => { await Task.Delay(150); if (clientModelMainSeis1.DoConnect(SocketInfoMainSeis1)) { App.Current.Dispatcher.Invoke(() => { MainSeis1ConnectMsgVisibility = Visibility.Visible; MainSeis1ConnectMsg = "初步连接,等待消息帧!"; MainSeis1ConnectMsgForeground = new SolidColorBrush(Colors.Green); }); IsMainSeis1CertSucs = false; //EM.Socket1ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo1.IP, SocketInfo1.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("MainSeis_Client_IP1", SocketInfoMainSeis1.IP); Tools.UpdateAppSettings("MainSeis_Client_Port1", SocketInfoMainSeis1.Port.ToString()); string record = "初步连接,等待消息帧,IP:" + SocketInfoMainSeis1.IP + ",Port:" + SocketInfoMainSeis1.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','海底地震监测基站-主地震仪','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); //切到主地震仪显示 } })); } } #region MainSeis2ConnectMsg private void TimerMainSeis2ConnectMsgHidden_Tick(object sender, EventArgs e) { MainSeis2ConnectMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private string mainSeis2ConnectMsg; public string MainSeis2ConnectMsg { get { return mainSeis2ConnectMsg; } set { mainSeis2ConnectMsg = value; this.DoNotify(); } } private Brush mainSeis2ConnectMsgForeground; public Brush MainSeis2ConnectMsgForeground { get { return mainSeis2ConnectMsgForeground; } set { mainSeis2ConnectMsgForeground = value; this.DoNotify(); } } private Visibility mainSeis2ConnectMsgVisibility = Visibility.Visible; public Visibility MainSeis2ConnectMsgVisibility { get { return mainSeis2ConnectMsgVisibility; } set { mainSeis2ConnectMsgVisibility = value; this.DoNotify(); } } private bool isMainSeis2CertSucs = false; public bool IsMainSeis2CertSucs { get { return isMainSeis2CertSucs; } set { isMainSeis2CertSucs = value; this.DoNotify(); } } #endregion /// /// DoSocketMainSeis2Connect连接 /// /// public void DoSocketMainSeis2Connect(object o) { if (clientModelMainSeis2.IsConnected) { //发送断开连接消息 clientModelMainSeis2.SendMessage(CloseByte()); Task.Run(new Action(async () => { await Task.Delay(100); clientModelMainSeis2.DisConnect(); IsMainSeis2CertSucs = false; App.Current.Dispatcher.Invoke(() => { MainSeis2ConnectMsgVisibility = Visibility.Visible; MainSeis2ConnectMsg = "连接断开!"; MainSeis2ConnectMsgForeground = new SolidColorBrush(Colors.Red); }); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-主地震仪','通信连接','连接已断开');"; DBHelper.ExecuteNonQuery(sql, 1); })); } else { Task.Run(new Action(async () => { await Task.Delay(150); if (clientModelMainSeis2.DoConnect(SocketInfoMainSeis2)) { App.Current.Dispatcher.Invoke(() => { MainSeis2ConnectMsgVisibility = Visibility.Visible; MainSeis2ConnectMsg = "初步连接,等待消息帧!"; MainSeis2ConnectMsgForeground = new SolidColorBrush(Colors.Green); }); IsMainSeis2CertSucs = false; //EM.Socket1ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo1.IP, SocketInfo1.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("MainSeis_Client_IP2", SocketInfoMainSeis2.IP); Tools.UpdateAppSettings("MainSeis_Client_Port2", SocketInfoMainSeis2.Port.ToString()); string record = "初步连接,等待消息帧,IP:" + SocketInfoMainSeis2.IP + ",Port:" + SocketInfoMainSeis2.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-主地震仪','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); } })); } } #region BackupSeis1ConnectMsg private void TimerBackupSeis1ConnectMsgHidden_Tick(object sender, EventArgs e) { BackupSeis1ConnectMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private string backupSeis1ConnectMsg; public string BackupSeis1ConnectMsg { get { return backupSeis1ConnectMsg; } set { backupSeis1ConnectMsg = value; this.DoNotify(); } } private Brush backupSeis1ConnectMsgForeground; public Brush BackupSeis1ConnectMsgForeground { get { return backupSeis1ConnectMsgForeground; } set { backupSeis1ConnectMsgForeground = value; this.DoNotify(); } } private Visibility backupSeis1ConnectMsgVisibility = Visibility.Visible; public Visibility BackupSeis1ConnectMsgVisibility { get { return backupSeis1ConnectMsgVisibility; } set { backupSeis1ConnectMsgVisibility = value; this.DoNotify(); } } private bool isBackupSeis1CertSucs = false; public bool IsBackupSeis1CertSucs { get { return isBackupSeis1CertSucs; } set { isBackupSeis1CertSucs = value; this.DoNotify(); } } #endregion /// /// DoSocketBackupSeis1Connect连接 /// /// public void DoSocketBackupSeis1Connect(object o) { if (clientModelBackupSeis1.IsConnected) { //发送断开连接消息 clientModelBackupSeis1.SendMessage(CloseByte()); Task.Run(new Action(async () => { await Task.Delay(100); clientModelBackupSeis1.DisConnect(); IsBackupSeis1CertSucs = false; App.Current.Dispatcher.Invoke(() => { BackupSeis1ConnectMsgVisibility = Visibility.Visible; BackupSeis1ConnectMsg = "连接断开!"; BackupSeis1ConnectMsgForeground = new SolidColorBrush(Colors.Red); }); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','海底地震监测基站-备地震仪','通信连接','连接已断开');"; DBHelper.ExecuteNonQuery(sql, 1); })); } else { Task.Run(new Action(async () => { await Task.Delay(200); if (clientModelBackupSeis1.DoConnect(SocketInfoBackupSeis1)) { App.Current.Dispatcher.Invoke(() => { BackupSeis1ConnectMsgVisibility = Visibility.Visible; BackupSeis1ConnectMsg = "初步连接,等待消息帧!"; BackupSeis1ConnectMsgForeground = new SolidColorBrush(Colors.Green); }); IsBackupSeis1CertSucs = false; // EM.Socket2ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo2.IP, SocketInfo2.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("BackupSeis_Client_IP1", SocketInfoBackupSeis1.IP); Tools.UpdateAppSettings("BackupSeis_Client_Port1", SocketInfoBackupSeis1.Port.ToString()); string record = "初步连接,等待消息帧,IP:" + SocketInfoBackupSeis1.IP + ",Port:" + SocketInfoBackupSeis1.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('1','{DateTime.Now}','海底地震监测基站-备地震仪','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); } })); } } #region BackupSeis2ConnectMsg private void TimerBackupSeis2ConnectMsgHidden_Tick(object sender, EventArgs e) { BackupSeis2ConnectMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private string backupSeis2ConnectMsg; public string BackupSeis2ConnectMsg { get { return backupSeis2ConnectMsg; } set { backupSeis2ConnectMsg = value; this.DoNotify(); } } private Brush backupSeis2ConnectMsgForeground; public Brush BackupSeis2ConnectMsgForeground { get { return backupSeis2ConnectMsgForeground; } set { backupSeis2ConnectMsgForeground = value; this.DoNotify(); } } private Visibility backupSeis2ConnectMsgVisibility = Visibility.Visible; public Visibility BackupSeis2ConnectMsgVisibility { get { return backupSeis2ConnectMsgVisibility; } set { backupSeis2ConnectMsgVisibility = value; this.DoNotify(); } } private bool isBackupSeis2CertSucs = false; public bool IsBackupSeis2CertSucs { get { return isBackupSeis2CertSucs; } set { isBackupSeis2CertSucs = value; this.DoNotify(); } } #endregion /// /// DoSocketBackupSeis2Connect连接 /// /// public void DoSocketBackupSeis2Connect(object o) { if (clientModelBackupSeis2.IsConnected) { //发送断开连接消息 clientModelBackupSeis2.SendMessage(CloseByte()); Task.Run(new Action(async () => { await Task.Delay(100); clientModelBackupSeis2.DisConnect(); IsBackupSeis2CertSucs = false; App.Current.Dispatcher.Invoke(() => { BackupSeis2ConnectMsgVisibility = Visibility.Visible; BackupSeis2ConnectMsg = "连接断开!"; BackupSeis2ConnectMsgForeground = new SolidColorBrush(Colors.Red); }); string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-备地震仪','通信连接','连接已断开');"; DBHelper.ExecuteNonQuery(sql, 1); })); } else { Task.Run(new Action(async () => { await Task.Delay(200); if (clientModelBackupSeis2.DoConnect(SocketInfoBackupSeis2)) { App.Current.Dispatcher.Invoke(() => { BackupSeis2ConnectMsgVisibility = Visibility.Visible; BackupSeis2ConnectMsg = "初步连接,等待消息帧!"; BackupSeis2ConnectMsgForeground = new SolidColorBrush(Colors.Green); }); IsBackupSeis2CertSucs = false; // EM.Socket2ConMessage = string.Format("IP:{0} \r\n端口号:{1}", SocketInfo2.IP, SocketInfo2.Port.ToString()); //更新下App.config中的配置信息 Tools.UpdateAppSettings("BackupSeis_Client_IP2", SocketInfoBackupSeis2.IP); Tools.UpdateAppSettings("BackupSeis_Client_Port2", SocketInfoBackupSeis2.Port.ToString()); string record = "初步连接,等待消息帧,IP:" + SocketInfoBackupSeis2.IP + ",Port:" + SocketInfoBackupSeis2.Port; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-备地震仪','通信连接','{record}');"; DBHelper.ExecuteNonQuery(sql, 1); } })); } } #endregion #region Useless //public void Com1DoConnect(object o) //{ // if (comModel1.IsConnected) // { // Task.Run(new Action(async () => // { // await Task.Delay(100); // comModel1.DisConnect(); // })); // } // else // { // Task.Run(new Action(async () => // { // await Task.Delay(100); // if (comModel1.DoConnect(SerialInfo1)) // { // //EM.ComConMessage = string.Format("串口号:{0} \r\n波特率:{1}", SerialInfo.PortName, SerialInfo.BaudRate.ToString()); // //更新下App.config中的配置信息 // //Tools.UpdateAppSettings("PortName", SerialInfo1.PortName); // //Tools.UpdateAppSettings("BaudRate", SerialInfo1.BaudRate.ToString()); // } // else // { // App.Current.Dispatcher.Invoke(() => // { // // 更新UI的代码 // HandyControl.Controls.Dialog.Show(new TextDialog("串口连接初始化失败!\n请检查设备连接状态!")); // }); // } // })); // } //} //public void Com2DoConnect(object o) //{ // if (comModel2.IsConnected) // { // Task.Run(new Action(async () => // { // await Task.Delay(100); // comModel2.DisConnect(); // })); // } // else // { // Task.Run(new Action(async () => // { // await Task.Delay(100); // if (comModel2.DoConnect(SerialInfo2)) // { // //EM.ComConMessage = string.Format("串口号:{0} \r\n波特率:{1}", SerialInfo.PortName, SerialInfo.BaudRate.ToString()); // //更新下App.config中的配置信息 // //Tools.UpdateAppSettings("PortName", SerialInfo2.PortName); // //Tools.UpdateAppSettings("BaudRate", SerialInfo2.BaudRate.ToString()); // } // else // { // App.Current.Dispatcher.Invoke(() => // { // // 更新UI的代码 // HandyControl.Controls.Dialog.Show(new TextDialog("串口连接初始化失败!\n请检查设备连接状态!")); // }); // } // })); // } //} #endregion #endregion #region Remote Control public byte[] RelayActivationRecv = new byte[8]; public byte[] RelayShutdownRecv = new byte[8]; #region BaseStation Set private void TimerBaseStationPowerOn_Tick(object sender, EventArgs e) { if (!BaseStationPowerOnIsReceived) { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "开启海底基站电源发送成功,但未接收到数据!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerBaseStationPowerOff_Tick(object sender, EventArgs e) { if (!BaseStationPowerOffIsReceived) { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "关闭海底基站电源发送成功,但未接收到数据!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerMainSeisPowerOn_Tick(object sender, EventArgs e) { if (!MainSeisPowerOnIsReceived) { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "开启主地震仪电源发送成功,但未接收到数据!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerMainSeisPowerOff_Tick(object sender, EventArgs e) { if (!MainSeisPowerOffIsReceived) { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "关闭主地震仪电源发送成功,但未接收到数据!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerBackupSeisPowerOn_Tick(object sender, EventArgs e) { if (!BackupSeisPowerOnIsReceived) { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "开启备地震仪电源发送成功,但未接收到数据!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerBackupSeisPowerOff_Tick(object sender, EventArgs e) { if (!BackupSeisPowerOffIsReceived) { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "关闭备地震仪电源发送成功,但未接收到数据!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerElectPowerOn_Tick(object sender, EventArgs e) { if (!ElectPowerOnIsReceived) { ElectMsgVisibility = Visibility.Visible; ElectMsg = "开启电磁电源发送成功,但未接收到数据!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Red); ElectPowerOpenBtnIsEnabled = true; ElectPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerElectPowerOff_Tick(object sender, EventArgs e) { if (!ElectPowerOffIsReceived) { ElectMsgVisibility = Visibility.Visible; ElectMsg = "关闭电磁电源发送成功,但未接收到数据!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Red); ElectPowerOpenBtnIsEnabled = true; ElectPowerCloseBtnIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerBaseStationMsgHidden_Tick(object sender, EventArgs e) { BaseStationMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerMainSeisMsgHidden_Tick(object sender, EventArgs e) { MainSeisMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerBackupSeisMsgHidden_Tick(object sender, EventArgs e) { BackupSeisMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerElectMsgHidden_Tick(object sender, EventArgs e) { ElectMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } //private ImageSource imageSourceBaseStation; //public ImageSource ImageSourceBaseStation //{ // get { return imageSourceBaseStation; } // set { imageSourceBaseStation = value; this.DoNotify(); } //} private string baseStationMsg; public string BaseStationMsg { get { return baseStationMsg; } set { baseStationMsg = value; this.DoNotify(); } } private Brush baseStationMsgForeground; public Brush BaseStationMsgForeground { get { return baseStationMsgForeground; } set { baseStationMsgForeground = value; this.DoNotify(); } } private Visibility baseStationMsgVisibility = Visibility.Visible; public Visibility BaseStationMsgVisibility { get { return baseStationMsgVisibility; } set { baseStationMsgVisibility = value; this.DoNotify(); } } //private ImageSource imageSourceMainSeis; //public ImageSource ImageSourceMainSeis //{ // get { return imageSourceMainSeis; } // set { imageSourceMainSeis = value; this.DoNotify(); } //} private string mainSeisMsg; public string MainSeisMsg { get { return mainSeisMsg; } set { mainSeisMsg = value; this.DoNotify(); } } private Brush mainSeisMsgForeground; public Brush MainSeisMsgForeground { get { return mainSeisMsgForeground; } set { mainSeisMsgForeground = value; this.DoNotify(); } } private Visibility mainSeisMsgVisibility = Visibility.Visible; public Visibility MainSeisMsgVisibility { get { return mainSeisMsgVisibility; } set { mainSeisMsgVisibility = value; this.DoNotify(); } } //private ImageSource imageSourceBackupSeis; //public ImageSource ImageSourceBackupSeis //{ // get { return imageSourceBackupSeis; } // set { imageSourceBackupSeis = value; this.DoNotify(); } //} private string backupSeisMsg; public string BackupSeisMsg { get { return backupSeisMsg; } set { backupSeisMsg = value; this.DoNotify(); } } private Brush backupSeisMsgForeground; public Brush BackupSeisMsgForeground { get { return backupSeisMsgForeground; } set { backupSeisMsgForeground = value; this.DoNotify(); } } private Visibility backupSeisMsgVisibility = Visibility.Visible; public Visibility BackupSeisMsgVisibility { get { return backupSeisMsgVisibility; } set { backupSeisMsgVisibility = value; this.DoNotify(); } } private string electMsg; public string ElectMsg { get { return electMsg; } set { electMsg = value; this.DoNotify(); } } private Brush electMsgForeground; public Brush ElectMsgForeground { get { return electMsgForeground; } set { electMsgForeground = value; this.DoNotify(); } } private Visibility electMsgVisibility = Visibility.Visible; public Visibility ElectMsgVisibility { get { return electMsgVisibility; } set { electMsgVisibility = value; this.DoNotify(); } } private bool baseStationPowerOnIsReceived = false; public bool BaseStationPowerOnIsReceived { get { return baseStationPowerOnIsReceived; } set { baseStationPowerOnIsReceived = value; this.DoNotify(); } } private bool baseStationPowerOffIsReceived = false; public bool BaseStationPowerOffIsReceived { get { return baseStationPowerOffIsReceived; } set { baseStationPowerOffIsReceived = value; this.DoNotify(); } } private bool mainSeisPowerOnIsReceived = false; public bool MainSeisPowerOnIsReceived { get { return mainSeisPowerOnIsReceived; } set { mainSeisPowerOnIsReceived = value; this.DoNotify(); } } private bool mainSeisPowerOffIsReceived = false; public bool MainSeisPowerOffIsReceived { get { return mainSeisPowerOffIsReceived; } set { mainSeisPowerOffIsReceived = value; this.DoNotify(); } } private bool backupSeisPowerOnIsReceived = false; public bool BackupSeisPowerOnIsReceived { get { return backupSeisPowerOnIsReceived; } set { backupSeisPowerOnIsReceived = value; this.DoNotify(); } } private bool backupSeisPowerOffIsReceived = false; public bool BackupSeisPowerOffIsReceived { get { return backupSeisPowerOffIsReceived; } set { backupSeisPowerOffIsReceived = value; this.DoNotify(); } } private bool electPowerOnIsReceived = false; public bool ElectPowerOnIsReceived { get { return electPowerOnIsReceived; } set { electPowerOnIsReceived = value; this.DoNotify(); } } private bool electPowerOffIsReceived = false; public bool ElectPowerOffIsReceived { get { return electPowerOffIsReceived; } set { electPowerOffIsReceived = value; this.DoNotify(); } } private bool baseStationPowerOpenBtnIsEnabled = true; public bool BaseStationPowerOpenBtnIsEnabled { get { return baseStationPowerOpenBtnIsEnabled; } set { baseStationPowerOpenBtnIsEnabled = value; this.DoNotify(); } } private bool baseStationPowerCloseBtnIsEnabled = true; public bool BaseStationPowerCloseBtnIsEnabled { get { return baseStationPowerCloseBtnIsEnabled; } set { baseStationPowerCloseBtnIsEnabled = value; this.DoNotify(); } } private bool mainSeisPowerOpenBtnIsEnabled = true; public bool MainSeisPowerOpenBtnIsEnabled { get { return mainSeisPowerOpenBtnIsEnabled; } set { mainSeisPowerOpenBtnIsEnabled = value; this.DoNotify(); } } private bool mainSeisPowerCloseBtnIsEnabled = true; public bool MainSeisPowerCloseBtnIsEnabled { get { return mainSeisPowerCloseBtnIsEnabled; } set { mainSeisPowerCloseBtnIsEnabled = value; this.DoNotify(); } } private bool backupSeisPowerOpenBtnIsEnabled = true; public bool BackupSeisPowerOpenBtnIsEnabled { get { return backupSeisPowerOpenBtnIsEnabled; } set { backupSeisPowerOpenBtnIsEnabled = value; this.DoNotify(); } } private bool backupSeisPowerCloseBtnIsEnabled = true; public bool BackupSeisPowerCloseBtnIsEnabled { get { return backupSeisPowerCloseBtnIsEnabled; } set { backupSeisPowerCloseBtnIsEnabled = value; this.DoNotify(); } } private bool electPowerOpenBtnIsEnabled = true; public bool ElectPowerOpenBtnIsEnabled { get { return electPowerOpenBtnIsEnabled; } set { electPowerOpenBtnIsEnabled = value; this.DoNotify(); } } private bool electPowerCloseBtnIsEnabled = true; public bool ElectPowerCloseBtnIsEnabled { get { return electPowerCloseBtnIsEnabled; } set { electPowerCloseBtnIsEnabled = value; this.DoNotify(); } } #endregion #region Seis Set private void TimerOpenSetMsgHidden_Tick(object sender, EventArgs e) { OpenSetMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerCloseSetMsgHidden_Tick(object sender, EventArgs e) { CloseSetMsgVisibility = Visibility.Hidden; // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerSeisZeroSetStart_Tick(object sender, EventArgs e) { if (!SeisZeroSetStartIsReceived) { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "请求凋零开启发送成功,但未接收到数据!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStartButtonIsEnabled = true; SeisZeroSetStopButtonIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerSeisZeroSetStop_Tick(object sender, EventArgs e) { if (!SeisZeroSetStopIsReceived) { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "请求调零停止发送成功,但未接收到数据!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStartButtonIsEnabled = true; SeisZeroSetStopButtonIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerSeisLevelSetStart_Tick(object sender, EventArgs e) { if (!SeisLevelSetStartIsReceived) { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "请求调平开启发送成功,但未接收到数据!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStopButtonIsEnabled = true; SeisLevelSetStartButtonIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private void TimerSeisLevelSetStop_Tick(object sender, EventArgs e) { if (!SeisLevelSetStopIsReceived) { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "请求调平停止发送成功,但未接收到数据!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStopButtonIsEnabled = true; SeisLevelSetStartButtonIsEnabled = true; } // 停止定时器 (sender as DispatcherTimer).Stop(); } private bool mainSeisIsChecked = true; public bool MainSeisIsChecked { get { return mainSeisIsChecked; } set { mainSeisIsChecked = value; this.DoNotify(); if (MainSeisIsChecked) //主地震仪 { string sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'MainSeisSetZero'"); MySqlDataReader dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader[0].ToString() == "Off") ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOff"); else ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOn"); } dataReader.Dispose(); sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'MainSeisSetLevel'"); dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader[0].ToString() == "Off") ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOff"); else ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOn"); } dataReader.Dispose(); } else { string sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'BackupSeisSetZero'"); MySqlDataReader dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader[0].ToString() == "Off") ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOff"); else ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOn"); } dataReader.Dispose(); sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'BackupSeisSetLevel'"); dataReader = DBHelper.ExecuteReader(sql, 1); if (dataReader.Read()) { if (dataReader[0].ToString() == "Off") ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOff"); else ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOn"); } dataReader.Dispose(); } } } private string openSetMsg; public string OpenSetMsg { get { return openSetMsg; } set { openSetMsg = value; this.DoNotify(); } } private Brush openSetMsgForeground; public Brush OpenSetMsgForeground { get { return openSetMsgForeground; } set { openSetMsgForeground = value; this.DoNotify(); } } private ImageSource imageSourceSetZero; public ImageSource ImageSourceSetZero { get { return imageSourceSetZero; } set { imageSourceSetZero = value; this.DoNotify(); } } private Visibility openSetMsgVisibility = Visibility.Visible; public Visibility OpenSetMsgVisibility { get { return openSetMsgVisibility; } set { openSetMsgVisibility = value; this.DoNotify(); } } private string closeSetMsg; public string CloseSetMsg { get { return closeSetMsg; } set { closeSetMsg = value; this.DoNotify(); } } private Brush closeSetMsgForeground; public Brush CloseSetMsgForeground { get { return closeSetMsgForeground; } set { closeSetMsgForeground = value; this.DoNotify(); } } private ImageSource imageSourceSetLevel; public ImageSource ImageSourceSetLevel { get { return imageSourceSetLevel; } set { imageSourceSetLevel = value; this.DoNotify(); } } private Visibility closeSetMsgVisibility = Visibility.Visible; public Visibility CloseSetMsgVisibility { get { return closeSetMsgVisibility; } set { closeSetMsgVisibility = value; this.DoNotify(); } } private bool seisZeroSetStartButtonIsEnabled = true; public bool SeisZeroSetStartButtonIsEnabled { get { return seisZeroSetStartButtonIsEnabled; } set { seisZeroSetStartButtonIsEnabled = value; this.DoNotify(); } } private bool seisZeroSetStopButtonIsEnabled = true; public bool SeisZeroSetStopButtonIsEnabled { get { return seisZeroSetStopButtonIsEnabled; } set { seisZeroSetStopButtonIsEnabled = value; this.DoNotify(); } } private bool seisLevelSetStartButtonIsEnabled = true; public bool SeisLevelSetStartButtonIsEnabled { get { return seisLevelSetStartButtonIsEnabled; } set { seisLevelSetStartButtonIsEnabled = value; this.DoNotify(); } } private bool seisLevelSetStopButtonIsEnabled = true; public bool SeisLevelSetStopButtonIsEnabled { get { return seisLevelSetStopButtonIsEnabled; } set { seisLevelSetStopButtonIsEnabled = value; this.DoNotify(); } } private bool seisZeroSetStartIsReceived = false; public bool SeisZeroSetStartIsReceived { get { return seisZeroSetStartIsReceived; } set { seisZeroSetStartIsReceived = value; this.DoNotify(); } } private bool seisZeroSetStopIsReceived = false; public bool SeisZeroSetStopIsReceived { get { return seisZeroSetStopIsReceived; } set { seisZeroSetStopIsReceived = value; this.DoNotify(); } } private bool seisLevelSetStartIsReceived = false; public bool SeisLevelSetStartIsReceived { get { return seisLevelSetStartIsReceived; } set { seisLevelSetStartIsReceived = value; this.DoNotify(); } } private bool seisLevelSetStopIsReceived = false; public bool SeisLevelSetStopIsReceived { get { return seisLevelSetStopIsReceived; } set { seisLevelSetStopIsReceived = value; this.DoNotify(); } } #endregion private List RemoteControl(byte SensorKind, byte SensorId, byte ActionKind, byte ActionType) { List sendData = new List(); sendData.Clear(); sendData.AddRange(new byte[] { 0xFE, 0xEF }); // 帧头(H=0xFE 0xEF) sendData.AddRange(new byte[] { 0x00, 0x09 }); //长度(L=9)(MSH MSL) sendData.Add(0x00); //地址码(ADDR=00) sendData.Add(0x03); //功能码(FUNC=03) sendData.Add(0x01); //操作功能(OPERATION = 0x01) sendData.Add(SensorKind); //传感器数据类型KIND sendData.Add(SensorId); //传感器ID sendData.Add(ActionKind); //动作类型(ACT,0-关闭;1-开启) sendData.Add(ActionType); //动作种类(0x00-电源,0x01-数据回传) byte checkCode = Tools.CheckSum(sendData.ToArray()); sendData.Add(checkCode); //校验(CS = 帧头 ...+... 批量设置) sendData.Add(0x16); //结束符(0x16) return sendData; } //各个开关 public async void Btn_Switch(object o) { string[] msg = o.ToString().Split(','); int switchNum = msg[1].Equals("True") ? 1 : 0; switch (msg[0]) { case "BaseStationPowerPicker": byte fromDeviceAddress; //从设备地址 byte functionCode; //功能码 byte[] startingRegisterAddress; //起始寄存器地址 byte[] registerNumber; //寄存器个数 byte[] registerAddress; //寄存器地址 byte[] checkCodeCRC; //校验码 List checkByte = new List(); //校验码Byte byte[] writeData; List sendBytes = new List(); //发送数据 if (msg[1].Equals("True")) //打开 { BaseStationPowerOpenBtnIsEnabled = false; BaseStationPowerCloseBtnIsEnabled = false; BaseStationPowerOnIsReceived = false; //对从设备单个寄存器置数 byte deviceAddress; if (station_id == 1) { deviceAddress = Convert.ToByte(Tools.GetAppSetting("DeviceAddress1")); fromDeviceAddress = deviceAddress; //从设备地址 } else { deviceAddress = Convert.ToByte(Tools.GetAppSetting("DeviceAddress2")); fromDeviceAddress = deviceAddress; //从设备地址 } functionCode = 0x06; //功能码 registerAddress = new byte[] { 0x01, 0x30 }; //值 0000:继电器继开 writeData = new byte[] { 0xFF, 0x00 }; //校验码计算 checkByte.Clear(); checkByte.Add(fromDeviceAddress); checkByte.Add(functionCode); checkByte.AddRange(registerAddress); checkByte.AddRange(writeData); checkCodeCRC = Tools.CRCCalcRev(checkByte.ToArray()); //发送指令 sendBytes.Clear(); sendBytes.Add(fromDeviceAddress); sendBytes.Add(functionCode); sendBytes.AddRange(registerAddress); sendBytes.AddRange(writeData); sendBytes.AddRange(checkCodeCRC); bool result = false; if (station_id == 1) { if (clientModel1.IsConnected) result = clientModel1.SendMessage(sendBytes.ToArray()); else { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "通信未连接!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; return; } RelayActivationRecv = sendBytes.ToArray(); } else if (station_id == 2) { if (clientModel2.IsConnected) result = clientModel2.SendMessage(sendBytes.ToArray()); else { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "通信未连接!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; return; } RelayActivationRecv = sendBytes.ToArray(); } if (result) { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "打开海底基站电源发送成功!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Green); timerBaseStationPowerOn.Start(); } else { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "打开海底基站电源发送失败!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','升压站电控通信系统','系统控制','{BaseStationMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } else { BaseStationPowerOpenBtnIsEnabled = false; BaseStationPowerCloseBtnIsEnabled = false; BaseStationPowerOffIsReceived = false; //对从设备单个寄存器置数 byte deviceAddress; if (station_id == 1) { deviceAddress = Convert.ToByte(Tools.GetAppSetting("DeviceAddress1")); fromDeviceAddress = deviceAddress; //从设备地址 } else { deviceAddress = Convert.ToByte(Tools.GetAppSetting("DeviceAddress2")); fromDeviceAddress = deviceAddress; //从设备地址 } functionCode = 0x06; //功能码 registerAddress = new byte[] { 0x01, 0x30 }; //值 FF00(16 进制):继电器一直闭合,需手动发命令打开 writeData = new byte[] { 0x00, 0x00 }; //校验码计算 checkByte.Clear(); checkByte.Add(fromDeviceAddress); checkByte.Add(functionCode); checkByte.AddRange(registerAddress); checkByte.AddRange(writeData); checkCodeCRC = Tools.CRCCalcRev(checkByte.ToArray()); //发送指令 sendBytes.Clear(); sendBytes.Add(fromDeviceAddress); sendBytes.Add(functionCode); sendBytes.AddRange(registerAddress); sendBytes.AddRange(writeData); sendBytes.AddRange(checkCodeCRC); bool result = false; if (station_id == 1) { if (clientModel1.IsConnected) result = clientModel1.SendMessage(sendBytes.ToArray()); else { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "通信未连接!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; return; } RelayShutdownRecv = sendBytes.ToArray(); } else if (station_id == 2) { if (clientModel2.IsConnected) result = clientModel2.SendMessage(sendBytes.ToArray()); else { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "通信未连接!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; return; } RelayShutdownRecv = sendBytes.ToArray(); } if (result) { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "关闭海底基站电源发送成功!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Green); timerBaseStationPowerOff.Start(); } else { BaseStationMsgVisibility = Visibility.Visible; BaseStationMsg = "关闭海底基站电源发送失败!"; timerBaseStationMsgHidden.Start(); BaseStationMsgForeground = new SolidColorBrush(Colors.Red); BaseStationPowerOpenBtnIsEnabled = true; BaseStationPowerCloseBtnIsEnabled = true; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','升压站电控通信系统','系统控制','{BaseStationMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; case "MainSeisPowerPicker": if (msg[1].Equals("True")) //打开 { MainSeisPowerOpenBtnIsEnabled = false; MainSeisPowerCloseBtnIsEnabled = false; MainSeisPowerOnIsReceived = false; List sendDataPower = RemoteControl(0x30, 0x08, 0x01, 0x00); bool result = false; if (station_id == 1) { if (serverModel1.server.IsConnected && serverModel1.IsOpened) { result = serverModel1.SendMessage(sendDataPower.ToArray()); } else { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "通信未连接!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; break; } } else { if (serverModel2.server.IsConnected && serverModel2.IsOpened) { result = serverModel2.SendMessage(sendDataPower.ToArray()); } else { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "通信未连接!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; break; } } if (result) { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "打开主地震仪电源发送成功!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Green); timerMainSeisPowerOn.Start(); } else { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "打开主地震仪电源发送失败!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','海底地震监测基站-接驳盒','系统控制','{MainSeisMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } else { MainSeisPowerOpenBtnIsEnabled = false; MainSeisPowerCloseBtnIsEnabled = false; MainSeisPowerOffIsReceived = false; List sendDataPower = RemoteControl(0x30, 0x08, 0x00, 0x00); bool result = false; if (station_id == 1) { if (serverModel1.server.IsConnected && serverModel1.IsOpened) { result = serverModel1.SendMessage(sendDataPower.ToArray()); } else { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "通信未连接!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; break; } } else { if (serverModel2.server.IsConnected && serverModel2.IsOpened) { result = serverModel2.SendMessage(sendDataPower.ToArray()); } else { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "通信未连接!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; break; } } if (result) { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "关闭主地震仪电源发送成功!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Green); timerMainSeisPowerOff.Start(); } else { MainSeisMsgVisibility = Visibility.Visible; MainSeisMsg = "关闭主地震仪电源发送失败!"; timerMainSeisMsgHidden.Start(); MainSeisMsgForeground = new SolidColorBrush(Colors.Red); MainSeisPowerOpenBtnIsEnabled = true; MainSeisPowerCloseBtnIsEnabled = true; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','海底地震监测基站-接驳盒','系统控制','{MainSeisMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; case "BackupSeisPowerPicker": if (msg[1].Equals("True")) //打开 { BackupSeisPowerOpenBtnIsEnabled = false; BackupSeisPowerCloseBtnIsEnabled = false; BackupSeisPowerOnIsReceived = false; List sendDataPower = RemoteControl(0x30, 0x09, 0x01, 0x00); bool result = false; if (station_id == 1) { if (serverModel1.server.IsConnected && serverModel1.IsOpened) { result = serverModel1.SendMessage(sendDataPower.ToArray()); } else { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "通信未连接!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; break; } } else { if (serverModel2.server.IsConnected && serverModel2.IsOpened) { result = serverModel2.SendMessage(sendDataPower.ToArray()); } else { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "通信未连接!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; break; } } if (result) { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "打开备地震仪电源发送成功!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Green); timerBackupSeisPowerOn.Start(); } else { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "打开备地震仪电源发送失败!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','海底地震监测基站-接驳盒','系统控制','{BackupSeisMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } else { BackupSeisPowerOpenBtnIsEnabled = false; BackupSeisPowerCloseBtnIsEnabled = false; BackupSeisPowerOffIsReceived = false; List sendDataPower = RemoteControl(0x30, 0x09, 0x00, 0x00); bool result = false; if (station_id == 1) { if (serverModel1.server.IsConnected && serverModel1.IsOpened) { result = serverModel1.SendMessage(sendDataPower.ToArray()); } else { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "通信未连接!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; break; } } else { if (serverModel2.server.IsConnected && serverModel2.IsOpened) { result = serverModel2.SendMessage(sendDataPower.ToArray()); } else { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "通信未连接!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; break; } } if (result) { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "关闭备地震仪电源发送成功!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Green); timerBackupSeisPowerOff.Start(); } else { BackupSeisMsgVisibility = Visibility.Visible; BackupSeisMsg = "关闭备地震仪电源发送失败!"; timerBackupSeisMsgHidden.Start(); BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); BackupSeisPowerOpenBtnIsEnabled = true; BackupSeisPowerCloseBtnIsEnabled = true; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','海底地震监测基站-接驳盒','系统控制','{BackupSeisMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; case "ElectPowerPicker": if (msg[1].Equals("True")) //打开 { ElectPowerOpenBtnIsEnabled = false; ElectPowerCloseBtnIsEnabled = false; ElectPowerOnIsReceived = false; List sendDataPower = RemoteControl(0x30, 0x0A, 0x01, 0x00); bool result = false; //if (station_id == 1) //{ // if (serverModel1 != null && serverModel1.IsOpened) // { // result = serverModel1.SendMessage(sendDataPower.ToArray()); // } // else // { // ElectMsgVisibility = Visibility.Visible; // ElectMsg = "通信未连接!"; // timerElectMsgHidden.Start(); // ElectMsgForeground = new SolidColorBrush(Colors.Red); // ElectPowerOpenBtnIsEnabled = false; // ElectPowerCloseBtnIsEnabled = false; // break; // } //} //else //{ if (serverModel2.server.IsConnected && serverModel2.IsOpened) { result = serverModel2.SendMessage(sendDataPower.ToArray()); } else { ElectMsgVisibility = Visibility.Visible; ElectMsg = "通信未连接!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Red); ElectPowerOpenBtnIsEnabled = true; ElectPowerCloseBtnIsEnabled = true; break; } //} if (result) { ElectMsgVisibility = Visibility.Visible; ElectMsg = "打开电磁电源发送成功!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Green); timerElectPowerOn.Start(); } else { ElectMsgVisibility = Visibility.Visible; ElectMsg = "打开电磁电源发送失败!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Red); ElectPowerOpenBtnIsEnabled = false; ElectPowerCloseBtnIsEnabled = false; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-接驳盒','系统控制','{ElectMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } else { ElectPowerOpenBtnIsEnabled = false; ElectPowerCloseBtnIsEnabled = false; ElectPowerOffIsReceived = false; List sendDataPower = RemoteControl(0x30, 0x0A, 0x00, 0x00); bool result = false; //if (station_id == 1) //{ // if (serverModel1 != null && serverModel1.IsOpened) // { // result = serverModel1.SendMessage(sendDataPower.ToArray()); // } // else // { // BackupSeisMsgVisibility = Visibility.Visible; // BackupSeisMsg = "通信未连接!"; // timerBackupSeisMsgHidden.Start(); // BackupSeisMsgForeground = new SolidColorBrush(Colors.Red); // BackupSeisPowerOpenBtnIsEnabled = false; // BackupSeisPowerCloseBtnIsEnabled = false; // break; // } //} //else //{ if (serverModel2 != null && serverModel2.IsOpened) { result = serverModel2.SendMessage(sendDataPower.ToArray()); } else { ElectMsgVisibility = Visibility.Visible; ElectMsg = "通信未连接!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Red); ElectPowerOpenBtnIsEnabled = true; ElectPowerCloseBtnIsEnabled = true; break; } //} if (result) { ElectMsgVisibility = Visibility.Visible; ElectMsg = "关闭电磁电源发送成功!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Green); timerElectPowerOff.Start(); } else { ElectMsgVisibility = Visibility.Visible; ElectMsg = "关闭电磁电源发送失败!"; timerElectMsgHidden.Start(); ElectMsgForeground = new SolidColorBrush(Colors.Red); ElectPowerOpenBtnIsEnabled = true; ElectPowerCloseBtnIsEnabled = true; } string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('2','{DateTime.Now}','海底地震监测基站-接驳盒','系统控制','{ElectMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; case "SeisZeroSetStart": //凋零 if (msg[1].Equals("True")) //打开 { SeisZeroSetStartButtonIsEnabled = false; SeisZeroSetStopButtonIsEnabled = false; SeisZeroSetStartIsReceived = false; List sendDataSeisZero = new List(); byte[] checkCodeSeisZero = new byte[2]; List checkByteSeisZero = new List(); sendDataSeisZero.Clear(); sendDataSeisZero.AddRange(new byte[] { 0xBF, 0x13, 0x97, 0x74 }); //SYNC sendDataSeisZero.AddRange(new byte[] { 0xA0, 0x50 }); //CMD sendDataSeisZero.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH //地震计号 byte[] numDZJ = new byte[2]; if (station_id == 1) { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum1"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum1"))); } else { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum2"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum2"))); } numDZJ = Tools.PadArrayWithZeros(numDZJ, 2); sendDataSeisZero.AddRange(numDZJ); //DATA checkByteSeisZero.Clear(); checkByteSeisZero.AddRange(new byte[] { 0xA0, 0x50 }); //CMD checkByteSeisZero.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH checkByteSeisZero.AddRange(numDZJ); //DATA checkCodeSeisZero = Tools.ComputeChecksum(checkByteSeisZero.ToArray()); //CHK_SUM sendDataSeisZero.AddRange(checkCodeSeisZero); bool result = false; if (station_id == 1) { if (MainSeisIsChecked) { if (clientModelMainSeis1.IsConnected && IsMainSeis1CertSucs) { result = clientModelMainSeis1.SendMessage(sendDataSeisZero.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStartButtonIsEnabled = true; SeisZeroSetStopButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis1.IsConnected && IsBackupSeis1CertSucs) { result = clientModelBackupSeis1.SendMessage(sendDataSeisZero.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStartButtonIsEnabled = true; SeisZeroSetStopButtonIsEnabled = true; break; } } } else { if (MainSeisIsChecked) { if (clientModelMainSeis2.IsConnected && IsMainSeis2CertSucs) { result = clientModelMainSeis2.SendMessage(sendDataSeisZero.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStartButtonIsEnabled = true; SeisZeroSetStopButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis2.IsConnected && IsBackupSeis2CertSucs) { result = clientModelBackupSeis2.SendMessage(sendDataSeisZero.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStartButtonIsEnabled = true; SeisZeroSetStopButtonIsEnabled = true; break; } } } if (result) { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "请求调零开启发送成功!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Green); timerSeisZeroSetStart.Start(); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "请求调零开启发送失败!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStartButtonIsEnabled = true; SeisZeroSetStopButtonIsEnabled = true; } string seisDevice = MainSeisIsChecked == true ? "海底地震监测基站-主地震仪" : "海底地震监测基站-备地震仪"; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','{seisDevice}','系统控制','{OpenSetMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; case "SeisZeroSetStop": //凋零 if (!msg[1].Equals("True")) //关闭 { SeisZeroSetStopButtonIsEnabled = false; SeisZeroSetStartButtonIsEnabled = false; SeisZeroSetStopIsReceived = false; List sendDataSeisZero = new List(); byte[] checkCodeSeisZero = new byte[2]; List checkByteSeisZero = new List(); sendDataSeisZero.Clear(); sendDataSeisZero.AddRange(new byte[] { 0xBF, 0x13, 0x97, 0x74 }); //SYNC sendDataSeisZero.AddRange(new byte[] { 0xA0, 0x51 }); //CMD sendDataSeisZero.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH //地震计号 byte[] numDZJ = new byte[2]; if (station_id == 1) { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum1"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum1"))); } else { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum2"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum2"))); } numDZJ = Tools.PadArrayWithZeros(numDZJ, 2); sendDataSeisZero.AddRange(numDZJ); //DATA checkByteSeisZero.Clear(); checkByteSeisZero.AddRange(new byte[] { 0xA0, 0x51 }); //CMD checkByteSeisZero.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH checkByteSeisZero.AddRange(numDZJ); //DATA checkCodeSeisZero = Tools.ComputeChecksum(checkByteSeisZero.ToArray()); //CHK_SUM sendDataSeisZero.AddRange(checkCodeSeisZero); bool result = false; if (station_id == 1) { if (MainSeisIsChecked) { if (clientModelMainSeis1.IsConnected && IsMainSeis1CertSucs) { result = clientModelMainSeis1.SendMessage(sendDataSeisZero.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStopButtonIsEnabled = true; SeisZeroSetStartButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis1.IsConnected && IsBackupSeis1CertSucs) { result = clientModelBackupSeis1.SendMessage(sendDataSeisZero.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStopButtonIsEnabled = true; SeisZeroSetStartButtonIsEnabled = true; break; } } } else { if (MainSeisIsChecked) { if (clientModelMainSeis2.IsConnected && IsMainSeis2CertSucs) { result = clientModelMainSeis2.SendMessage(sendDataSeisZero.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStopButtonIsEnabled = true; SeisZeroSetStartButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis2.IsConnected && IsBackupSeis2CertSucs) { result = clientModelBackupSeis2.SendMessage(sendDataSeisZero.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStopButtonIsEnabled = true; SeisZeroSetStartButtonIsEnabled = true; break; } } } if (result) { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "请求调零停止发送成功!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Green); timerSeisZeroSetStop.Start(); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "请求调零停止发送失败!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisZeroSetStopButtonIsEnabled = true; SeisZeroSetStartButtonIsEnabled = true; } string seisDevice = MainSeisIsChecked == true ? "海底地震监测基站-主地震仪" : "海底地震监测基站-备地震仪"; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','{seisDevice}','系统控制','{CloseSetMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; case "SeisLevelSetStart": //调平 if (msg[1].Equals("True")) //开启 { SeisLevelSetStartButtonIsEnabled = false; SeisLevelSetStopButtonIsEnabled = false; SeisLevelSetStartIsReceived = false; List sendDataSeisLevel = new List(); byte[] checkCodeSeisLevel = new byte[2]; List checkByteSeisLevel = new List(); sendDataSeisLevel.Clear(); sendDataSeisLevel.AddRange(new byte[] { 0xBF, 0x13, 0x97, 0x74 }); //SYNC sendDataSeisLevel.AddRange(new byte[] { 0xA0, 0x90 }); //CMD sendDataSeisLevel.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH //地震计号 byte[] numDZJ = new byte[2]; if (station_id == 1) { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum1"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum1"))); } else { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum2"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum2"))); } numDZJ = Tools.PadArrayWithZeros(numDZJ, 2); sendDataSeisLevel.AddRange(numDZJ); //DATA checkByteSeisLevel.Clear(); checkByteSeisLevel.AddRange(new byte[] { 0xA0, 0x90 }); //CMD checkByteSeisLevel.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH checkByteSeisLevel.AddRange(numDZJ); //DATA checkCodeSeisLevel = Tools.ComputeChecksum(checkByteSeisLevel.ToArray()); //CHK_SUM sendDataSeisLevel.AddRange(checkCodeSeisLevel); bool result = false; if (station_id == 1) { if (MainSeisIsChecked) { if (clientModelMainSeis1.IsConnected && IsMainSeis1CertSucs) { result = clientModelMainSeis1.SendMessage(sendDataSeisLevel.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStartButtonIsEnabled = true; SeisLevelSetStopButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis1.IsConnected && IsBackupSeis1CertSucs) { result = clientModelBackupSeis1.SendMessage(sendDataSeisLevel.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStartButtonIsEnabled = true; SeisLevelSetStopButtonIsEnabled = true; break; } } } else { if (MainSeisIsChecked) { if (clientModelMainSeis2.IsConnected && IsMainSeis2CertSucs) { result = clientModelMainSeis2.SendMessage(sendDataSeisLevel.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStartButtonIsEnabled = true; SeisLevelSetStopButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis2.IsConnected && IsBackupSeis2CertSucs) { result = clientModelBackupSeis2.SendMessage(sendDataSeisLevel.ToArray()); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "通信未连接或未认证!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStartButtonIsEnabled = true; SeisLevelSetStopButtonIsEnabled = true; break; } } } if (result) { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "请求调平开启发送成功!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Green); timerSeisLevelSetStart.Start(); } else { OpenSetMsgVisibility = Visibility.Visible; OpenSetMsg = "请求调平开启发送失败!"; timerOpenSetMsgHidden.Start(); OpenSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStartButtonIsEnabled = true; SeisLevelSetStopButtonIsEnabled = true; } string seisDevice = MainSeisIsChecked == true ? "海底地震监测基站-主地震仪" : "海底地震监测基站-备地震仪"; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','{seisDevice}','系统控制','{OpenSetMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; case "SeisLevelSetStop": //调平 if (!msg[1].Equals("True")) //关闭 { SeisLevelSetStopButtonIsEnabled = false; SeisLevelSetStartButtonIsEnabled = false; SeisLevelSetStopIsReceived = false; List sendDataSeisLevel = new List(); byte[] checkCodeSeisLevel = new byte[2]; List checkByteSeisLevel = new List(); sendDataSeisLevel.Clear(); sendDataSeisLevel.AddRange(new byte[] { 0xBF, 0x13, 0x97, 0x74 }); //SYNC sendDataSeisLevel.AddRange(new byte[] { 0xA0, 0x91 }); //CMD sendDataSeisLevel.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH //地震计号 byte[] numDZJ = new byte[2]; if (station_id == 1) { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum1"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum1"))); } else { if (MainSeisIsChecked) numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("MainSeisNum2"))); else numDZJ = BitConverter.GetBytes(short.Parse(Tools.GetAppSetting("BackupSeisNum2"))); } numDZJ = Tools.PadArrayWithZeros(numDZJ, 2); sendDataSeisLevel.AddRange(numDZJ); //DATA checkByteSeisLevel.Clear(); checkByteSeisLevel.AddRange(new byte[] { 0xA0, 0x91 }); //CMD checkByteSeisLevel.AddRange(new byte[] { 0x00, 0x04 }); //LENGTH checkByteSeisLevel.AddRange(numDZJ); //DATA checkCodeSeisLevel = Tools.ComputeChecksum(checkByteSeisLevel.ToArray()); //CHK_SUM sendDataSeisLevel.AddRange(checkCodeSeisLevel); bool result = false; if (station_id == 1) { if (MainSeisIsChecked) { if (clientModelMainSeis1.IsConnected && IsMainSeis1CertSucs) { result = clientModelMainSeis1.SendMessage(sendDataSeisLevel.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStopButtonIsEnabled = true; SeisLevelSetStartButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis1.IsConnected && IsBackupSeis1CertSucs) { result = clientModelBackupSeis1.SendMessage(sendDataSeisLevel.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStopButtonIsEnabled = true; SeisLevelSetStartButtonIsEnabled = true; break; } } } else { if (MainSeisIsChecked) { if (clientModelMainSeis2.IsConnected && IsMainSeis2CertSucs) { result = clientModelMainSeis2.SendMessage(sendDataSeisLevel.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStopButtonIsEnabled = true; SeisLevelSetStartButtonIsEnabled = true; break; } } else { if (clientModelBackupSeis2.IsConnected && IsBackupSeis2CertSucs) { result = clientModelBackupSeis2.SendMessage(sendDataSeisLevel.ToArray()); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "通信未连接或未认证!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStopButtonIsEnabled = true; SeisLevelSetStartButtonIsEnabled = true; break; } } } if (result) { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "请求调平停止发送成功!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Green); timerSeisLevelSetStop.Start(); } else { CloseSetMsgVisibility = Visibility.Visible; CloseSetMsg = "请求调平停止发送失败!"; timerCloseSetMsgHidden.Start(); CloseSetMsgForeground = new SolidColorBrush(Colors.Red); SeisLevelSetStopButtonIsEnabled = true; SeisLevelSetStartButtonIsEnabled = true; } string seisDevice = MainSeisIsChecked == true ? "海底地震监测基站-主地震仪" : "海底地震监测基站-备地震仪"; string sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{station_id}','{DateTime.Now}','{seisDevice}','系统控制','{CloseSetMsg}');"; DBHelper.ExecuteNonQuery(sql, 1); } break; default: break; } } #endregion #region Page Switching public void DoNavChanged(object obj) { if (obj.ToString() == "1" || obj.ToString() == "2") //说明是站点切换按钮 { if (station_id == Convert.ToInt32(obj)) //如果切换的界面和之前一样 那就不切换 return; station_id = Convert.ToInt32(obj); } else if (obj.ToString() == "") { } else { if (Title_Name == obj.ToString()) return; Title_Name = obj.ToString(); } //切换页面之前清理一下内存 Tools.ClearMemory(this); Type type = Type.GetType("JiangsuEarthquake.Views." + Title_Name); ConstructorInfo cti = type.GetConstructor(System.Type.EmptyTypes); FrameworkElement page = (FrameworkElement)cti.Invoke(null); if (station_id == 1) { switch (Title_Name) { case "RealTimeDataView": page.DataContext = realTimeDataViewModel1; break; case "SystemEnvironDataView": systemEnvironDataViewModel1.RefreshFile(obj); page.DataContext = systemEnvironDataViewModel1; break; case "SystemMonitorDataView": page.DataContext = systemMonitorDataViewModel1; break; case "BoosterStationStateDataView": page.DataContext = boosterStationStateDataViewModel1; break; case "SeismometerStateDataView": MainViewModel.seismometerStateDataViewModel1.MainSeisIsChecked = true; page.DataContext = seismometerStateDataViewModel1; break; case "SeismometerParameterView": MainViewModel.seismometerParameterViewModel1.BackupSeisIsChecked = false; page.DataContext = seismometerParameterViewModel1; break; case "SystemControlView": MainSeisIsChecked = true; baseStationStateModel1.JunBox_Elect = (ImageSource)Application.Current.FindResource("NoDevice"); ElectPowerOpenBtnIsEnabled = false; ElectPowerCloseBtnIsEnabled = false; #region 从数据库中读取站点一海底基站、主备地震仪的电源开关和功能启停状态,并显示到页面 //string sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'BaseStationPower'"); //MySqlDataReader dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceBaseStation = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceBaseStation = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'MainSeisPower'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceMainSeis = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceMainSeis = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'BackupSeisPower'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'BackupSeisPower'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'MainSeisSetZero'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 1 and SwitchName = 'MainSeisSetLevel'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); #endregion //SS = switchStateModel1; //EQPS = seismometerParameterViewModel1.EarthQuakeParaSet; //EQSM = earthquakeSensorModel1; BSSM = baseStationStateModel1; break; case "LogRecordView": page.DataContext = logRecordViewModel1; break; case "AlarmRecordView": page.DataContext = alarmRecordViewModel1; break; default: break; } } else if (station_id == 2) { switch (Title_Name) { case "RealTimeDataView": page.DataContext = realTimeDataViewModel2; break; case "SystemEnvironDataView": page.DataContext = systemEnvironDataViewModel2; break; case "SystemMonitorDataView": page.DataContext = systemMonitorDataViewModel2; break; case "BoosterStationStateDataView": page.DataContext = boosterStationStateDataViewModel2; break; case "SeismometerStateDataView": MainViewModel.seismometerStateDataViewModel2.MainSeisIsChecked = true; page.DataContext = seismometerStateDataViewModel2; break; case "SeismometerParameterView": MainViewModel.seismometerParameterViewModel1.BackupSeisIsChecked = false; page.DataContext = seismometerParameterViewModel2; break; case "SystemControlView": MainSeisIsChecked = true; ElectPowerOpenBtnIsEnabled = true; ElectPowerCloseBtnIsEnabled = true; #region 从数据库中读取站点二海底基站、主备地震仪的电源开关和功能启停状态,并显示到页面 //string sql = String.Format("select SwitchState from switch_info where StationID = 2 and SwitchName = 'BaseStationPower'"); //MySqlDataReader dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceBaseStation = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceBaseStation = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 2 and SwitchName = 'MainSeisPower'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceMainSeis = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceMainSeis = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 2 and SwitchName = 'BackupSeisPower'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 2 and SwitchName = 'BackupSeisPower'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceBackupSeis = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 2 and SwitchName = 'MainSeisSetZero'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceSetZero = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); //sql = String.Format("select SwitchState from switch_info where StationID = 2 and SwitchName = 'MainSeisSetLevel'"); //dataReader = DBHelper.ExecuteReader(sql, 1); //if (dataReader.Read()) //{ // if (dataReader[0].ToString() == "Off") // ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOff"); // else // ImageSourceSetLevel = (ImageSource)Application.Current.FindResource("DeviceOn"); //} //dataReader.Dispose(); #endregion //SS = switchStateModel2; //EQPS = seismometerParameterViewModel2.EarthQuakeParaSet; //EQSM = earthquakeSensorModel2; BSSM = baseStationStateModel2; break; case "LogRecordView": page.DataContext = logRecordViewModel2; break; case "AlarmRecordView": page.DataContext = alarmRecordViewModel2; break; default: break; } } this.PageContent = page; } #endregion } }