语音添加取消及恢复
This commit is contained in:
		
							parent
							
								
									6b1a640995
								
							
						
					
					
						commit
						e6ffeffc11
					
				| 
						 | 
					@ -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);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ using System.Collections.Generic;
 | 
				
			||||||
using System.Configuration;
 | 
					using System.Configuration;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Net;
 | 
					using System.Net;
 | 
				
			||||||
 | 
					using System.Speech.Synthesis;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
| 
						 | 
					@ -118,5 +119,11 @@ namespace DM_Weight.Port
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            iConnectFuture.Session.Write(baseMessage);
 | 
					            iConnectFuture.Session.Write(baseMessage);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();
 | 
				
			||||||
 | 
					        public void SpeakAsync(string textinfo)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            speechSynthesizer.Rate = 2;
 | 
				
			||||||
 | 
					            speechSynthesizer.SpeakAsync(textinfo);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -834,7 +834,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            //bool allFalse = Array.TrueForAll(bools, b => b == false);
 | 
					            //bool allFalse = Array.TrueForAll(bools, b => b == false);
 | 
				
			||||||
            if (_socketHelper.OpenStatus)
 | 
					            if (_socketHelper.OpenStatus)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                ModbusHelper.SpeakAsync("请关闭药箱后再打开");
 | 
					                _socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
 | 
				
			||||||
 | 
					                _socketHelper.speechSynthesizer.Resume();
 | 
				
			||||||
 | 
					                _socketHelper.SpeakAsync("请关闭药箱后再打开");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            //if (_socketHelper.OpenStatus)
 | 
					            //if (_socketHelper.OpenStatus)
 | 
				
			||||||
| 
						 | 
					@ -857,7 +859,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                DrawerNo -= 1;
 | 
					                DrawerNo -= 1;
 | 
				
			||||||
                RequestData();
 | 
					                RequestData();
 | 
				
			||||||
                Status = 1;
 | 
					                Status = 1;
 | 
				
			||||||
                ModbusHelper.SpeakAsync($"正在打开{DrawerNo + 1}号药箱");
 | 
					                _socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
 | 
				
			||||||
 | 
					                _socketHelper.speechSynthesizer.Resume();
 | 
				
			||||||
 | 
					                _socketHelper.SpeakAsync($"正在打开{DrawerNo + 1}号药箱");
 | 
				
			||||||
                //记录开药箱日志
 | 
					                //记录开药箱日志
 | 
				
			||||||
                SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand();
 | 
					                SqlSugarHelper.Db.Insertable(machineRecord).ExecuteCommand();
 | 
				
			||||||
                try
 | 
					                try
 | 
				
			||||||
| 
						 | 
					@ -901,7 +905,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                if (i == 0)
 | 
					                                if (i == 0)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    ModbusHelper.SpeakAsync("请及时关闭药箱");
 | 
					                                    _socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
 | 
				
			||||||
 | 
					                                    _socketHelper.speechSynthesizer.Resume();
 | 
				
			||||||
 | 
					                                    _socketHelper.SpeakAsync("请及时关闭药箱");
 | 
				
			||||||
                                    i = 80;
 | 
					                                    i = 80;
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                                next();
 | 
					                                next();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -625,7 +625,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            //if (!allFalse)
 | 
					            //if (!allFalse)
 | 
				
			||||||
            if (_socketHelper.OpenStatus)
 | 
					            if (_socketHelper.OpenStatus)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                ModbusHelper.SpeakAsync("请关闭药箱后再打开");
 | 
					                _socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
 | 
				
			||||||
 | 
					                _socketHelper.speechSynthesizer.Resume();
 | 
				
			||||||
 | 
					                _socketHelper.SpeakAsync("请关闭药箱后再打开");
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            iList = SqlSugarHelper.Db.Queryable<ChannelList>().Where(cl => cl.MachineId == "DM5" && cl.DrawerType == this.DrawerType && cl.DrawerNo == DrawerNo)
 | 
					            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;
 | 
					                channelList.DrawerState = SelfContent.Substring(0, 1) == "取" ? 0 : 1;
 | 
				
			||||||
                SqlSugarHelper.Db.Updateable(channelList).UpdateColumns(it => new { it.EffDate, it.DrawerState }).ExecuteCommand();
 | 
					                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
 | 
					                try
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
| 
						 | 
					@ -733,7 +738,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                if (i == 0)
 | 
					                                if (i == 0)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    ModbusHelper.SpeakAsync("请及时关闭药箱");
 | 
					                                    _socketHelper.speechSynthesizer.SpeakAsyncCancelAll();
 | 
				
			||||||
 | 
					                                    _socketHelper.speechSynthesizer.Resume();
 | 
				
			||||||
 | 
					                                    _socketHelper.SpeakAsync("请及时关闭药箱");
 | 
				
			||||||
                                    i = 80;
 | 
					                                    i = 80;
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                                next();
 | 
					                                next();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue