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
}
}