From e6ffeffc11ec6cfd128b5187f2c4c69164af33b3 Mon Sep 17 00:00:00 2001 From: maqiao <625215135@qq.com> Date: Sat, 4 Jan 2025 11:32:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=AD=E9=9F=B3=E6=B7=BB=E5=8A=A0=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E5=8F=8A=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DM_Weight/Port/ModBusTcpClientHelper.cs | 64 ------------------- DM_Weight/Port/SocketHelper.cs | 7 ++ .../CheckOrderNewWindowViewModel.cs | 12 +++- .../ViewModels/OpenBoxNewWindowViewModel.cs | 15 +++-- 4 files changed, 27 insertions(+), 71 deletions(-) delete mode 100644 DM_Weight/Port/ModBusTcpClientHelper.cs diff --git a/DM_Weight/Port/ModBusTcpClientHelper.cs b/DM_Weight/Port/ModBusTcpClientHelper.cs deleted file mode 100644 index e408b04..0000000 --- a/DM_Weight/Port/ModBusTcpClientHelper.cs +++ /dev/null @@ -1,64 +0,0 @@ -using DM_Weight.ViewModels; -using FluentModbus; -using log4net; -using Polly; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Speech.Synthesis; -using System.Text; -using System.Threading; -using System.Threading.Tasks; - -namespace DM_Weight.Port -{ - public class ModBusTcpClientHelper - { - public static ModbusTcpClient client; - public static bool BoxOperate { get; set; } - private readonly ILog logger = LogManager.GetLogger(typeof(CheckOrderNewWindowViewModel)); - public static ModbusTcpClient GetInstance() - { - if (client == null) - { - client = new ModbusTcpClient(); - client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4002), ModbusEndianness.BigEndian); - } - else if (!client.IsConnected) - { - client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4002), ModbusEndianness.BigEndian); - } - return client; - } - public bool OpenBoxDoor(int boxNum) - { - bool bFlag = false; - try - { - BoxOperate = true; - Thread.Sleep(50); - client.WriteSingleRegister(1, (ushort)boxNum, 0); - logger.Info($"开门指令已发送{(ushort)boxNum}"); - SpeakAsync("药箱已打开,请及时关闭"); - bFlag = true; - } - catch (Exception ex) - { - SpeakAsync("药箱已打开,请及时关闭"); - logger.Info($"药箱已打开异常:{ex.Message}"); - } - return bFlag; - } - public bool[] GetAllBoxState() - { - bool[] state = new bool[1]; - return state; - } - private static SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(); - public static void SpeakAsync(string textinfo) - { - speechSynthesizer.SpeakAsync(textinfo); - } - } -} diff --git a/DM_Weight/Port/SocketHelper.cs b/DM_Weight/Port/SocketHelper.cs index d1e0029..5f7c408 100644 --- a/DM_Weight/Port/SocketHelper.cs +++ b/DM_Weight/Port/SocketHelper.cs @@ -15,6 +15,7 @@ using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net; +using System.Speech.Synthesis; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -118,5 +119,11 @@ namespace DM_Weight.Port { iConnectFuture.Session.Write(baseMessage); } + public SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(); + public void SpeakAsync(string textinfo) + { + speechSynthesizer.Rate = 2; + speechSynthesizer.SpeakAsync(textinfo); + } } } diff --git a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs index d2f87c6..2a77e6c 100644 --- a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs @@ -834,7 +834,9 @@ namespace DM_Weight.ViewModels //bool allFalse = Array.TrueForAll(bools, b => b == false); if (_socketHelper.OpenStatus) { - ModbusHelper.SpeakAsync("请关闭药箱后再打开"); + _socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); + _socketHelper.speechSynthesizer.Resume(); + _socketHelper.SpeakAsync("请关闭药箱后再打开"); return; } //if (_socketHelper.OpenStatus) @@ -857,7 +859,9 @@ namespace DM_Weight.ViewModels DrawerNo -= 1; RequestData(); Status = 1; - ModbusHelper.SpeakAsync($"正在打开{DrawerNo + 1}号药箱"); + _socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); + _socketHelper.speechSynthesizer.Resume(); + _socketHelper.SpeakAsync($"正在打开{DrawerNo + 1}号药箱"); //记录开药箱日志 SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand(); try @@ -901,7 +905,9 @@ namespace DM_Weight.ViewModels { if (i == 0) { - ModbusHelper.SpeakAsync("请及时关闭药箱"); + _socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); + _socketHelper.speechSynthesizer.Resume(); + _socketHelper.SpeakAsync("请及时关闭药箱"); i = 80; } next(); diff --git a/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs b/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs index b57c2a7..24b740a 100644 --- a/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/OpenBoxNewWindowViewModel.cs @@ -625,7 +625,9 @@ namespace DM_Weight.ViewModels //if (!allFalse) if (_socketHelper.OpenStatus) { - ModbusHelper.SpeakAsync("请关闭药箱后再打开"); + _socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); + _socketHelper.speechSynthesizer.Resume(); + _socketHelper.SpeakAsync("请关闭药箱后再打开"); return; } iList = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType && cl.DrawerNo == DrawerNo) @@ -657,7 +659,10 @@ namespace DM_Weight.ViewModels channelList.DrawerState = SelfContent.Substring(0, 1) == "取" ? 0 : 1; SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate, it.DrawerState }).ExecuteCommand(); - ModbusHelper.SpeakAsync($"正在打开{DrawerNo}号药箱"); + //ModbusHelper.SpeakAsync($"正在打开{DrawerNo}号药箱"); + _socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); + _socketHelper.speechSynthesizer.Resume(); + _socketHelper.SpeakAsync($"正在打开{DrawerNo}号药箱"); try { @@ -733,7 +738,9 @@ namespace DM_Weight.ViewModels { if (i == 0) { - ModbusHelper.SpeakAsync("请及时关闭药箱"); + _socketHelper.speechSynthesizer.SpeakAsyncCancelAll(); + _socketHelper.speechSynthesizer.Resume(); + _socketHelper.SpeakAsync("请及时关闭药箱"); i = 80; } next(); @@ -741,7 +748,7 @@ namespace DM_Weight.ViewModels else { _socketHelper.IsMultiThread = false; - _socketHelper.dateTime=DateTime.Now; + _socketHelper.dateTime = DateTime.Now; //_socketHelper.OpenStatus = false; stop(); }