From a2d4c2c77a08892873dbd3bcd6a38cf07552dc7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=84=8F=20=E5=BD=AD?= <2417589739@qq.com> Date: Wed, 17 May 2023 15:33:02 +0800 Subject: [PATCH] 1 --- .../Control_MorkSUpgradedVer - 复制.cs | 874 ++++++++++++++++++ 1 file changed, 874 insertions(+) create mode 100644 BPASmartClient.MorkSUpgradedVer/Control_MorkSUpgradedVer - 复制.cs diff --git a/BPASmartClient.MorkSUpgradedVer/Control_MorkSUpgradedVer - 复制.cs b/BPASmartClient.MorkSUpgradedVer/Control_MorkSUpgradedVer - 复制.cs new file mode 100644 index 00000000..269b081b --- /dev/null +++ b/BPASmartClient.MorkSUpgradedVer/Control_MorkSUpgradedVer - 复制.cs @@ -0,0 +1,874 @@ +//using System; +//using System.Collections.Generic; +//using BPA.Message.Enum; +//using BPASmartClient.Device; +//using BPASmartClient.EventBus; +//using BPASmartClient.Model; +//using BPASmartClient.Peripheral; +//using static BPASmartClient.EventBus.EventBus; +//using BPASmartClient.Helper; +//using System.Threading; +//using BPASmartClient.Message; +//using BPA.Message; +//using System.Linq; +//using BPASmartClient.Model.PLC; +//using System.Threading.Tasks; +//using System.Reflection; +//using BPASmartClient.MorkSUpgradedVer.Model; +//using System.Collections.ObjectModel; +//using BPASmartClient.MorkSUpgradedVer.ViewModel; +//using BPASmartClient.Business; +//using BPASmartClient.Model.小炒机; +//using BPA.Models; +//using System.Windows.Forms; +//using System.Media; +//using BPASmartClient.CustomResource; +////using BPA.Helper; + +//namespace BPASmartClient.MorkSUpgradedVer +//{ +// public class Control_MorkSUpgradedVer : BaseDevice +// { +// public override DeviceClientType DeviceType => DeviceClientType.MORKS; +// GVL_MorkSUpgradedVer mORKS = new GVL_MorkSUpgradedVer(); +// Alarm alarm = new Alarm(); + +// public override void DoMain() +// { +// MonitorViewModel.DeviceId = DeviceId; +// ServerInit(); +// DataParse(); +// Json.Read(); +// Json.Read(); +// if (Json.Data.parSets == null) Json.Data.parSets = new ObservableCollection(); +// if (Json.Data.parSets.Count < 6) +// { +// Json.Data.parSets.Clear(); +// for (int i = 0; i < 6; i++) +// { +// Json.Data.parSets.Add(new ParSet() +// { +// CheckBoxContext = $"煮面口{i + 1}屏蔽", +// Minute = 1, +// Second = 0, +// IsShield = false, +// TextBlockContext = $"煮面口{i + 1}时间设定" +// }); +// } +// } + +// ActionManage.GetInstance.Register(new Action((o) => +// { +// if (o.Length > 0) +// { +// Random rd = new Random(); +// ThreadManage.GetInstance().StartLong(new Action(() => +// { +// int NoodleLoc = (int)o[0] == 0 ? rd.Next(1, 6) : (int)o[0]; +// int BowlLoc = (int)o[1] == 0 ? rd.Next(10, 12) : (int)o[1]; + +// string guid = new Guid().ToString(); + +// mORKS.RBTakeNoodleTask.Enqueue(new OrderLocInfo() { Loc = (ushort)NoodleLoc, SuborderId = guid }); +// MessageLog.GetInstance.Show($"添加订单:面条位置【{NoodleLoc}】"); + +// mORKS.TakeBowlTask.Enqueue(new OrderLocInfo() { Loc = (ushort)BowlLoc, SuborderId = guid }); +// MessageLog.GetInstance.Show($"添加订单:碗位置【{BowlLoc}】"); +// Thread.Sleep(60000); +// }), "ForOrder"); +// } +// }), "EnableForOrder"); + +// ActionManage.GetInstance.Register(new Action((o) => +// { +// if (o != null && o is WritePar writePar) WriteData(writePar.Address, writePar.Value); +// }), "WriteVW"); +// ActionManage.GetInstance.Register(new Action((o) => +// { +// if (o != null && o is WritePar writePar) WriteData(writePar.Address, writePar.Value); +// }), "WriteBools"); +// ActionManage.GetInstance.Register(new Action(() => { DeviceInit(); }), "InitDevice"); +// } + +// public override void ResetProgram() +// { +// mORKS = null; +// mORKS = new GVL_MorkSUpgradedVer(); +// } + +// public override void Stop() +// { + +// } + +// private void ServerInit() +// { +// //物料信息 +// EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) +// { +// if (@event == null) return; +// if (@event is MaterialDeliveryEvent material) +// { +// orderMaterialDelivery = material.orderMaterialDelivery; +// } +// }); + +// //配方数据信息 +// EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) +// { +// if (@event == null) return; +// if (@event is RecipeBomEvent recipe) +// { +// recipeBoms = recipe.recipeBoms; +// } +// }); + + +// } + +// private void OrderChange(string subid, ORDER_STATUS oRDER_STATUS) +// { +// var res = mORKS.doOrderEvents.FirstOrDefault(p => p.MorkOrder.SuborderId == subid); +// string goodName = string.Empty; +// string SortNum = string.Empty; +// if (res != null) +// { +// goodName = res.MorkOrder.GoodsName; +// SortNum = res.MorkOrder.SortNum.ToString(); +// } + +// //if (mORKS.doe.ContainsKey(subid)) +// //{ +// // goodName = mORKS.doe[subid].MorkOrder.GoodsName; +// // SortNum = mORKS.doe[subid].MorkOrder.SortNum.ToString(); +// if (!string.IsNullOrEmpty(goodName) && !string.IsNullOrEmpty(SortNum)) +// { +// EventBus.EventBus.GetInstance().Publish(new OrderStatusChangedEvent() { SortNum = SortNum, GoodName = goodName, Status = oRDER_STATUS, SubOrderId = subid, deviceClientType = DeviceType }); +// var index = DataServer.GetInstance.morkS.MakeOrder.FindIndex(p => p.SortNum == SortNum); +// if (index >= 0 && index < DataServer.GetInstance.morkS.MakeOrder.Count) +// { +// if (oRDER_STATUS == ORDER_STATUS.COMPLETED_COOK) +// { +// DataServer.GetInstance.morkS.MakeOrder.RemoveAt(index); +// DataServer.GetInstance.morkS.MakeOrderOver.Add(new OrderMakeModel() +// { +// Status = oRDER_STATUS, +// GoodName = goodName, +// SortNum = SortNum, +// StopTime = DateTime.Now.ToString("HH:mm:ss") +// }); +// } +// else if (oRDER_STATUS == ORDER_STATUS.COMPLETED_TAKE) +// { +// var temp = DataServer.GetInstance.morkS.MakeOrderOver.FirstOrDefault(p => p.SortNum == SortNum); +// if (temp != null) DataServer.GetInstance.morkS.MakeOrderOver.Remove(temp); +// } +// else +// { +// DataServer.GetInstance.morkS.MakeOrder.ElementAt(index).Status = oRDER_STATUS; +// } +// } +// else +// { +// DataServer.GetInstance.morkS.MakeOrder.Add(new OrderMakeModel() +// { +// Status = oRDER_STATUS, +// GoodName = goodName, +// SortNum = SortNum, +// StartTime = DateTime.Now.ToString("HH:mm:ss") +// }); +// } +// //mORKS.doe.Remove(subid, out _); +// } +// //} + + + +// //var res = mORKS.doOrderEvents.FirstOrDefault(p => p.MorkOrder.SuborderId == subid); +// //string goodName = string.Empty; +// //string SortNum = string.Empty; +// //if (res != null) +// //{ +// // goodName = res.MorkOrder.GoodsName; +// // SortNum = res.MorkOrder.SortNum.ToString(); +// //} + +// //EventBus.EventBus.GetInstance().Publish(new OrderStatusChangedEvent() { SortNum = SortNum, GoodName = goodName, Status = oRDER_STATUS, SubOrderId = subid, deviceClientType = DeviceType }); + +// //var index = DataServer.GetInstance.morkS.MakeOrder.FindIndex(p => p.SortNum == SortNum); +// //if (index >= 0 && index < DataServer.GetInstance.morkS.MakeOrder.Count) +// //{ +// // if (oRDER_STATUS == ORDER_STATUS.COMPLETED_COOK) +// // { +// // DataServer.GetInstance.morkS.MakeOrder.RemoveAt(index); +// // DataServer.GetInstance.morkS.MakeOrderOver.Add(new OrderMakeModel() +// // { +// // Status = oRDER_STATUS, +// // GoodName = goodName, +// // SortNum = SortNum, +// // StopTime = DateTime.Now.ToString("HH:mm:ss") +// // }); +// // } +// // else if (oRDER_STATUS == ORDER_STATUS.COMPLETED_TAKE) +// // { +// // var temp = DataServer.GetInstance.morkS.MakeOrderOver.FirstOrDefault(p => p.SortNum == SortNum); +// // if (temp != null) DataServer.GetInstance.morkS.MakeOrderOver.Remove(temp); +// // } +// // else +// // { +// // DataServer.GetInstance.morkS.MakeOrder.ElementAt(index).Status = oRDER_STATUS; +// // } +// //} +// //else +// //{ +// // DataServer.GetInstance.morkS.MakeOrder.Add(new OrderMakeModel() +// // { +// // Status = oRDER_STATUS, +// // GoodName = goodName, +// // SortNum = SortNum, +// // StartTime = DateTime.Now.ToString("HH:mm:ss") +// // }); +// //} +// } + +// private void GetStatus(string key, Action action) +// { +// if (peripheralStatus.ContainsKey(key)) +// { +// if (peripheralStatus[key] != null) +// { +// action?.Invoke(peripheralStatus[key]); +// } +// } +// } + +// public override void ReadData() +// { +// DataServer.GetInstance.morkS.Alarm.Clear(); +// alarms.ForEach(item => +// { +// DataServer.GetInstance.morkS.Alarm.Add(new AlarmModel() +// { +// AlarmTime = $"{item.Date} {item.Time}", +// AlarmMs = item.Info +// }); +// }); + +// GetStatus("M0.1", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 7) +// { +// Initing = !bools[0]; +// mORKS.InitComplete = bools[0]; +// mORKS.MoveScrewRodInitCom = bools[1]; +// mORKS.SacrificialVesselInitCom = bools[2]; +// mORKS.CylinderInitCom = bools[3]; +// mORKS.NoodleCookerInitCom = bools[4]; +// mORKS.RobotInitCom = bools[5]; +// mORKS.SiloInitCom = bools[6]; + +// alarm.DeviceNoInit = !mORKS.InitComplete; +// alarm.MoveScrewRodNoInit = !mORKS.MoveScrewRodInitCom; +// alarm.SacrificialVesselNoInit = !mORKS.SacrificialVesselInitCom; +// alarm.CylinderNoInit = !mORKS.CylinderInitCom; +// alarm.NoodleCookerNoInit = !mORKS.NoodleCookerInitCom; +// alarm.RobotNoInit = !mORKS.RobotInitCom; +// alarm.SiloNoInit = !mORKS.SiloInitCom; +// } +// })); + +// GetStatus("M10.0", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 2) +// { +// mORKS.AllowInvertedFace = bools[0]; +// mORKS.DiningComplete = bools[1]; +// } +// })); + +// GetStatus("M10.4", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) +// { +// mORKS.DropBowlMechanismStatus = bools[0]; +// } +// })); + +// GetStatus("M12.2", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) +// { +// mORKS.FixedFlag = bools[0]; +// } +// })); + +// GetStatus("M13.5", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) +// { +// mORKS.SiloInPlace = bools[0]; +// } +// })); + +// GetStatus("M16.7", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) +// { +// mORKS.RobotTakeNoodleCom = bools[0]; +// } +// })); + +// GetStatus("M17.4", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) +// { +// mORKS.RobotStatus = bools[0]; +// } +// })); + +// GetStatus("M18.0", new Action((obj) => +// { +// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 5) +// { +// mORKS.SmallBowlYesOrNoCheck = bools[0]; +// mORKS.LargeBowYesOrNoCheck = bools[1]; +// mORKS.TurntableLowPosition = bools[2]; +// mORKS.TurntableHighPosition = bools[3]; +// alarm.Supply2_LossBowl = !mORKS.SmallBowlYesOrNoCheck; +// alarm.Supply1_LossBowl = !mORKS.LargeBowYesOrNoCheck; +// } +// })); + +// GetStatus("VW17", new Action((obj) => +// { +// if (obj is ushort[] ushorts && ushorts.Length > 0 && ushorts.Length <= 1) +// { +// var tt = ushorts.UshortsToBytes(true).BytesToUshorts(); + +// for (byte i = 0; i < 6; i++) +// { +// if (RTrig.GetInstance($"CookNoodleCom{i + 1}").Start(tt[0].GetBitValue((byte)(i + 1)))) +// { +// if (!string.IsNullOrEmpty(mORKS.CookNodelId[i])) +// mORKS.CookNoodleCom[i] = true; +// } +// } + +// //mORKS.CookNoodleCom[0] = tt[0].GetBitValue(1); +// //mORKS.CookNoodleCom[1] = tt[0].GetBitValue(2); +// //mORKS.CookNoodleCom[2] = tt[0].GetBitValue(3); +// //mORKS.CookNoodleCom[3] = tt[0].GetBitValue(4); +// //mORKS.CookNoodleCom[4] = tt[0].GetBitValue(5); +// //mORKS.CookNoodleCom[5] = tt[0].GetBitValue(6); +// mORKS.Heating = ushorts[0].GetBitValue(15); +// mORKS.TemperatureReaches = ushorts[0].GetBitValue(16); + +// alarm.MachineLowTemperature = !mORKS.TemperatureReaches; +// } + +// })); + +// GetStatus("VW770", new Action((obj) => +// { +// if (obj is ushort[] ushorts && ushorts.Length > 0 && ushorts.Length <= 1) +// { +// mORKS.CurrentFeedbackLoc = ushorts[0]; +// } + +// })); + +// mORKS.TakeBowlTaskCount = mORKS.TakeBowlTask.Count; +// mORKS.RBTakeNoodleTaskCount = mORKS.RBTakeNoodleTask.Count; + +// for (int i = 0; i < Json.Data.parSets.Count; i++) +// { +// mORKS.nsm.ElementAt(i).IsShield = Json.Data.parSets.ElementAt(i).IsShield; +// mORKS.nsm.ElementAt(i).NoodleCookerStatus = mORKS.NoodleCookerStatus[i]; +// } + +// } + +// /// +// /// 数据解析 +// /// +// private void DataParse() +// { +// EventBus.EventBus.GetInstance().Subscribe(DeviceId, delegate (IEvent @event, EventCallBackHandle callBackHandle) +// { +// if (@event == null) return; +// if (@event is DoOrderEvent order) +// { +// mORKS.doOrderEvents.Add(order); +// //mORKS.doe.TryAdd(order.MorkOrder.SuborderId, order); +// if (order.MorkOrder.GoodBatchings == null) return; +// if (mORKS.HistorySuborderId.Contains(order.MorkOrder.SuborderId)) return; +// OrderCount++; +// if (DateTime.Now.Subtract(Json.Data.StatisticsTime).Days != 0) +// Json.Data.Count = 0; +// Json.Data.StatisticsTime = DateTime.Now; +// Json.Data.Count++; +// Json.Save(); +// OrderChange(order.MorkOrder.SuborderId, ORDER_STATUS.WAIT); +// DeviceProcessLogShow($"接收到{OrderCount}次订单,订单ID:{order.MorkOrder.SuborderId}"); +// mORKS.HistorySuborderId.Add(order.MorkOrder.SuborderId); +// foreach (var item in order.MorkOrder.GoodBatchings) +// { +// var res = orderMaterialDelivery?.BatchingInfo?.FirstOrDefault(p => p.BatchingId == item.BatchingId); +// if (res != null) +// { +// if (ushort.TryParse(res.BatchingLoc, out ushort loc)) +// { +// if (loc >= 1 && loc <= 5) +// { +// if (mORKS.RBTakeNoodleTask.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) +// mORKS.RBTakeNoodleTask.Enqueue(new OrderLocInfo() +// { +// GoodName = order.MorkOrder.GoodsName, +// Loc = ushort.Parse(res.BatchingLoc), +// SuborderId = order.MorkOrder.SuborderId, +// SortNum = order.MorkOrder.SortNum, +// BatchingId = res.BatchingId +// }); +// } +// else if (loc >= 10 && loc <= 11) +// { +// int index = 0; +// if (recipeBoms != null) +// { +// index = Array.FindIndex(recipeBoms.RecipeIds?.ToArray(), p => p.RecipeId == order.MorkOrder.RecipeId); +// index++; +// } +// if (mORKS.TakeBowlTask.FirstOrDefault(p => p.SuborderId == order.MorkOrder.SuborderId) == null) +// mORKS.TakeBowlTask.Enqueue(new OrderLocInfo() +// { +// BatchingId = res.BatchingId, +// GoodName = order.MorkOrder.GoodsName, +// Loc = ushort.Parse(res.BatchingLoc), +// SuborderId = order.MorkOrder.SuborderId, +// SortNum = order.MorkOrder.SortNum, +// RecipeNumber = (index >= 1 && index <= 10) ? (ushort)index : (ushort)0 +// }); +// } +// } +// } +// } +// } +// }); +// } + +// public override void MainTask() +// { +// mORKS.AllowRun = mORKS.InitComplete; +// if (Json.Data.IsVerify) +// IsHealth = mORKS.InitComplete; +// else +// IsHealth = true; + +// TakeBowlTask(); + +// TakeNoodleTask(); + +// OutNoodleTask(); + +// SingleDetect(); + +// TurntableControl(); +// } + +// private void BowlControl(OrderLocInfo orderLocInfo) +// { +// if (orderLocInfo.Loc >= 10 && orderLocInfo.Loc <= 11) +// { +// mORKS.TakeBowlId = orderLocInfo.SuborderId; +// mORKS.TakeBowName = orderLocInfo.GoodName; +// mORKS.TakeBowSortNum = orderLocInfo.SortNum; +// TakeBowlControl(orderLocInfo.Loc); +// OrderChange(mORKS.TakeBowlId, ORDER_STATUS.COOKING); +// DeviceProcessLogShow($"订单【{mORKS.TakeBowlId}】执行取碗控制,位置:[{orderLocInfo.Loc}]"); +// mORKS.TakeBowlInterlock = true; +// } +// } + +// /// +// /// 取碗控制 +// /// +// private void TakeBowlTask() +// { +// if (mORKS.AllowRun && mORKS.TakeBowlTask.Count > 0 && !mORKS.DropBowlMechanismStatus && !mORKS.TakeBowlInterlock) +// { +// ushort BowLoc = 0; +// var res = orderMaterialDelivery?.BatchingInfo?.Where(p => p.BatchingId == mORKS.TakeBowlTask.ElementAt(0).BatchingId).ToList(); +// if (res == null || res?.Count == 0) +// { +// if (mORKS.TakeBowlTask.TryDequeue(out OrderLocInfo orderLocInfo)) BowlControl(orderLocInfo); +// } +// else +// { +// foreach (var item in res) +// { +// if (ushort.TryParse(item.BatchingLoc, out ushort loc)) +// { +// if (loc == 10 && mORKS.SmallBowlYesOrNoCheck) +// { +// BowLoc = loc; +// break; +// } +// else if (loc == 11 && mORKS.LargeBowYesOrNoCheck) +// { +// BowLoc = loc; +// break; +// } +// } +// } + +// if (BowLoc >= 10 && BowLoc <= 11) +// { +// if (mORKS.TakeBowlTask.TryDequeue(out OrderLocInfo orderLocInfo)) +// { +// orderLocInfo.Loc = BowLoc; +// BowlControl(orderLocInfo); +// } +// } +// } +// } +// } + +// /// +// /// 转台控制 +// /// +// private void TurntableControl() +// { +// if (Global.EnableLocalSimOrder) +// { +// //不做轮询,直接取面,模拟订单使用 +// if (mORKS.SiloInPlace && !mORKS.Feeding && mORKS.InitComplete && !mORKS.AllowTakeNoodle && mORKS.RBTakeNoodleTask.Count > 0) +// { +// if (mORKS.TurntableLowPosition) +// { +// TurntableStart(mORKS.RBTakeNoodleTask.ElementAt(0).Loc); +// mORKS.TurntableLocLists.Clear(); +// mORKS.AllowTakeNoodle = true; +// DeviceProcessLogShow($"控制机器人去转台【{mORKS.RBTakeNoodleTask.ElementAt(0).Loc}】号位置取面"); +// } +// } +// } +// else +// { +// //正常轮询 +// if (Delay.GetInstance("到位检测延时").Start(mORKS.SiloInPlace, 2)) +// { +// if (mORKS.SiloInPlace && !mORKS.Feeding && mORKS.InitComplete && !mORKS.AllowTakeNoodle && mORKS.RBTakeNoodleTask.Count > 0) +// { + +// var result = orderMaterialDelivery.BatchingInfo.Where(p => p.BatchingId == mORKS.RBTakeNoodleTask.ElementAt(0).BatchingId).ToList(); +// if (result != null) +// { +// var res = result.FirstOrDefault(P => P.BatchingLoc == mORKS.CurrentFeedbackLoc.ToString()); +// if (mORKS.TurntableLowPosition && res != null) +// { +// TurntableStart(mORKS.CurrentFeedbackLoc); +// mORKS.TurntableLocLists.Clear(); +// mORKS.AllowTakeNoodle = true; +// DeviceProcessLogShow($"控制机器人去转台【{mORKS.CurrentFeedbackLoc}】号位置取面"); +// } +// else +// { +// if (!mORKS.TurntableInterlock) +// { +// foreach (var item in result) +// { +// if (ushort.TryParse(item.BatchingLoc, out ushort loc)) +// { +// if (mORKS.CurrentFeedbackLoc != loc && !mORKS.TurntableLocLists.Contains(loc)) +// { +// if (!mORKS.TurntableLowPosition) +// { +// DeviceProcessLogShow($"执行了转台启动互锁信号复位"); +// } +// TurntableStart(loc); +// DeviceProcessLogShow($"没有物料检测的启动转台控制,转台位置:[{loc}]"); +// break; +// } +// else if (mORKS.CurrentFeedbackLoc == loc && !mORKS.TurntableLocLists.Contains(loc)) mORKS.TurntableLocLists.Add(loc); +// } +// } +// } +// } +// } +// else DeviceProcessLogShow("未找到可用的物料信息"); +// } +// } +// } + +// //补料中检测 +// if (RTrig.GetInstance("mORKS.Feeding").Start(mORKS.Feeding)) +// { +// mORKS.AllowTakeNoodle = false; +// mORKS.TakeNoodleInterlock = false; +// } + +// //转台到位检测 +// if (RTrig.GetInstance("TurntableInPlace").Start(mORKS.SiloInPlace && mORKS.CurrentLoc == mORKS.CurrentFeedbackLoc)) +// { + +// mORKS.TurntableInterlock = false; +// DeviceProcessLogShow("转台到位检测"); +// } + +// //补料完成检测 +// if (RTrig.GetInstance("FeedComplete").Start(mORKS.FeedComplete)) +// { +// if (!mORKS.AllowTakeNoodle && mORKS.TurntableLocLists.Count > 0) +// { +// mORKS.TurntableLocLists.Clear(); +// mORKS.TurntableInterlock = false; +// DeviceProcessLogShow("补料完成检测"); +// } +// } + +// } + +// /// +// /// 取面任务 +// /// +// private void TakeNoodleTask() +// { +// //取面控制 +// if (mORKS.AllowRun && mORKS.RobotStatus && !mORKS.Feeding && !mORKS.RobotTaskInterlock && mORKS.AllowTakeNoodle && mORKS.SiloInPlace && !mORKS.TakeNoodleInterlock && mORKS.RBTakeNoodleTask.Count > 0) +// { +// if (mORKS.CurrentLoc == mORKS.CurrentFeedbackLoc) +// { +// //int loc = Array.FindIndex(mORKS.NoodleCookerStatus, p => p == false);//查找煮面炉空闲位置 +// int loc = mORKS.nsm.ToList().FindIndex(p => p.NoodleCookerStatus == false && p.IsShield == false);//查找煮面炉空闲位置 +// if (loc >= 0 && loc <= 5) +// { +// //if (!Json.Data.parSets.ElementAt(loc).IsShield)//检查该煮面篮是否被屏蔽 +// //{ +// if (mORKS.RBTakeNoodleTask.TryDequeue(out OrderLocInfo orderLocInfo)) +// { +// //写入煮面时间 +// //List values = new List(); +// //values.Add(Json.Data.parSets.ElementAt(loc).Minute); +// //values.Add(Json.Data.parSets.ElementAt(loc).Second); +// //WriteData($"VW{324 + (loc * 4)}", values.ToArray()); +// if (mORKS.CurrentFeedbackLoc >= 1 && mORKS.CurrentFeedbackLoc <= 5) { +// var x = Json.Data.DishLibraryParSets.FirstOrDefault(p => p.TextBlockContext == mORKS.CurrentFeedbackLoc.ToString()); +// if (x != null) { +// List values = new List(); +// values.Add(x.Minute); +// values.Add(x.Second); +// WriteData($"VW{324 + (loc * 4)}", values.ToArray()); +// DeviceProcessLogShow($"转盘位置[{mORKS.CurrentFeedbackLoc}]:写入煮面时间{x.Minute}分{x.Second}秒。"); +// } +// } + +// mORKS.CurrentLoc = 0; +// mORKS.CookNodelId[loc] = orderLocInfo.SuborderId; +// mORKS.NoodleCookerStatus[loc] = true; +// SetFallNoodleLoc((ushort)(loc + 1)); +// //机器人开始取面 +// OrderChange(orderLocInfo.SuborderId, ORDER_STATUS.COOKING); +// DeviceProcessLogShow($"订单【{orderLocInfo.SuborderId}】,机器人倒面至【{loc + 1}】号煮面栏"); + +// mORKS.TakeNoodleInterlock = true; +// } +// } +// } +// } +// } + +// /// +// /// 出餐控制 +// /// +// private void OutNoodleTask() +// { +// if (mORKS.AllowInvertedFace && mORKS.RobotTaskInterlock && !mORKS.TakeNoodleInterlock && mORKS.RobotStatus) +// { +// int loc = Array.FindIndex(mORKS.CookNodelId, p => p == mORKS.IngredientsCompleteId && p.Length > 0); +// if (loc >= 0 && loc <= 5) +// { +// if (mORKS.CookNoodleCom[loc]) +// { +// SetTakeNoodleLoc((ushort)(loc + 1)); +// mORKS.NoodleCookerStatus[loc] = false; +// WriteData($"VW260", (ushort)0);//设置出汤时间 +// OrderChange(mORKS.IngredientsCompleteId, ORDER_STATUS.COMPLETED_COOK); +// DeviceProcessLogShow($"订单【{mORKS.IngredientsCompleteId}】制作完成"); +// mORKS.CookCompleteFlatBit = true; +// mORKS.OutMealId = mORKS.IngredientsCompleteId; +// mORKS.OutMealName = mORKS.IngredientsCompleteName; +// mORKS.OutMealSortNum = mORKS.IngredientsCompleteSortNum; +// mORKS.IngredientsCompleteId = string.Empty; +// mORKS.CookNodelId[loc] = string.Empty; +// DeviceProcessLogShow($"{loc + 1} 号位置出餐控制,订单ID:{mORKS.OutMealId}"); +// mORKS.CookNoodleCom[loc] = false; +// } +// } +// } +// } + +// /// +// /// 信号检测 +// /// +// private void SingleDetect() +// { +// //允许倒面信号检测 +// if (RTrig.GetInstance("AllowFallNoodle").Start(mORKS.AllowInvertedFace)) +// { +// mORKS.IngredientsCompleteId = mORKS.TakeBowlId; +// mORKS.IngredientsCompleteName = mORKS.TakeBowName; +// mORKS.IngredientsCompleteSortNum = mORKS.TakeBowSortNum; +// mORKS.TakeBowSortNum = 0; +// mORKS.TakeBowlId = string.Empty; +// mORKS.TakeBowName = string.Empty; +// DeviceProcessLogShow($"碗到位,允许到面,{mORKS.IngredientsCompleteId}"); +// mORKS.TakeBowlInterlock = false; +// } + +// //取餐完成逻辑处理 +// if (RTrig.GetInstance("CompleteChange1").Start(mORKS.DiningComplete) && mORKS.CookCompleteFlatBit == true) +// { +// OrderChange(mORKS.OutMealId, ORDER_STATUS.COMPLETED_TAKE); +// DeviceProcessLogShow($"订单【{mORKS.OutMealId}】取餐完成"); +// WriteData("M10.1", false); +// DeviceProcessLogShow($"出餐订单序号【{mORKS.OutMealSortNum}】"); +// VoiceAPI.Speak(mORKS.OutMealSortNum.ToString()); +// //DeviceProcessLogShow($"叫号系统通知主题【MORKS/VoiceCall/{DeviceId}】"); +// //Plugin.GetInstance().GetPlugin().Publish($"MORKS/VoiceCall/{DeviceId}", mORKS.OutMealSortNum.ToString()); +// mORKS.CookCompleteFlatBit = false; +// mORKS.OutMealId = string.Empty; +// mORKS.OutMealName = string.Empty; +// mORKS.OutMealSortNum = 0; +// } + +// //机器人取面完成信号检测 +// if (RTrig.GetInstance("TakeNoodleComplete").Start(mORKS.RobotTakeNoodleCom)) +// { +// mORKS.TakeNoodleInterlock = false; +// mORKS.AllowTakeNoodle = false; +// mORKS.TurntableInterlock = false; +// DeviceProcessLogShow("机器人取面完成信号检测"); +// } + +// int OutMealRequstCount = mORKS.CookNoodleCom.Where(p => p == true).ToList().Count; +// //int mlCount = mORKS.NoodleCookerStatus.Where(p => p == true).ToList().Count - Json.Data.parSets.Where(x => x.IsShield == true).ToList().Count; +// int mlCount = mORKS.nsm.Where(p => p.NoodleCookerStatus == true && p.IsShield == false).ToList().Count; +// int index = Array.FindIndex(mORKS.CookNodelId, p => p == mORKS.IngredientsCompleteId); + +// bool isok = index >= 0 && index < mORKS.CookNoodleCom.Length && mORKS.CookNoodleCom[index]; + +// mORKS.PriorityJudgment = Delay.GetInstance("取餐优先级判断").Start(mORKS.TurntableLocLists.Count > 0 && !mORKS.TurntableLowPosition, 4); +// //mORKS.RobotTaskInterlock = OutMealRequstCount > 0 && mORKS.AllowInvertedFace && (mlCount >= 2 || mORKS.RBTakeNoodleTask.Count == 0 || mORKS.PriorityJudgment); +// mORKS.RobotTaskInterlock = isok && mORKS.AllowInvertedFace && (mlCount >= 2 || mORKS.RBTakeNoodleTask.Count == 0 || mORKS.PriorityJudgment); + + +// } +// /// +// /// 语音提醒取餐 +// /// +// /// +// private void WaitMeaLSpeak(string meal) +// { +// //VoiceAPI.m_SystemPlayWav(@"Vioce\电子提示音.wav"); +// //Thread.Sleep(1000); +// //if (meal != null) mORKS.speech.Speak(meal); +// //VoiceAPI.m_SystemPlayWav(@"Vioce\取餐通知.wav"); +// } + +// #region PLC 控制函数 + +// private void WriteData(string address, object value) +// { +// EventBus.EventBus.GetInstance().Publish(new WriteModel() { DeviceId = DeviceId, Address = address, Value = value }); +// } + +// /// +// /// 设备初始化 +// /// +// public async void DeviceInit() +// { +// WriteData("M0.0", true); +// await Task.Delay(1000); +// WriteData("M0.0", false); +// } + +// /// +// /// 取碗控制 +// /// +// /// +// private void TakeBowlControl(ushort loc) +// { +// if (loc == 10)//一次性碗 +// { +// WriteData("M9.1", true); +// } +// else if (loc == 11)//大碗 +// { +// WriteData("M9.0", true); +// } +// } + +// /// +// /// 启动转台 +// /// +// /// +// private void TurntableStart(ushort loc) +// { +// if (loc >= 1 && loc <= 5) +// { +// mORKS.CurrentLoc = loc; +// mORKS.TurntableInterlock = true; +// mORKS.TurntableLocLists.Add(loc); +// WriteData($"M13.{loc - 1}", true); +// } +// } + +// /// +// /// 设置倒面位置 +// /// +// /// +// private void SetFallNoodleLoc(ushort loc) +// { +// if (loc >= 1 && loc <= 6) +// WriteData($"M14.{loc - 1}", true); +// } + +// /// +// /// 设置取面位置 +// /// +// /// +// private void SetTakeNoodleLoc(ushort loc) +// { +// if (loc >= 1 && loc <= 6) +// WriteData($"M15.{loc - 1}", true); +// } + + + +// public override void SimOrder() +// { +// EventBus.EventBus.GetInstance().Subscribe(0, delegate (IEvent @event, EventCallBackHandle callBackHandle) +// { +// if (@event != null && @event is MorksSimorderModel msm) +// { +// string guid = Guid.NewGuid().ToString(); +// if (msm.NoodleLoc >= 1 && msm.NoodleLoc <= 5) +// { +// mORKS.RBTakeNoodleTask.Enqueue(new OrderLocInfo() { Loc = (ushort)msm.NoodleLoc, SuborderId = guid }); +// MessageLog.GetInstance.Show($"添加订单:面条位置【{(ushort)msm.NoodleLoc}】"); +// } + +// if (msm.Bowloc >= 10 && msm.Bowloc <= 11) +// { +// mORKS.TakeBowlTask.Enqueue(new OrderLocInfo() { Loc = (ushort)msm.Bowloc, SuborderId = guid }); +// MessageLog.GetInstance.Show($"添加订单:碗位置【{(ushort)msm.Bowloc}】"); +// } + +// } +// }); +// } +// #endregion + + +// } +//}