提交修改

This commit is contained in:
maqiao 2024-12-23 09:52:48 +08:00
parent 8ce450a4f5
commit 1402d31de2
11 changed files with 201 additions and 153 deletions

View File

@ -37,7 +37,7 @@
<!-- 按处方还药或者按取药记录还药 1:处方ReturnDrugWindow22药品ReturnDrugWindow--> <!-- 按处方还药或者按取药记录还药 1:处方ReturnDrugWindow22药品ReturnDrugWindow-->
<add key="returnDrugMode" value="2" /> <add key="returnDrugMode" value="2" />
<!-- 自动退出时间单位秒为0时不自动退出 --> <!-- 自动退出时间单位秒为0时不自动退出 -->
<add key="autoExit" value="80"/> <add key="autoExit" value="5"/>
<!-- 无操作退出录像时间单位秒为0时不退出录像 --> <!-- 无操作退出录像时间单位秒为0时不退出录像 -->
<add key="stopRecord" value="180"/> <add key="stopRecord" value="180"/>
@ -117,8 +117,8 @@
<add key="HIKPassword" value="HKC123456"/> <add key="HIKPassword" value="HKC123456"/>
<!--交接柜网口地址及端口--> <!--交接柜网口地址及端口-->
<add key="modbusIp" value="127.0.0.1"/> <add key="modbusIp" value="10.1.100.13"/>
<add key="modbusPort" value="4002"/> <add key="modbusPort" value="502"/>
<!--温湿度串口--> <!--温湿度串口-->
<add key="wsdSerialPort" value="COM1"/> <add key="wsdSerialPort" value="COM1"/>

View File

