|
@@ -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<MorksPar>.Read(); |
|
|
|
|
|
// Json<OrderStatistics>.Read(); |
|
|
|
|
|
// if (Json<MorksPar>.Data.parSets == null) Json<MorksPar>.Data.parSets = new ObservableCollection<ParSet>(); |
|
|
|
|
|
// if (Json<MorksPar>.Data.parSets.Count < 6) |
|
|
|
|
|
// { |
|
|
|
|
|
// Json<MorksPar>.Data.parSets.Clear(); |
|
|
|
|
|
// for (int i = 0; i < 6; i++) |
|
|
|
|
|
// { |
|
|
|
|
|
// Json<MorksPar>.Data.parSets.Add(new ParSet() |
|
|
|
|
|
// { |
|
|
|
|
|
// CheckBoxContext = $"煮面口{i + 1}屏蔽", |
|
|
|
|
|
// Minute = 1, |
|
|
|
|
|
// Second = 0, |
|
|
|
|
|
// IsShield = false, |
|
|
|
|
|
// TextBlockContext = $"煮面口{i + 1}时间设定" |
|
|
|
|
|
// }); |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// ActionManage.GetInstance.Register(new Action<object[]>((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<object>((o) => |
|
|
|
|
|
// { |
|
|
|
|
|
// if (o != null && o is WritePar writePar) WriteData(writePar.Address, writePar.Value); |
|
|
|
|
|
// }), "WriteVW"); |
|
|
|
|
|
// ActionManage.GetInstance.Register(new Action<object>((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<MaterialDeliveryEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) |
|
|
|
|
|
// { |
|
|
|
|
|
// if (@event == null) return; |
|
|
|
|
|
// if (@event is MaterialDeliveryEvent material) |
|
|
|
|
|
// { |
|
|
|
|
|
// orderMaterialDelivery = material.orderMaterialDelivery; |
|
|
|
|
|
// } |
|
|
|
|
|
// }); |
|
|
|
|
|
|
|
|
|
|
|
// //配方数据信息 |
|
|
|
|
|
// EventBus.EventBus.GetInstance().Subscribe<RecipeBomEvent>(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<object> 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<object>((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<object>((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<object>((obj) => |
|
|
|
|
|
// { |
|
|
|
|
|
// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) |
|
|
|
|
|
// { |
|
|
|
|
|
// mORKS.DropBowlMechanismStatus = bools[0]; |
|
|
|
|
|
// } |
|
|
|
|
|
// })); |
|
|
|
|
|
|
|
|
|
|
|
// GetStatus("M12.2", new Action<object>((obj) => |
|
|
|
|
|
// { |
|
|
|
|
|
// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) |
|
|
|
|
|
// { |
|
|
|
|
|
// mORKS.FixedFlag = bools[0]; |
|
|
|
|
|
// } |
|
|
|
|
|
// })); |
|
|
|
|
|
|
|
|
|
|
|
// GetStatus("M13.5", new Action<object>((obj) => |
|
|
|
|
|
// { |
|
|
|
|
|
// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) |
|
|
|
|
|
// { |
|
|
|
|
|
// mORKS.SiloInPlace = bools[0]; |
|
|
|
|
|
// } |
|
|
|
|
|
// })); |
|
|
|
|
|
|
|
|
|
|
|
// GetStatus("M16.7", new Action<object>((obj) => |
|
|
|
|
|
// { |
|
|
|
|
|
// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) |
|
|
|
|
|
// { |
|
|
|
|
|
// mORKS.RobotTakeNoodleCom = bools[0]; |
|
|
|
|
|
// } |
|
|
|
|
|
// })); |
|
|
|
|
|
|
|
|
|
|
|
// GetStatus("M17.4", new Action<object>((obj) => |
|
|
|
|
|
// { |
|
|
|
|
|
// if (obj is bool[] bools && bools.Length > 0 && bools.Length <= 1) |
|
|
|
|
|
// { |
|
|
|
|
|
// mORKS.RobotStatus = bools[0]; |
|
|
|
|
|
// } |
|
|
|
|
|
// })); |
|
|
|
|
|
|
|
|
|
|
|
// GetStatus("M18.0", new Action<object>((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<object>((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<object>((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<MorksPar>.Data.parSets.Count; i++) |
|
|
|
|
|
// { |
|
|
|
|
|
// mORKS.nsm.ElementAt(i).IsShield = Json<MorksPar>.Data.parSets.ElementAt(i).IsShield; |
|
|
|
|
|
// mORKS.nsm.ElementAt(i).NoodleCookerStatus = mORKS.NoodleCookerStatus[i]; |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 数据解析 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// private void DataParse() |
|
|
|
|
|
// { |
|
|
|
|
|
// EventBus.EventBus.GetInstance().Subscribe<DoOrderEvent>(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<OrderStatistics>.Data.StatisticsTime).Days != 0) |
|
|
|
|
|
// Json<OrderStatistics>.Data.Count = 0; |
|
|
|
|
|
// Json<OrderStatistics>.Data.StatisticsTime = DateTime.Now; |
|
|
|
|
|
// Json<OrderStatistics>.Data.Count++; |
|
|
|
|
|
// Json<OrderStatistics>.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<KeepDataBase>.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; |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 取碗控制 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// 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); |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 转台控制 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// 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("补料完成检测"); |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 取面任务 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// 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<MorksPar>.Data.parSets.ElementAt(loc).IsShield)//检查该煮面篮是否被屏蔽 |
|
|
|
|
|
// //{ |
|
|
|
|
|
// if (mORKS.RBTakeNoodleTask.TryDequeue(out OrderLocInfo orderLocInfo)) |
|
|
|
|
|
// { |
|
|
|
|
|
// //写入煮面时间 |
|
|
|
|
|
// //List<ushort> values = new List<ushort>(); |
|
|
|
|
|
// //values.Add(Json<MorksPar>.Data.parSets.ElementAt(loc).Minute); |
|
|
|
|
|
// //values.Add(Json<MorksPar>.Data.parSets.ElementAt(loc).Second); |
|
|
|
|
|
// //WriteData($"VW{324 + (loc * 4)}", values.ToArray()); |
|
|
|
|
|
// if (mORKS.CurrentFeedbackLoc >= 1 && mORKS.CurrentFeedbackLoc <= 5) { |
|
|
|
|
|
// var x = Json<MorksPar>.Data.DishLibraryParSets.FirstOrDefault(p => p.TextBlockContext == mORKS.CurrentFeedbackLoc.ToString()); |
|
|
|
|
|
// if (x != null) { |
|
|
|
|
|
// List<ushort> values = new List<ushort>(); |
|
|
|
|
|
// 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; |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 出餐控制 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// 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; |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 信号检测 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// 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<MQTTMgr>().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<MorksPar>.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); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// } |
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 语音提醒取餐 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// /// <param name="meal"></param> |
|
|
|
|
|
// 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 }); |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 设备初始化 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// public async void DeviceInit() |
|
|
|
|
|
// { |
|
|
|
|
|
// WriteData("M0.0", true); |
|
|
|
|
|
// await Task.Delay(1000); |
|
|
|
|
|
// WriteData("M0.0", false); |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 取碗控制 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// /// <param name="loc"></param> |
|
|
|
|
|
// private void TakeBowlControl(ushort loc) |
|
|
|
|
|
// { |
|
|
|
|
|
// if (loc == 10)//一次性碗 |
|
|
|
|
|
// { |
|
|
|
|
|
// WriteData("M9.1", true); |
|
|
|
|
|
// } |
|
|
|
|
|
// else if (loc == 11)//大碗 |
|
|
|
|
|
// { |
|
|
|
|
|
// WriteData("M9.0", true); |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 启动转台 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// /// <param name="loc"></param> |
|
|
|
|
|
// 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); |
|
|
|
|
|
// } |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 设置倒面位置 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// /// <param name="loc"></param> |
|
|
|
|
|
// private void SetFallNoodleLoc(ushort loc) |
|
|
|
|
|
// { |
|
|
|
|
|
// if (loc >= 1 && loc <= 6) |
|
|
|
|
|
// WriteData($"M14.{loc - 1}", true); |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// /// <summary> |
|
|
|
|
|
// /// 设置取面位置 |
|
|
|
|
|
// /// </summary> |
|
|
|
|
|
// /// <param name="loc"></param> |
|
|
|
|
|
// private void SetTakeNoodleLoc(ushort loc) |
|
|
|
|
|
// { |
|
|
|
|
|
// if (loc >= 1 && loc <= 6) |
|
|
|
|
|
// WriteData($"M15.{loc - 1}", true); |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// public override void SimOrder() |
|
|
|
|
|
// { |
|
|
|
|
|
// EventBus.EventBus.GetInstance().Subscribe<MorksSimorderModel>(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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// } |
|
|
|
|
|
//} |