语音添加取消及恢复

This commit is contained in:
maqiao 2025-01-04 11:32:32 +08:00
parent 6b1a640995
commit e6ffeffc11
4 changed files with 27 additions and 71 deletions

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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();

View File

@ -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<ChannelList>().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();
}