@ -19,15 +19,15 @@ namespace DM_Weight.Finger
public class FingerprintUtil public class FingerprintUtil
{ {
private static ILog logger = LogManager.GetLogger(typeof(FingerprintUtil)); private ILog logger = LogManager.GetLogger(typeof(FingerprintUtil));
public static zkemkeeper.CZKEMClass axCZKEM1= new zkemkeeper.CZKEMClass(); public zkemkeeper.CZKEMClass axCZKEM1= new zkemkeeper.CZKEMClass();
public static bool bIsConnected = false; public bool bIsConnected = false;
private static string fingerIp = ConfigurationManager.AppSettings["fingerIp"].ToString(); private string fingerIp = ConfigurationManager.AppSettings["fingerIp"].ToString();
private static int fingerPort = 4370; private int fingerPort = 4370;
private static int machineNumber = Convert.ToInt32(ConfigurationManager.AppSettings["machineNumber"].ToString()); private int machineNumber = Convert.ToInt32(ConfigurationManager.AppSettings["machineNumber"].ToString());
private static int machineType = Convert.ToInt32(ConfigurationManager.AppSettings["machineType"].ToString()); private int machineType = Convert.ToInt32(ConfigurationManager.AppSettings["machineType"].ToString());
private static IEventAggregator _eventAggregator; private IEventAggregator _eventAggregator;
public FingerprintUtil(IEventAggregator eventAggregator) public FingerprintUtil(IEventAggregator eventAggregator)
{ {
_eventAggregator = eventAggregator; _eventAggregator = eventAggregator;
@ -38,7 +38,7 @@ namespace DM_Weight.Finger
//}); //});
} }
public static void ConnectionMain() public void ConnectionMain()
{ {
try try
{ {
@ -55,9 +55,6 @@ namespace DM_Weight.Finger
} }
} }
logger.Info($"连接指纹机2");
_eventAggregator.GetEvent<FingerprintEvent>().Publish(new FingerprintMsg() _eventAggregator.GetEvent<FingerprintEvent>().Publish(new FingerprintMsg()
{ {
Message = "CONNECT", Message = "CONNECT",
@ -72,10 +69,11 @@ namespace DM_Weight.Finger
/// <summary> /// <summary>
/// 用于退出登录重连指纹机 /// 用于退出登录重连指纹机
/// </summary> /// </summary>
public static void FingerDisconnect() public void FingerDisconnect()
{ {
try try
{ {
logger.Info("重连指纹机");
axCZKEM1.Disconnect(); axCZKEM1.Disconnect();
axCZKEM1.OnAttTransactionEx -= new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx); axCZKEM1.OnAttTransactionEx -= new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx);
axCZKEM1.OnEnrollFingerEx -= new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(axCZKEM1_OnEnrollFingerEx); axCZKEM1.OnEnrollFingerEx -= new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(axCZKEM1_OnEnrollFingerEx);
@ -89,7 +87,7 @@ namespace DM_Weight.Finger
} }
//If your fingerprint(or your card) passes the verification,this event will be triggered //If your fingerprint(or your card) passes the verification,this event will be triggered
private static void axCZKEM1_OnAttTransactionEx(string sEnrollNumber, int iIsInValid, int iAttState, int iVerifyMethod, int iYear, int iMonth, int iDay, int iHour, int iMinute, int iSecond, int iWorkCode) private void axCZKEM1_OnAttTransactionEx(string sEnrollNumber, int iIsInValid, int iAttState, int iVerifyMethod, int iYear, int iMonth, int iDay, int iHour, int iMinute, int iSecond, int iWorkCode)
{ {
FingerprintMsg message = new FingerprintMsg() FingerprintMsg message = new FingerprintMsg()
{ {
@ -102,7 +100,7 @@ namespace DM_Weight.Finger
} }
//When you are enrolling your finger,this event will be triggered. //When you are enrolling your finger,this event will be triggered.
private static void axCZKEM1_OnEnrollFinger(int iEnrollNumber, int iFingerIndex, int iActionResult, int iTemplateLength) private void axCZKEM1_OnEnrollFinger(int iEnrollNumber, int iFingerIndex, int iActionResult, int iTemplateLength)
{ {
FingerprintMsg message = new FingerprintMsg() FingerprintMsg message = new FingerprintMsg()
{ {
@ -119,7 +117,7 @@ namespace DM_Weight.Finger
_eventAggregator.GetEvent<FingerprintEvent>().Publish(message); _eventAggregator.GetEvent<FingerprintEvent>().Publish(message);
} }
private static void axCZKEM1_OnEnrollFingerEx(string iEnrollNumber, int iFingerIndex, int iActionResult, int iTemplateLength) private void axCZKEM1_OnEnrollFingerEx(string iEnrollNumber, int iFingerIndex, int iActionResult, int iTemplateLength)
{ {
FingerprintMsg message = new FingerprintMsg() FingerprintMsg message = new FingerprintMsg()
{ {

View File

@ -1,4 +1,5 @@
using Common.Logging; using Common.Logging;
using DM_Weight.Finger;
using Mina.Core.Future; using Mina.Core.Future;
using Mina.Filter.Codec; using Mina.Filter.Codec;
using Mina.Transport.Socket; using Mina.Transport.Socket;
@ -18,8 +19,10 @@ namespace DM_Weight.Port
AsyncSocketConnector acceptor = new AsyncSocketConnector(); AsyncSocketConnector acceptor = new AsyncSocketConnector();
IConnectFuture iConnectFuture; IConnectFuture iConnectFuture;
string ip = ConfigurationManager.AppSettings["fingerIp"].ToString(); string ip = ConfigurationManager.AppSettings["fingerIp"].ToString();
public FingerHelper() FingerprintUtil _fingerprintUtil;
public FingerHelper(FingerprintUtil fingerprintUtil)
{ {
_fingerprintUtil = fingerprintUtil;
acceptor.ExceptionCaught += (o, e) => logger.Error(e.Exception); acceptor.ExceptionCaught += (o, e) => logger.Error(e.Exception);
//acceptor.FilterChain.AddLast("logger", new LoggingFilter()); //acceptor.FilterChain.AddLast("logger", new LoggingFilter());
@ -38,6 +41,7 @@ namespace DM_Weight.Port
logger.Info("SessionClosed"); logger.Info("SessionClosed");
Task.Delay(50).Wait(); Task.Delay(50).Wait();
SocketConnect(); SocketConnect();
_fingerprintUtil.FingerDisconnect();
}; };
this.SocketConnect(); this.SocketConnect();
} }
@ -45,7 +49,7 @@ namespace DM_Weight.Port
{ {
iConnectFuture = acceptor.Connect(new IPEndPoint(IPAddress.Parse(ip), 4370)).Await(); iConnectFuture = acceptor.Connect(new IPEndPoint(IPAddress.Parse(ip), 4370)).Await();
Console.WriteLine(iConnectFuture.Connected.ToString()); logger.Info($"再次连接结果:{iConnectFuture.Connected.ToString()}");
} }
public void SendMessage(MyBaseMessage baseMessage) public void SendMessage(MyBaseMessage baseMessage)

View File

@ -81,10 +81,10 @@ namespace DM_Weight.Port
BoxOperate = false; BoxOperate = false;
this.SetModusIpMaster(); this.SetModusIpMaster();
// return TimeSpan.FromSeconds (1); // return TimeSpan.FromSeconds (1);
Task.Factory.StartNew(() => //Task.Factory.StartNew(() =>
{ //{
FingerprintUtil.FingerDisconnect(); // FingerprintUtil.FingerDisconnect();
}); //});
}).Execute<bool[]>(() => }).Execute<bool[]>(() =>
{ {
bool[] flags = new bool[18]; bool[] flags = new bool[18];
@ -120,10 +120,10 @@ namespace DM_Weight.Port
logger.Info($"打开箱子出错,第{retryCount}次重试,异常信息{exception}"); logger.Info($"打开箱子出错,第{retryCount}次重试,异常信息{exception}");
Thread.Sleep(50); Thread.Sleep(50);
this.SetModusIpMaster(); this.SetModusIpMaster();
Task.Factory.StartNew(() => //Task.Factory.StartNew(() =>
{ //{
FingerprintUtil.FingerDisconnect(); // FingerprintUtil.FingerDisconnect();
}); //});
//return TimeSpan.FromSeconds (1); //return TimeSpan.FromSeconds (1);
})).Execute(() => })).Execute(() =>
{ {
@ -173,6 +173,7 @@ namespace DM_Weight.Port
private static SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(); private static SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();
public static void SpeakAsync(string textinfo) public static void SpeakAsync(string textinfo)
{ {
speechSynthesizer.Rate = 2;
speechSynthesizer.SpeakAsync(textinfo); speechSynthesizer.SpeakAsync(textinfo);
} }
} }

View File

@ -1,4 +1,5 @@
using DM_Weight.Models; using DM_Weight.Finger;
using DM_Weight.Models;
using DM_Weight.msg; using DM_Weight.msg;
using DM_Weight.util; using DM_Weight.util;
using DM_Weight.ViewModels; using DM_Weight.ViewModels;
@ -31,9 +32,11 @@ namespace DM_Weight.Port
string ip = ConfigurationManager.AppSettings["modbusIp"].ToString(); string ip = ConfigurationManager.AppSettings["modbusIp"].ToString();
int port =Convert.ToInt32(ConfigurationManager.AppSettings["modbusPort"]); int port =Convert.ToInt32(ConfigurationManager.AppSettings["modbusPort"]);
IEventAggregator _eventAggregator; IEventAggregator _eventAggregator;
public SocketHelper(IEventAggregator eventAggregator) public DateTime dateTime { get; set; } = DateTime.Now;
FingerprintUtil _fingerprintUtil;
public SocketHelper(IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil)
{ {
_eventAggregator=eventAggregator; _eventAggregator = eventAggregator;
acceptor.ExceptionCaught += (o, e) => acceptor.ExceptionCaught += (o, e) =>
{ {
logger.Error($"网口通信超时:{e.Exception}"); logger.Error($"网口通信超时:{e.Exception}");
@ -54,17 +57,16 @@ namespace DM_Weight.Port
{ {
OpenStatus = (bool)e.Message; OpenStatus = (bool)e.Message;
logger.Info("MessageReceived>>>>>>>>>>>>>>>>" + OpenStatus); logger.Info("MessageReceived>>>>>>>>>>>>>>>>" + OpenStatus);
if(OpenStatus) //if(OpenStatus)
{ //{
HomeWindow.idleTimer.Stop(); // HomeWindow.idleTimer.Stop();
} //}
else //else
{ //{
HomeWindow.idleTimer.AutoReset = true; // HomeWindow.idleTimer.Interval = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0") * 1000;
HomeWindow.idleTimer.Interval = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0") * 1000; // HomeWindow.idleTimer.Start();
HomeWindow.idleTimer.Start();
} //}
}; };
@ -73,15 +75,44 @@ namespace DM_Weight.Port
logger.Info("SessionClosed"); logger.Info("SessionClosed");
//Task.Delay(50).Wait(); //Task.Delay(50).Wait();
SocketConnect(); SocketConnect();
Task.Factory.StartNew(() =>
{
_fingerprintUtil.FingerDisconnect();
});
}; };
this.SocketConnect(); this.SocketConnect();
_fingerprintUtil = fingerprintUtil;
} }
int i = 0;
public void SocketConnect() public void SocketConnect()
{ {
Thread.Sleep(50);
i++;
iConnectFuture = acceptor.Connect(new IPEndPoint(IPAddress.Parse(ip), port)).Await(); iConnectFuture = acceptor.Connect(new IPEndPoint(IPAddress.Parse(ip), port)).Await();
logger.Info($"第{i}次连接结果:{iConnectFuture.Connected.ToString()}");
if (!iConnectFuture.Connected)
{
if (i <= 3)
{
//没连上会再连两次
SocketConnect();
}
else
{
logger.Error($"尝试{i}次连接后均连接不上");
AlertMsg alertMsg = new AlertMsg
{
Message = $"网口连接断开!",
Type = MsgType.ERROR
};
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
}
}
else
{
i = 0;
}
logger.Info(iConnectFuture.Connected.ToString());
} }
public void SendMessage(MyBaseMessage baseMessage) public void SendMessage(MyBaseMessage baseMessage)

View File

@ -862,6 +862,7 @@ namespace DM_Weight.ViewModels
try try
{ {
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo) }); _socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo) });
_socketHelper.dateTime = DateTime.Now;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -871,12 +872,14 @@ namespace DM_Weight.ViewModels
Type = MsgType.ERROR, Type = MsgType.ERROR,
}; };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
return; return;
} }
_socketHelper.OpenStatus = true; _socketHelper.OpenStatus = true;
Thread.Sleep(200); Thread.Sleep(200);
int i = 10; int i = 40;
new PromiseUtil<int>().taskAsyncLoop(500, 0, async (options, next, stop) => int iException = 0;
new PromiseUtil<int>().taskAsyncLoop(200, 0, async (options, next, stop) =>
{ {
_socketHelper.IsMultiThread = true; _socketHelper.IsMultiThread = true;
@ -896,30 +899,43 @@ namespace DM_Weight.ViewModels
if (i == 0) if (i == 0)
{ {
ModbusHelper.SpeakAsync("请及时关闭药箱"); ModbusHelper.SpeakAsync("请及时关闭药箱");
i = 10; i = 40;
} }
next(); next();
} }
else else
{ {
_socketHelper.OpenStatus = false;
_socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
stop(); stop();
} }
} }
else else
{ {
_socketHelper.OpenStatus = false;
_socketHelper.IsMultiThread = false; _socketHelper.IsMultiThread = false;
_socketHelper.dateTime = DateTime.Now;
stop(); stop();
} }
iException = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
_socketHelper.OpenStatus = false; iException++;
if (iException >= 3)
{
_socketHelper.OpenStatus = false;
}
// _socketHelper.OpenStatus = false;
AlertMsg alertMsg = new AlertMsg AlertMsg alertMsg = new AlertMsg
{ {
Message = $"网口连接异常,正在重试{ex.Message}", Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR, Type = MsgType.ERROR,
}; };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
logger.Info($"网口连接异常,正在重试{ex.Message}");
next();
} }
}); });

