20240301_JSEQ_upperpc/JiangsuEarthquake_test/JiangsuEarthquake/ViewModels/MainViewModel.cs
XuMin 748090f317 修改部分:
1 地震仪告警记录中故障次数隐藏;电力载波机和光电交换机的供电状态隐藏;
2 除漏水和保护板事件的数据按照浮点数解析,别的按照整数解析;
3 解决TCP Server和Client存在的问题,包括无法监测到客户端连接,无法监测到服务端断开等问题;
2024-08-13 14:35:33 +08:00

4894 lines
249 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
/// <summary>
/// 刷新下控制域的DataContext
/// </summary>
//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;
/// <summary>
/// 按钮是否可见
/// </summary>
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<object>(DoNavChanged);
this.NavChangedCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.Switch = new CommandBase();
this.Switch.DoExcute = new Action<object>(Btn_Switch);
this.Switch.DoCanExcute = new Func<object, bool>((o) => true);
this.Socket1DoOpenCommand = new CommandBase();
this.Socket1DoOpenCommand.DoExcute = new Action<object>(Socket1DoOpen);
this.Socket1DoOpenCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.Socket2DoOpenCommand = new CommandBase();
this.Socket2DoOpenCommand.DoExcute = new Action<object>(Socket2DoOpen);
this.Socket2DoOpenCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.Socket1DoConnectCommand = new CommandBase();
this.Socket1DoConnectCommand.DoExcute = new Action<object>(DoSocket1Connect);
this.Socket1DoConnectCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.Socket2DoConnectCommand = new CommandBase();
this.Socket2DoConnectCommand.DoExcute = new Action<object>(DoSocket2Connect);
this.Socket2DoConnectCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.SocketMainSeis1DoConnectCommand = new CommandBase();
this.SocketMainSeis1DoConnectCommand.DoExcute = new Action<object>(DoSocketMainSeis1Connect);
this.SocketMainSeis1DoConnectCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.SocketMainSeis2DoConnectCommand = new CommandBase();
this.SocketMainSeis2DoConnectCommand.DoExcute = new Action<object>(DoSocketMainSeis2Connect);
this.SocketMainSeis2DoConnectCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.SocketBackupSeis1DoConnectCommand = new CommandBase();
this.SocketBackupSeis1DoConnectCommand.DoExcute = new Action<object>(DoSocketBackupSeis1Connect);
this.SocketBackupSeis1DoConnectCommand.DoCanExcute = new Func<object, bool>((o) => true);
this.SocketBackupSeis2DoConnectCommand = new CommandBase();
this.SocketBackupSeis2DoConnectCommand.DoExcute = new Action<object>(DoSocketBackupSeis2Connect);
this.SocketBackupSeis2DoConnectCommand.DoCanExcute = new Func<object, bool>((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<DateTimePoint>();
var chartValuesTeam2 = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
var chartValuesTeam4 = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
var chartValuesConboxHum = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
var chartValuesMainSeisCur = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
var chartValuesBackupSeisCur = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
var chartValuesBoosterStationCur = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
chartValuesConboxHum = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
chartValuesMainSeisCur = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
chartValuesBackupSeisCur = new ChartValues<DateTimePoint>();
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<DateTimePoint>();
chartValuesBoosterStationCur = new ChartValues<DateTimePoint>();
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
/// <summary>
/// SocketServer1连接
/// </summary>
/// <param name="o"></param>
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);
}
}));
}
}
/// <summary>
/// SocketServer2连接
/// </summary>
/// <param name="o"></param>
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
/// <summary>
/// SocketClient1连接
/// </summary>
/// <param name="o"></param>
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);
}
}));
}
}
/// <summary>
/// SocketClient2连接
/// </summary>
/// <param name="o"></param>
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<byte> sendCloseDataSeis = new List<byte>();
List<byte> checkCloseByte = new List<byte>();
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
/// <summary>
/// DoSocketMainSeis1Connect连接
/// </summary>
/// <param name="o"></param>
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
/// <summary>
/// DoSocketMainSeis2Connect连接
/// </summary>
/// <param name="o"></param>
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
/// <summary>
/// DoSocketBackupSeis1Connect连接
/// </summary>
/// <param name="o"></param>
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
/// <summary>
/// DoSocketBackupSeis2Connect连接
/// </summary>
/// <param name="o"></param>
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<byte> RemoteControl(byte SensorKind, byte SensorId, byte ActionKind, byte ActionType)
{
List<byte> sendData = new List<byte>();
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<byte> checkByte = new List<byte>(); //校验码Byte
byte[] writeData;
List<byte> sendBytes = new List<byte>(); //发送数据
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<byte> 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<byte> 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<byte> 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<byte> 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<byte> 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<byte> 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<byte> sendDataSeisZero = new List<byte>();
byte[] checkCodeSeisZero = new byte[2];
List<byte> checkByteSeisZero = new List<byte>();
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<byte> sendDataSeisZero = new List<byte>();
byte[] checkCodeSeisZero = new byte[2];
List<byte> checkByteSeisZero = new List<byte>();
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<byte> sendDataSeisLevel = new List<byte>();
byte[] checkCodeSeisLevel = new byte[2];
List<byte> checkByteSeisLevel = new List<byte>();
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<byte> sendDataSeisLevel = new List<byte>();
byte[] checkCodeSeisLevel = new byte[2];
List<byte> checkByteSeisLevel = new List<byte>();
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
}
}