From 386a663026256fc5c7bbd36b2aa3f3a5f7ac7bc7 Mon Sep 17 00:00:00 2001
From: maqiao <625215135@qq.com>
Date: Sat, 18 Jan 2025 09:39:33 +0800
Subject: [PATCH] =?UTF-8?q?=E9=80=80=E5=87=BA=E8=BD=AF=E4=BB=B6=E6=96=AD?=
=?UTF-8?q?=E5=BC=80=E4=B8=8E=E6=9D=BF=E5=AD=90=E8=BF=9E=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
DM_Weight/App.config | 4 +-
DM_Weight/Port/SocketHelper.cs | 53 +++++++++++++------
.../CheckOrderNewWindowViewModel.cs | 2 +-
DM_Weight/ViewModels/LoginWindowViewModel.cs | 1 +
4 files changed, 40 insertions(+), 20 deletions(-)
diff --git a/DM_Weight/App.config b/DM_Weight/App.config
index 8ee3593..30bfb61 100644
--- a/DM_Weight/App.config
+++ b/DM_Weight/App.config
@@ -3,7 +3,7 @@
-
+
-
+
diff --git a/DM_Weight/Port/SocketHelper.cs b/DM_Weight/Port/SocketHelper.cs
index e3aafda..85534f0 100644
--- a/DM_Weight/Port/SocketHelper.cs
+++ b/DM_Weight/Port/SocketHelper.cs
@@ -4,6 +4,7 @@ using DM_Weight.util;
using DM_Weight.ViewModels;
using log4net;
using Mina.Core.Future;
+using Mina.Core.Session;
using Mina.Filter.Codec;
using Mina.Filter.Logging;
using Mina.Transport.Socket;
@@ -25,18 +26,18 @@ namespace DM_Weight.Port
private readonly ILog logger = LogManager.GetLogger(typeof(SocketHelper));
AsyncSocketConnector acceptor = new AsyncSocketConnector();
IConnectFuture iConnectFuture;
- public bool OpenStatus=false;
+ public bool OpenStatus = false;
public bool ConnectedStatus = false;
//多线程退出标识
public bool IsMultiThread = false;
string ip = ConfigurationManager.AppSettings["modbusIp"].ToString();
- int port =Convert.ToInt32(ConfigurationManager.AppSettings["modbusPort"]);
+ int port = Convert.ToInt32(ConfigurationManager.AppSettings["modbusPort"]);
IEventAggregator _eventAggregator;
FingerprintUtil _fingerprintUtil;
public DateTime dateTime { get; set; } = DateTime.Now;
public SocketHelper(IEventAggregator eventAggregator, FingerprintUtil fingerprintUtil)
{
- _fingerprintUtil= fingerprintUtil;
+ _fingerprintUtil = fingerprintUtil;
_eventAggregator = eventAggregator;
acceptor.ExceptionCaught += (o, e) =>
{
@@ -59,18 +60,22 @@ namespace DM_Weight.Port
OpenStatus = (bool)e.Message;
logger.Info("MessageReceived>>>>>>>>>>>>>>>>" + OpenStatus);
};
-
- acceptor.SessionClosed += (o, e) =>
- {
- logger.Info("SessionClosed");
- //Task.Delay(50).Wait();
- SocketConnect();
- Task.Factory.StartNew(() =>
- {
- _fingerprintUtil.FingerDisconnect();
- });
- };
+ acceptor.SessionClosed += new EventHandler(SessionCloseMethod);
+
+ //acceptor.SessionClosed += (o, e) =>
+ //{
+ // logger.Info($"SessionClosed;ExitFlag:{ExitFlag}");
+ // //Task.Delay(50).Wait();
+ // if (!ExitFlag)
+ // {
+ // SocketConnect();
+ // Task.Factory.StartNew(() =>
+ // {
+ // _fingerprintUtil.FingerDisconnect();
+ // });
+ // }
+ //};
this.SocketConnect();
}
int i = 0;
@@ -84,14 +89,13 @@ namespace DM_Weight.Port
{
if (i <= 3)
{
- Thread.Sleep(1950);
//没连上会再连两次
SocketConnect();
}
else
{
logger.Error($"尝试{i}次连接后均连接不上");
-
+
//AlertMsg alertMsg = new AlertMsg
//{
// Message = $"网口连接断开!",
@@ -107,9 +111,24 @@ namespace DM_Weight.Port
ConnectedStatus = iConnectFuture.Connected;
}
+ private void SessionCloseMethod(System.Object o, IoSessionEventArgs e)
+ {
+ logger.Info($"SessionClosed");
+ SocketConnect();
+ Task.Factory.StartNew(() =>
+ {
+ _fingerprintUtil.FingerDisconnect();
+ });
+ }
+ public void SocketDisConnect()
+ {
+ acceptor.SessionClosed -=new EventHandler(SessionCloseMethod);
+ iConnectFuture.Session.CloseNow();
+ }
+
public void SendMessage(MyBaseMessage baseMessage)
{
- if(!ConnectedStatus)
+ if (!ConnectedStatus)
{
SocketConnect();
}
diff --git a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs
index b129051..eb12c11 100644
--- a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs
+++ b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs
@@ -503,7 +503,7 @@ namespace DM_Weight.ViewModels
&& cs.Quantity >= oi._OrderDetail.Quantity).First();
if (cs == null)
{
- empChannelStock += $"{oi.OrderNo},{oi._OrderDetail.DrugId},{oi._OrderDetail.SetManuNo},{oi._OrderDetail.SetEffDate};";
+ empChannelStock += $"{oi.OrderNo},{oi._OrderDetail.DrugId},{oi._OrderDetail.SetManuNo};";
continue;
}
cs.Quantity = cs.Quantity - oi._OrderDetail.Quantity;
diff --git a/DM_Weight/ViewModels/LoginWindowViewModel.cs b/DM_Weight/ViewModels/LoginWindowViewModel.cs
index ea57153..fccd615 100644
--- a/DM_Weight/ViewModels/LoginWindowViewModel.cs
+++ b/DM_Weight/ViewModels/LoginWindowViewModel.cs
@@ -377,6 +377,7 @@ _exitCommand ??= new DelegateCommand(Exit);
void Exit()
{
//_chkFunction.HIKLoginOut();
+ _socketHelper.SocketDisConnect();
Process.GetCurrentProcess().Kill();
Environment.Exit(0);
}