View File

@ -570,48 +570,31 @@ namespace DM_Weight.ViewModels
FindDrawerCount(); FindDrawerCount();
int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0"); int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
//int stopRecord = Convert.ToInt32(ConfigurationManager.AppSettings["stopRecord"] ?? "0"); if (autoExit > 0)
//if (autoExit > 0) {
//{ System.Timers.Timer timer = new System.Timers.Timer();
// System.Timers.Timer timer = new System.Timers.Timer(); timer.Interval = autoExit* 1000;
// timer.Interval = 100; timer.Elapsed += (sender, e) =>
// timer.Elapsed += (sender, e) => {
// { // 串口无人操作
// // 串口无人操作 if (!_socketHelper.OpenStatus)
// bool[] boolArrs = ModbusHelper.GetInstance().GetAllBoxState(); {
// bool allTrue = Array.TrueForAll(boolArrs, b => b==false); // 无人操作鼠标键盘
// logger.Info($"进入自动退出定时方法{allTrue}"); if ((DateTime.Now - _socketHelper.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit)
// //false是关着,true是开着 {
// if (allTrue) logger.Info($"设备内无人操作,用户【{Operator?.Nickname}】自动退出登录");
// { Operator = null;
// //PerformanceCounter pc = new PerformanceCounter("System", "% Idle Time", true); Reviewer = null;
// //float systemIdleTime = pc.NextValue(); Application.Current.Dispatcher.Invoke(() =>
// //Console.WriteLine($"systemIdleTime:{systemIdleTime}"); {
_regionManager.RequestNavigate("MainRegion", "LoginWindow");
// //// 获取系统空闲时间 timer.Stop();
// //TimeSpan idleTime = SystemInformation.IdleTime; });
// //// 打印空闲时间 }
// //Console.WriteLine("系统空闲时间: " + idleTime.ToString()); }
// long lTime = CheckComputerFreeState.GetLastInputTime(); };
// logger.Info($"自动退出时间{lTime}"); timer.Start();
// // 30秒内无人操作鼠标键盘 }
// //if ((DateTime.Now - _portUtil.dateTime).TotalSeconds > autoExit && CheckComputerFreeState.GetLastInputTime() > autoExit)
// if (lTime > autoExit)
// {
// logger.Info($"设备{autoExit}秒内无人操作,用户【{Operator?.Nickname}】自动退出登录");
// _chkFunction.HIKStopDVRRecord();
// Operator = null;
// Reviewer = null;
// Application.Current.Dispatcher.Invoke(() =>
// {
// _regionManager.RequestNavigate("MainRegion", "LoginWindow");
// timer.Stop();
// });
// }
// }
// };
// timer.Start();
//}
#region #region
//int interval = Convert.ToInt32(ConfigurationManager.AppSettings["Interval"]); //int interval = Convert.ToInt32(ConfigurationManager.AppSettings["Interval"]);
//if (interval > 0) //if (interval > 0)
@ -624,7 +607,7 @@ namespace DM_Weight.ViewModels
// //WDTimer.AutoReset = true; // //WDTimer.AutoReset = true;
// //WDTimer.Enabled = true; // //WDTimer.Enabled = true;
//} //}
Task.Factory.StartNew(async () => Task.Factory.StartNew(() =>
{ {
while (true) while (true)
{ {
@ -639,7 +622,7 @@ namespace DM_Weight.ViewModels
AddTime = DateTime.Now AddTime = DateTime.Now
}).ExecuteCommand(); }).ExecuteCommand();
logger.Info($"保存温湿度信息:{temp.Temp},{temp.Humi}"); logger.Info($"保存温湿度信息:{temp.Temp},{temp.Humi}");
await Task.Delay(1200000);//20分钟查一次 Task.Delay(1200000);//20分钟查一次
} }
else else
{ {
@ -688,14 +671,14 @@ namespace DM_Weight.ViewModels
Reviewer = null; Reviewer = null;
try try
{ {
if (_socketHelper.IsMultiThread) //if (_socketHelper.IsMultiThread)
{ //{
Application.Current.Dispatcher.BeginInvoke(() => // Application.Current.Dispatcher.BeginInvoke(() =>
{ // {
_regionManager.RequestNavigate("MainRegion", "LoginWindow"); // _regionManager.RequestNavigate("MainRegion", "LoginWindow");
}); // });
} //}
else //else
{ {

View File

@ -62,7 +62,7 @@ namespace DM_Weight.ViewModels
} }
private HkcChangeShifts listHkcChangeShifts=new HkcChangeShifts(); private HkcChangeShifts listHkcChangeShifts=new HkcChangeShifts();
//private FingerprintUtil _fingerprintUtil; private FingerprintUtil _fingerprintUtil;
private PortUtil _portUtil; private PortUtil _portUtil;
@ -114,17 +114,17 @@ namespace DM_Weight.ViewModels
// _regionManager = regionManager; // _regionManager = regionManager;
// _eventAggregator = eventAggregator; // _eventAggregator = eventAggregator;
//} //}
public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil) public LoginWindowViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, PortUtil portUtil,FingerprintUtil fingerprintUtil)
{ {
//_fingerprintUtil = fingerprintUtil; _fingerprintUtil = fingerprintUtil;
_portUtil = portUtil; _portUtil = portUtil;
_regionManager = regionManager; _regionManager = regionManager;
_eventAggregator = eventAggregator; _eventAggregator = eventAggregator;
//FingerMsg = !_fingerprintUtil.bIsConnected; FingerMsg = !_fingerprintUtil.bIsConnected;
FingerMsg = !FingerprintUtil.bIsConnected; //FingerMsg = !FingerprintUtil.bIsConnected;
_eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent); _eventAggregator.GetEvent<FingerprintEvent>().Subscribe(LoginEvent);
logger.Info($"LoginWindowViewModel;FingerMsg{FingerprintUtil.bIsConnected}"); logger.Info($"LoginWindowViewModel;FingerMsg{_fingerprintUtil.bIsConnected}");
//_fingerprintUtil.FingerDisconnect(); _fingerprintUtil.FingerDisconnect();
} }
private DelegateCommand? _loginCommand; private DelegateCommand? _loginCommand;

View File

@ -106,7 +106,7 @@ namespace DM_Weight.ViewModels
} }
if (_socketHelper.IsMultiThread) if (_socketHelper.IsMultiThread)
{ {
Application.Current.Dispatcher.Invoke(new Action(() => { Application.Current.Dispatcher.BeginInvoke(new Action(() => {
this.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c")); this.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c"));
SnackbarMessageQueue.Enqueue(msg.Message); SnackbarMessageQueue.Enqueue(msg.Message);
})); }));

