20240801_FJEQ_upperpc/FujianEarthquake_seabed/FujianEarthquake/Models/ShoreBaseStationModel.cs
XuMin 90a2b5bf84 1 编写Socket通信部分代码;
2 研究上下位机通信协议,开始编写协议解析代码;
2024-08-28 18:25:35 +08:00

557 lines
33 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 FujianEarthquake.Common;
using FujianEarthquake.DataAccess;
using FujianEarthquake.ViewModels;
using FujianEarthquake.Views.UserControls;
using LiveCharts.Defaults;
using LiveCharts.Wpf;
using LiveCharts;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using Application = System.Windows.Application;
using MySql.Data.MySqlClient;
using Color = System.Windows.Media.Color;
using System.Reflection.Metadata;
namespace FujianEarthquake.Models
{
public class ShoreBaseStationModel
{
private byte fromDeviceAddress { get; set; } //从设备地址
private byte functionCode { get; set; } //功能码
private byte[] startingRegisterAddress { get; set; } = new byte[2]; //起始寄存器地址
private byte[] registerNumber { get; set; } = new byte[2]; //寄存器个数
private byte[] checkCodeCRC { get; set; } = new byte[2]; //校验码
private List<byte> checkByte { get; set; } = new List<byte>(); //校验码Byte
private byte dataAreaBytes { get; set; } //数据区字节数
private List<byte> dataArea { get; set; } = new List<byte>(); //数据区
private float voltage { get; set; }
private float current { get; set; }
private float power { get; set; }
private float posEleDegree { get; set; }
private float revEleDegree { get; set; }
private float uVoltage { get; set; }
private float uCurrent { get; set; }
private int relayStatus { get; set; }
private float highResVoltage { get; set; }
private float highResCurrent { get; set; }
private float forAmpereHour { get; set; }
private float revAmpereHour { get; set; }
int ChartPointNum = 15;
public void ParsingData(List<byte> byteList, int id)
{
if (byteList.Count == 0)
return;
//原始数据存储
string sql = $"insert into boosterstation_state_originaldata(StationID,RecordTime,OriginalData) values('{id}','{DateTime.Now}','{BitConverter.ToString(byteList.ToArray())}');";
DBHelper.ExecuteNonQuery(sql, 1);
checkByte.Clear();
//CRC校验
for (int i = 0; i < byteList.Count - 2; i++)
checkByte.Add(byteList[i]);
checkCodeCRC = Tools.CRCCalcRev(checkByte.ToArray());
//CRC校验失败
if (!Tools.CompareByte(checkCodeCRC, new byte[2] { byteList[byteList.Count - 2], byteList[byteList.Count - 1] }))
{
string content = "升压站电控通信系统数据CRC校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
return;
}
if (byteList[1] == 0x03) //查询从设备寄存器内容
{
//目前为读取寄存器 0000H-000FH即所有数据
//长度校验
dataAreaBytes = byteList[2];
if (dataAreaBytes + 5 != byteList.Count)
{
string content = "升压站电控通信系统状态数据长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
return;
}
DateTime recordTime = DateTime.Now;
try
{
//获取电压电流的量程;
int VoltageRange = int.Parse(Tools.GetAppSetting("SYZVoltageRange"));
int CurrentRange = int.Parse(Tools.GetAppSetting("SYZCurrentRange"));
voltage = BitConverter.ToInt16(new byte[2] { byteList[4], byteList[3] }) / 10000f * VoltageRange;
current = BitConverter.ToInt16(new byte[2] { byteList[6], byteList[5] }) / 10000f * CurrentRange;
//power = voltage * current;
power = BitConverter.ToInt16(new byte[2] { byteList[8], byteList[7] }) / 10000f * VoltageRange * CurrentRange;
posEleDegree = BitConverter.ToUInt32(new byte[4] { byteList[12], byteList[11], byteList[10], byteList[9] }) * VoltageRange * CurrentRange / (1000 * 3600);
revEleDegree = BitConverter.ToUInt32(new byte[4] { byteList[16], byteList[15], byteList[14], byteList[13] }) * VoltageRange * CurrentRange / (1000 * 3600);
uVoltage = BitConverter.ToUInt16(new byte[2] { byteList[18], byteList[17] }) / 10000f * VoltageRange;
uCurrent = BitConverter.ToUInt16(new byte[2] { byteList[20], byteList[19] }) / 10000f * VoltageRange;
relayStatus = byteList[21];
//highResVoltage = BitConverter.ToInt16(new byte[2] { byteList[23], byteList[22] }) / 50000f * VoltageRange;
//highResCurrent = BitConverter.ToInt16(new byte[2] { byteList[25], byteList[24] }) / 50000f * CurrentRange;
//forAmpereHour = BitConverter.ToUInt32(new byte[4] { byteList[29], byteList[28], byteList[27], byteList[26] }) * CurrentRange / 3600;
//revAmpereHour = BitConverter.ToUInt32(new byte[4] { byteList[33], byteList[32], byteList[31], byteList[30] }) * CurrentRange / 3600;
recordTime = DateTime.Now;
sql = $"insert into boosterstation_state(StationID,RecordTime,In_Vol,In_Cur,Power,PosEleDegree," +
$"RevEleDegree,uVoltage,uCurrent,RelayStatus,HighResVoltage,HighResCurrent,ForAmpereHour," +
$"RevAmpereHour) values('{id}','{recordTime}','{voltage}','{current}','{power}','{posEleDegree}'," +
$"'{revEleDegree}','{uVoltage}','{uCurrent}','{relayStatus}','{highResVoltage}'," +
$"'{highResCurrent}','{forAmpereHour}','{revAmpereHour}');";
DBHelper.ExecuteNonQuery(sql, 1);
//异常数据存储
if (voltage < DataLimited.VolCurCollectorVoltageMin || voltage > DataLimited.VolCurCollectorVoltageMax || current < DataLimited.VolCurCollectorCurrentMin || current > DataLimited.VolCurCollectorCurrentMax)
{
sql = $"insert into boosterstation_state_abnormaldata(StationID,RecordTime,In_Vol,In_Cur,Power,PosEleDegree," +
$"RevEleDegree,uVoltage,uCurrent,RelayStatus,HighResVoltage,HighResCurrent,ForAmpereHour," +
$"RevAmpereHour) values('{id}','{recordTime}','{voltage}','{current}','{power}','{posEleDegree}'," +
$"'{revEleDegree}','{uVoltage}','{uCurrent}','{relayStatus}','{highResVoltage}'," +
$"'{highResCurrent}','{forAmpereHour}','{revAmpereHour}');";
DBHelper.ExecuteNonQuery(sql, 1);
}
sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{id}','{DateTime.Now}','升压站电控通信系统','数据请求','请求升压站状态数据成功');";
DBHelper.ExecuteNonQuery(sql, 1);
}
catch (Exception ex)
{
string content = "升压站电控通信系统状态数据解析失败," + ex.Message;
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据解析','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
}
App.Current.Dispatcher.Invoke(() =>
{
if (id == 1)
{
MainViewModel.boosterStationStateDataViewModel1.AskDataBtnIsReceived = true;
MainViewModel.boosterStationStateDataViewModel1.AskDataBtnIsEnabled = true;
MainViewModel.boosterStationStateDataViewModel1.timerAskData.Stop();
MainViewModel.boosterStationStateDataViewModel1.AskDataMsgVisibility = Visibility.Visible;
MainViewModel.boosterStationStateDataViewModel1.AskDataMsg = "请求升压站状态数据成功!";
MainViewModel.boosterStationStateDataViewModel1.timerAskDataMsgCollapse.Start();
MainViewModel.boosterStationStateDataViewModel1.AskDataMsgForeground = new SolidColorBrush(Colors.Green);
if (relayStatus == 1)
MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn");
else
MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff");
MainViewModel.realTimeDataViewModel1.BaseStationStatus[2].Value = voltage.ToString();
MainViewModel.realTimeDataViewModel1.BaseStationStatus[5].Value = current.ToString();
MainViewModel.realTimeDataViewModel1.DataTimeBoosterStationVol = recordTime;
MainViewModel.realTimeDataViewModel1.DataTimeBoosterStationCur = recordTime;
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);
MySqlDataReader 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();
MainViewModel.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)
},
};
MainViewModel.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)
},
};
}
else
{
MainViewModel.boosterStationStateDataViewModel2.AskDataBtnIsReceived = true;
MainViewModel.boosterStationStateDataViewModel2.AskDataBtnIsEnabled = true;
MainViewModel.boosterStationStateDataViewModel2.timerAskData.Stop();
MainViewModel.boosterStationStateDataViewModel2.AskDataMsgVisibility = Visibility.Visible;
MainViewModel.boosterStationStateDataViewModel2.AskDataMsg = "请求升压站状态数据成功!";
MainViewModel.boosterStationStateDataViewModel2.timerAskDataMsgCollapse.Start();
MainViewModel.boosterStationStateDataViewModel2.AskDataMsgForeground = new SolidColorBrush(Colors.Green);
if (relayStatus == 1)
MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn");
else
MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff");
MainViewModel.realTimeDataViewModel2.BaseStationStatus[2].Value = voltage.ToString();
MainViewModel.realTimeDataViewModel2.BaseStationStatus[5].Value = current.ToString();
MainViewModel.realTimeDataViewModel2.DataTimeBoosterStationVol = recordTime;
MainViewModel.realTimeDataViewModel2.DataTimeBoosterStationCur = recordTime;
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}", 2, ChartPointNum);
MySqlDataReader 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();
MainViewModel.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)
},
};
MainViewModel.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)
},
};
}
});
}
else if (byteList[1] == 0x06) //对从设备单个寄存器置数
{
//长度校验
if (byteList.Count != 8)
{
string content = "升压站电控通信系统对从设备单个寄存器置数回复长度校验失败";
sql = $"insert into alarm_run_info(StationID,RecordTime,ParaName,ParaContent) values('{id}','{DateTime.Now}','升压站电控通信系统数据校验','{content}');";
DBHelper.ExecuteNonQuery(sql, 1);
return;
}
//需要判断发送内容和接收内容是否相同,相同则设置成功
//根据寄存器地址判断接收的到信息是对什么进行设置的
if (byteList[2] == 0x01 && byteList[3] == 0x2C) //继电器报警参数
{
if (id == 1)
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel1.AlarmParaRecv))
{
MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived1 = true;
}
}
else
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel2.AlarmParaRecv))
{
MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived1 = true;
}
}
}
else if (byteList[2] == 0x01 && byteList[3] == 0x2D) //继电器报警阀值 1
{
//下限报警、上限报警
if (id == 1)
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel1.AlarmThresholdRecv))
{
MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived3 = true;
//若均为true则说明报警设置成功
if (MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived1 && MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived2 && MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived3)
{
App.Current.Dispatcher.Invoke(() =>
{
MainViewModel.boosterStationStateDataViewModel1.AlarmSetButtonIsEnabled = true;
MainViewModel.boosterStationStateDataViewModel1.timerAlarmSet.Stop();
MainViewModel.boosterStationStateDataViewModel1.AlarmSetMessage = "报警设置成功!";
MainViewModel.boosterStationStateDataViewModel2.timerAlarmSetMsgCollapse.Start();
MainViewModel.boosterStationStateDataViewModel1.AlarmSetMessageForeground = new SolidColorBrush(Colors.Green);
});
}
}
}
else
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel2.AlarmThresholdRecv))
{
MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived3 = true;
//若均为true则说明报警设置成功
if (MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived1 && MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived2 && MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived3)
{
App.Current.Dispatcher.Invoke(() =>
{
MainViewModel.boosterStationStateDataViewModel2.AlarmSetButtonIsEnabled = true;
MainViewModel.boosterStationStateDataViewModel2.timerAlarmSet.Stop();
MainViewModel.boosterStationStateDataViewModel2.AlarmSetMessage = "报警设置成功!";
MainViewModel.boosterStationStateDataViewModel2.timerAlarmSetMsgCollapse.Start();
MainViewModel.boosterStationStateDataViewModel2.AlarmSetMessageForeground = new SolidColorBrush(Colors.Green);
});
}
}
}
}
else if (byteList[2] == 0x01 && byteList[3] == 0x2E) //继电器报警阀值 2
{
}
else if (byteList[2] == 0x01 && byteList[3] == 0x2F) //继电器报警功能
{
if (id == 1)
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel1.AlarmFuncRecv))
{
MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived2 = true;
}
}
else
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel2.AlarmFuncRecv))
{
MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived2 = true;
}
}
}
else if (byteList[2] == 0x01 && byteList[3] == 0x30) //继电器输出
{
string record = "";
//if (id == 1)
//{
if (Tools.CompareByte(byteList.ToArray(), MainWindow.mainViewModel.RelayActivationRecv))
{
App.Current.Dispatcher.Invoke(() =>
{
// 更新UI的代码
MainWindow.mainViewModel.BaseStationPowerOnIsReceived = true;
MainWindow.mainViewModel.BaseStationPowerOpenBtnIsEnabled = true;
MainWindow.mainViewModel.BaseStationPowerCloseBtnIsEnabled = true;
MainWindow.mainViewModel.timerBaseStationPowerOn.Stop();
MainWindow.mainViewModel.BaseStationMsgVisibility = Visibility.Visible;
MainWindow.mainViewModel.BaseStationMsg = "海底基站电源开启成功!";
MainWindow.mainViewModel.timerBaseStationMsgHidden.Start();
MainWindow.mainViewModel.BaseStationMsgForeground = new SolidColorBrush(Colors.Green);
if (id == 1)
MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn");
else
MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOn");
record = "打开海底基站电源成功";
});
}
else if (Tools.CompareByte(byteList.ToArray(), MainWindow.mainViewModel.RelayShutdownRecv))
{
App.Current.Dispatcher.Invoke(() =>
{
// 更新UI的代码
MainWindow.mainViewModel.BaseStationPowerOnIsReceived = true;
MainWindow.mainViewModel.BaseStationPowerOpenBtnIsEnabled = true;
MainWindow.mainViewModel.BaseStationPowerCloseBtnIsEnabled = true;
MainWindow.mainViewModel.timerBaseStationPowerOn.Stop();
MainWindow.mainViewModel.BaseStationMsgVisibility = Visibility.Visible;
MainWindow.mainViewModel.BaseStationMsg = "海底基站电源关闭成功!";
MainWindow.mainViewModel.timerBaseStationMsgHidden.Start();
MainWindow.mainViewModel.BaseStationMsgForeground = new SolidColorBrush(Colors.Green);
if (id == 1)
MainViewModel.baseStationStateModel1.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff");
else
MainViewModel.baseStationStateModel2.JunBox_Power = (ImageSource)Application.Current.FindResource("DeviceOff");
record = "关闭海底基站电源成功";
});
}
else
{
App.Current.Dispatcher.Invoke(() =>
{
// 更新UI的代码
MainWindow.mainViewModel.BaseStationPowerOnIsReceived = true;
MainWindow.mainViewModel.BaseStationPowerOpenBtnIsEnabled = true;
MainWindow.mainViewModel.BaseStationPowerCloseBtnIsEnabled = true;
MainWindow.mainViewModel.timerBaseStationPowerOn.Stop();
MainWindow.mainViewModel.BaseStationMsgVisibility = Visibility.Visible;
MainWindow.mainViewModel.BaseStationMsg = "海底基站电源开启/关闭失败!";
MainWindow.mainViewModel.timerBaseStationMsgHidden.Start();
MainWindow.mainViewModel.BaseStationMsgForeground = new SolidColorBrush(Colors.Red);
record = "打开/关闭海底基站电源成功";
});
}
sql = $"insert into log_record(StationID,RecordTime,Device_Name,Operation_Type,Record) values('{id}','{DateTime.Now}','升压站电控通信系统','系统控制','{record}');";
DBHelper.ExecuteNonQuery(sql, 1);
//}
//else
//{
// if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel2.RelayActivationRecv))
// {
// App.Current.Dispatcher.Invoke(() =>
// {
// // 更新UI的代码
// MainViewModel.boosterStationStateDataViewModel2.RelayActivationBtnIsReceived = true;
// MainViewModel.boosterStationStateDataViewModel2.RelayActivationBtnIsEnabled = true;
// MainViewModel.boosterStationStateDataViewModel2.timerRelayActivation.Stop();
// MainViewModel.boosterStationStateDataViewModel2.RelayControlMsgVisibility = Visibility.Visible;
// MainViewModel.boosterStationStateDataViewModel2.RelayControlMsg = "继电开启成功!";
// MainViewModel.boosterStationStateDataViewModel2.timerRelayControl.Start();
// MainViewModel.boosterStationStateDataViewModel2.RelayControlMsgForeground = new SolidColorBrush(Colors.Green);
// });
// }
// if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel2.RelayShutdownRecv))
// {
// App.Current.Dispatcher.Invoke(() =>
// {
// // 更新UI的代码
// MainViewModel.boosterStationStateDataViewModel2.RelayShutdownBtnIsReceived = true;
// MainViewModel.boosterStationStateDataViewModel2.RelayShutdownBtnIsEnabled = true;
// MainViewModel.boosterStationStateDataViewModel2.timerRelayShutdown.Stop();
// MainViewModel.boosterStationStateDataViewModel2.RelayControlMsgVisibility = Visibility.Visible;
// MainViewModel.boosterStationStateDataViewModel2.RelayControlMsg = "继电关闭成功!";
// MainViewModel.boosterStationStateDataViewModel2.timerRelayControl.Start();
// MainViewModel.boosterStationStateDataViewModel2.RelayControlMsgForeground = new SolidColorBrush(Colors.Green);
// });
// }
//}
}
}
else if (byteList[1] == 0x10) //对从设备多个寄存器置数
{
//长度校验
if (byteList.Count != 8)
return;
if (byteList[2] == 0x01 && byteList[3] == 0x2D) //继电器报警阀值 1
{
//上下限报警、区间报警
if (id == 1)
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel1.AlarmThresholdRecv))
{
MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived3 = true;
//若均为true则说明报警设置成功
if (MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived1 && MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived2 && MainViewModel.boosterStationStateDataViewModel1.AlarmSetBtnIsReceived3)
{
App.Current.Dispatcher.Invoke(() =>
{
// 更新UI的代码
MainViewModel.boosterStationStateDataViewModel1.AlarmSetButtonIsEnabled = true;
MainViewModel.boosterStationStateDataViewModel1.timerAlarmSet.Stop();
MainViewModel.boosterStationStateDataViewModel1.AlarmSetMessage = "报警设置成功!";
MainViewModel.boosterStationStateDataViewModel1.AlarmSetMessageForeground = new SolidColorBrush(Colors.Green);
MainViewModel.boosterStationStateDataViewModel2.timerAlarmSetMsgCollapse.Start();
});
}
}
}
else
{
if (Tools.CompareByte(byteList.ToArray(), MainViewModel.boosterStationStateDataViewModel2.AlarmThresholdRecv))
{
MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived3 = true;
//若均为true则说明报警设置成功
if (MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived1 && MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived2 && MainViewModel.boosterStationStateDataViewModel2.AlarmSetBtnIsReceived3)
{
App.Current.Dispatcher.Invoke(() =>
{
// 更新UI的代码
MainViewModel.boosterStationStateDataViewModel2.AlarmSetButtonIsEnabled = true;
MainViewModel.boosterStationStateDataViewModel2.timerAlarmSet.Stop();
MainViewModel.boosterStationStateDataViewModel2.AlarmSetMessage = "报警设置成功!";
MainViewModel.boosterStationStateDataViewModel2.AlarmSetMessageForeground = new SolidColorBrush(Colors.Green);
MainViewModel.boosterStationStateDataViewModel2.timerAlarmSetMsgCollapse.Start();
});
}
}
}
}
}
}
}
}