添加项目文件。
This commit is contained in:
209
OrpaonEMS.Model/MasterSlave/EMSServerConState.cs
Normal file
209
OrpaonEMS.Model/MasterSlave/EMSServerConState.cs
Normal file
@@ -0,0 +1,209 @@
|
||||
using Prism.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
|
||||
namespace OrpaonEMS.Model.MasterSlave
|
||||
{
|
||||
public class EMSServerConState:BindableBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 声明委托对象-判定跟EMS连接失败时触发事件
|
||||
/// </summary>
|
||||
public event EventHandler<EMSConErrEventArgs> EMSServerConErrEventHandler;
|
||||
|
||||
/// <summary>
|
||||
/// 周期读取定时器
|
||||
/// 周期发送到SignaIR Hub中
|
||||
/// </summary>
|
||||
private System.Timers.Timer? timer { get; set; }
|
||||
|
||||
public EMSServerConState()
|
||||
{
|
||||
timer = new System.Timers.Timer(1000);
|
||||
timer.Elapsed -= CycleCheck;
|
||||
timer.Elapsed += CycleCheck;
|
||||
timer.AutoReset = true;
|
||||
timer.Enabled = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 循环判定连接状态
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
private void CycleCheck(object? sender, ElapsedEventArgs e)
|
||||
{
|
||||
timer.Enabled = false;
|
||||
|
||||
//连接状态出错,立刻停止
|
||||
if (!ServerState)
|
||||
{
|
||||
Msg = "连接出现错误";
|
||||
ConResult = false;
|
||||
//EMSServerConErrEventHandler(this, new EMSConErrEventArgs() { Msg = "连接出现错误" });
|
||||
timer.Enabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ServerSendState == false || TimeIsOk(ServerSendTime) == false)
|
||||
{
|
||||
Msg = "发送数据出现错误";
|
||||
ConResult = false;
|
||||
//EMSServerConErrEventHandler(this, new EMSConErrEventArgs() { Msg = "发送数据出现错误" });
|
||||
timer.Enabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ServerRecvState == false || TimeIsOk(ServerRecvTime) == false)
|
||||
{
|
||||
Msg = "接受数据出现错误";
|
||||
ConResult = false;
|
||||
//EMSServerConErrEventHandler(this, new EMSConErrEventArgs() { Msg = "接受数据出现错误" });
|
||||
timer.Enabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
Msg = "";
|
||||
ConResult = true;
|
||||
timer.Enabled = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通信的消息
|
||||
/// </summary>
|
||||
private string Msg { get; set; } = string.Empty;
|
||||
|
||||
private bool _ConResult = true;
|
||||
/// <summary>
|
||||
/// 整体的通信状态结果
|
||||
/// </summary>
|
||||
public bool ConResult
|
||||
{
|
||||
get { return _ConResult; }
|
||||
set
|
||||
{
|
||||
|
||||
//if (_ConResult != value)//触发一次
|
||||
//{
|
||||
// //暂时的逻辑不需要触发事件了,由外部的函数获取这个状态判断信息
|
||||
// //EMSServerConErrEventHandler(this, new EMSConErrEventArgs() { Msg = Msg, Result = value });
|
||||
// _ConResult = value;
|
||||
//}
|
||||
//Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")} -通信结果:{value}");
|
||||
_ConResult = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private bool _ServerState;
|
||||
/// <summary>
|
||||
/// 通信连接状态
|
||||
/// 来自通信的事件触发方法
|
||||
/// </summary>
|
||||
public bool ServerState
|
||||
{
|
||||
get { return _ServerState; }
|
||||
set { _ServerState = value; }
|
||||
}
|
||||
|
||||
|
||||
private bool _ServerSendState;
|
||||
/// <summary>
|
||||
/// Server 发送数据的状态
|
||||
/// </summary>
|
||||
public bool ServerSendState
|
||||
{
|
||||
get { return _ServerSendState; }
|
||||
set
|
||||
{
|
||||
_ServerSendState = value;
|
||||
ServerSendTime = DateTime.Now;
|
||||
if (value)
|
||||
{
|
||||
ServerSendStateMsg = "正常";
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerSendStateMsg = "失败";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string _ServerSendStateMsg = "失败";
|
||||
/// <summary>
|
||||
/// Server 发送数据的状态 消息
|
||||
/// </summary>
|
||||
public string ServerSendStateMsg
|
||||
{
|
||||
get { return _ServerSendStateMsg; }
|
||||
set { _ServerSendStateMsg = value;RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 发送数据的时间
|
||||
/// </summary>
|
||||
private DateTime ServerSendTime { get; set; } = DateTime.Now;
|
||||
|
||||
|
||||
private bool _ServerRecvState;
|
||||
/// <summary>
|
||||
/// Server 接受数据的状态
|
||||
/// </summary>
|
||||
public bool ServerRecvState
|
||||
{
|
||||
get { return _ServerRecvState; }
|
||||
set
|
||||
{
|
||||
_ServerRecvState = value;
|
||||
ServerRecvTime = DateTime.Now;
|
||||
if (value)
|
||||
{
|
||||
ServerRecvStateMsg = "正常";
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerRecvStateMsg = "失败";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private string _ServerRecvStateMsg = "失败";
|
||||
/// <summary>
|
||||
/// Server 接受数据的状态 消息
|
||||
/// </summary>
|
||||
public string ServerRecvStateMsg
|
||||
{
|
||||
get { return _ServerRecvStateMsg; }
|
||||
set { _ServerRecvStateMsg = value; RaisePropertyChanged(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///接受数据的时间
|
||||
/// </summary>
|
||||
private DateTime ServerRecvTime { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// 判断时间是否OK
|
||||
/// 基于现在的时间
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private bool TimeIsOk(DateTime dateTime)
|
||||
{
|
||||
//大于1秒代表通信失败
|
||||
if ((DateTime.Now - dateTime).TotalSeconds > 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user