View File

@ -662,6 +662,7 @@ namespace DM_Weight.ViewModels
try try
{ {
_socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo - 1) }); _socketHelper.SendMessage(new MyBaseMessage() { lockNo = (short)(DrawerNo - 1) });
_socketHelper.dateTime = DateTime.Now;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -709,8 +710,9 @@ namespace DM_Weight.ViewModels
// } // }
//}); //});
Thread.Sleep(200); Thread.Sleep(200);
int i = 10; int i = 40;
new PromiseUtil<int>().taskAsyncLoop(500, 0, async (options, next, stop) => int iException = 0;
new PromiseUtil<int>().taskAsyncLoop(200, 0, async (options, next, stop) =>
{ {
_socketHelper.IsMultiThread = true; _socketHelper.IsMultiThread = true;
try try
@ -730,30 +732,41 @@ namespace DM_Weight.ViewModels
if (i == 0) if (i == 0)
{ {
ModbusHelper.SpeakAsync("请及时关闭药箱"); ModbusHelper.SpeakAsync("请及时关闭药箱");
i = 10; i = 40;
} }
next(); next();
} }
else else
{ {
_socketHelper.IsMultiThread = false;
_socketHelper.OpenStatus = false;
_socketHelper.dateTime=DateTime.Now;
stop(); stop();
} }
} }
else else
{ {
_socketHelper.IsMultiThread = false; _socketHelper.IsMultiThread = false;
_socketHelper.OpenStatus = false;
_socketHelper.dateTime = DateTime.Now;
stop(); stop();
} }
iException = 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
_socketHelper.OpenStatus = false; iException++;
if (iException >= 3)
{
_socketHelper.OpenStatus = false;
}
AlertMsg alertMsg = new AlertMsg AlertMsg alertMsg = new AlertMsg
{ {
Message = $"网口连接异常,正在重试{ex.Message}", Message = $"网口连接异常,正在重试{ex.Message}",
Type = MsgType.ERROR, Type = MsgType.ERROR,
}; };
_eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg); _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
next();
} }
}); });
//StateTimer.Start(); //StateTimer.Start();

View File

@ -32,54 +32,56 @@ namespace DM_Weight.Views
{ {
private readonly ILog logger = LogManager.GetLogger(typeof(HomeWindow)); private readonly ILog logger = LogManager.GetLogger(typeof(HomeWindow));
int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0"); int autoExit = Convert.ToInt32(ConfigurationManager.AppSettings["autoExit"] ?? "0");
public static System.Timers.Timer idleTimer;//= new System.Timers.Timer(60000); //public static System.Timers.Timer idleTimer;//= new System.Timers.Timer(60000);
IEventAggregator _eventAggregator; IEventAggregator _eventAggregator;
SocketHelper _socketHelper; SocketHelper _socketHelper;
public HomeWindow(IEventAggregator eventAggregator, SocketHelper socketHelper) public HomeWindow(IEventAggregator eventAggregator, SocketHelper socketHelper)
{ {
InitializeComponent(); InitializeComponent();
if (autoExit > 0) //if (autoExit > 0)
{ //{
idleTimer = new System.Timers.Timer(autoExit * 1000); // idleTimer = new System.Timers.Timer(autoExit * 1000);
idleTimer.Elapsed += OnTimerElapsed; // idleTimer.Elapsed += OnTimerElapsed;
this.MouseDown += OnUserActivity; // idleTimer.AutoReset = true;
this.MouseMove += OnUserActivity; // idleTimer.Enabled= true;
this.KeyDown += OnUserActivity; // this.MouseDown += OnUserActivity;
idleTimer.Start(); // this.MouseMove += OnUserActivity;
_eventAggregator = eventAggregator; // this.KeyDown += OnUserActivity;
} // idleTimer.Start();
// _eventAggregator = eventAggregator;
//}
_socketHelper = socketHelper; _socketHelper = socketHelper;
} }
private void OnUserActivity(object sender, EventArgs e) //private void OnUserActivity(object sender, EventArgs e)
{ //{
idleTimer.Stop(); // idleTimer.Stop();
// idleTimer.Interval =autoExit * 1000;
idleTimer.AutoReset = true; // idleTimer.Start();
idleTimer.Interval =autoExit * 1000; //}
idleTimer.Start(); //private void OnTimerElapsed(object sender, ElapsedEventArgs e)
} //{
private void OnTimerElapsed(object sender, ElapsedEventArgs e) // idleTimer.Stop();
{ // // 串口无人操作
// 串口无人操作 // //bool[] boolArrs = ModbusHelper.GetInstance().GetAllBoxState();
//bool[] boolArrs = ModbusHelper.GetInstance().GetAllBoxState(); // //bool allTrue = Array.TrueForAll(boolArrs, b => b == false);
//bool allTrue = Array.TrueForAll(boolArrs, b => b == false); // logger.Info($"进入自动退出定时方法{ModbusHelper.BoxOperate}");
logger.Info($"进入自动退出定时方法{ModbusHelper.BoxOperate}"); // //if (ModbusHelper.BoxOperate)
//if (ModbusHelper.BoxOperate) // if (!_socketHelper.OpenStatus)
if (!_socketHelper.OpenStatus) // {
{ // if (idleTimer.Enabled)
if (idleTimer.Enabled) // {
{ // idleTimer.Stop();
idleTimer.Stop(); // //无人操作,自动退出
//无人操作,自动退出 // _eventAggregator.GetEvent<LoginOutEvent>().Publish();
_eventAggregator.GetEvent<LoginOutEvent>().Publish(); // }
} // }
} // idleTimer.Start();
//else // //else
//{ // //{
// idleTimer.Interval = autoExit * 1000; // // idleTimer.Interval = autoExit * 1000;
// idleTimer.AutoReset = true; // // idleTimer.AutoReset = true;
//} // //}
} //}
} }
} }