diff --git a/BPASmartClient.MorkT/Control_MorkT.cs b/BPASmartClient.MorkT/Control_MorkT.cs
index 7e60ce0d..09a87c9a 100644
--- a/BPASmartClient.MorkT/Control_MorkT.cs
+++ b/BPASmartClient.MorkT/Control_MorkT.cs
@@ -174,6 +174,282 @@ namespace BPASmartClient.MorkT
}
+
+
+ private void OrderChange(string subid, ORDER_STATUS oRDER_STATUS)
+ {
+ EventBus.EventBus.GetInstance().Publish(new OrderStatusChangedEvent() { Status = oRDER_STATUS, SubOrderId = subid, deviceClientType = DeviceType });
+ }
+
+ private void Wait(int value = 101)
+ {
+ while (!(morkT.lebai.Ok && morkT.lebai.Value == value))
+ {
+ Thread.Sleep(5);
+ }
+ }
+
+ ///
+ /// 是否可以开始制作咖啡
+ ///
+ ///
+ private bool CoffeeCanMake()
+ {
+ bool canMake = (IsHealth && morkT.morkOrderPushesCoffee.Count > 0 && !morkT.IsCoffeeMake) ? true : false;
+ return canMake;
+
+ }
+
+ ///
+ /// 制作咖啡流程
+ ///
+ private void MakeCoffeeProcess()
+ {
+ if (CoffeeCanMake())
+ {
+ if (morkT.morkOrderPushesCoffee.TryDequeue(out OrderLocInfo orderLoc))
+ {
+ DeviceProcessLogShow($"开始制作 [咖啡] 订单[{orderLoc.SortNum}]");
+ GetAndCheeckCoffe(orderLoc);
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_接咖啡后回原点);//把咖啡杯放到咖啡机机的位置后回原点
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+ new DRCoffee_MakeCoffeeEvent() { DrinkCode = (Model.咖啡机.Enum.DrCoffeeDrinksCode)int.Parse(orderLoc.Loc) }.Publish(); //接咖啡控制
+ DeviceProcessLogShow($"发送咖啡机制作{orderLoc.Loc}!");
+ morkT.IsCoffeeMake = true; morkT.MakeCoffeeOrder = orderLoc;
+ }
+
+ }
+
+
+ }
+ ///
+ /// 咖啡机制作完咖啡,取走并放到取餐口,最后回原点
+ ///
+ private void MakeCoffeeComplete()
+ {
+ if (morkT.IsCoffeeMake && IsHealth)
+ {
+ if (morkT.MakeCoffeeOrder != null && morkT.MakeCoffeeOrder.OrderStatus == 1)
+ {
+ DeviceProcessLogShow($"将咖啡移动到取餐位 [咖啡] 订单[{morkT.MakeCoffeeOrder.SortNum}]");
+ DoCoffeeQC(morkT.MakeCoffeeOrder);
+ morkT.MakeCoffeeOrder = null;
+ morkT.IsCoffeeMake = false;
+ }
+ }
+ }
+
+
+ ///
+ /// 将咖啡杯从咖啡机 取走到 取餐口
+ ///
+ private void DoCoffeeQC(OrderLocInfo order)
+ {
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_取咖啡出餐);
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+ //订单状态改变:完成
+ OrderChange(order.SuborderId, ORDER_STATUS.COMPLETED_COOK);
+ DeviceProcessLogShow($"{order.GoodsName}等待取餐");
+ //WaitTakeMealOrder.Enqueue(order);
+
+ }
+
+ ///
+ /// 取咖啡杯&&咖啡杯检测 若检测失败机器人回原点
+ ///
+ ///
+ private void GetAndCheeckCoffe(OrderLocInfo order)
+ {
+ LebaiRobot.GetInstance.SetValue(0);
+ OrderChange(order.SuborderId, ORDER_STATUS.COOKING);
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_取咖啡杯);
+ Wait();
+ new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_COFFEE }.Publish();//落碗控制
+ Thread.Sleep(500);
+ DeviceProcessLogShow("尝试取咖啡杯!");
+ LebaiRobot.GetInstance.SetValue(1);
+ int count = 2;
+ p:
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_咖啡杯检测);
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+
+ if (!LebaiRobot.GetInstance.GetInput())
+ {
+ if (count >= 3)
+ {
+ //退出循环回到初始位置
+ DeviceProcessLogShow($"执行{count}次取咖啡杯,仍为成功,订单默认废弃,机器人回到初始位置!");
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_咖啡杯回原点);
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+ return;
+ }
+ DeviceProcessLogShow("执行二次取咖啡杯");
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_二次取咖啡杯);
+ Wait();
+ new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_COFFEE }.Publish();//落碗控制
+ LebaiRobot.GetInstance.SetValue(1);
+ count++;
+ goto p;
+ }
+ DeviceProcessLogShow("取咖啡杯完成");
+ }
+
+ ///
+ /// 冰淇淋是否可以开始制作
+ ///
+ ///
+ private bool IceCreamCanMake()
+ {
+ bool canMake = (IsHealth && morkT.morkOrderPushesIceCream.Count > 0) ? true : false;
+ return canMake;
+ }
+
+ ///
+ /// 制作冰淇淋流程
+ ///
+ private void MakeIceCreamProcess()
+ {
+ if (IceCreamCanMake())
+ {
+ if (MorkIStatus.GetInstance().CurrentMode != MORKI_MODE.制冷模式) new GSIceCream_ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish();
+ if (MorkIStatus.GetInstance().CXB >= 86 && morkT.morkOrderPushesIceCream.Count > 0)//成型比大于86才可以制作
+ {
+ if (LebaiRobot.GetInstance.GetInput(3))
+ {
+ if (morkT.IceIsOK) DeviceProcessLogShow("请检查冰淇淋出料口有无遮挡");
+ morkT.IceIsOK = false;
+
+ }
+ else if (morkT.morkOrderPushesIceCream.TryDequeue(out OrderLocInfo order))
+ {
+ morkT.IceIsOK = true;
+ DeviceProcessLogShow($"开始制作 [冰淇淋] 订单[{order.SortNum}]");
+ DoIceCream(order);
+ }
+ }
+ }
+ }
+
+
+ ///
+ /// 做冰淇淋
+ ///
+ private void DoIceCream(OrderLocInfo order)
+ {
+ GetIceCreamCup();
+ CheckICeCreaCup();
+ GetIceCream(order);
+ PutIceCream(order);
+ }
+
+ ///
+ /// 取冰淇淋杯
+ ///
+ private void GetIceCreamCup()
+ {
+ LebaiRobot.GetInstance.SetValue(0);
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_取冰淇淋杯);
+ Wait();
+ new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_ICECREAM }.Publish();//落碗控制
+ Thread.Sleep(500);
+ DeviceProcessLogShow("尝试取冰淇淋杯!");
+
+ }
+
+ ///
+ /// 冰淇淋杯检测,失败后机器人回到原点
+ ///
+ private void CheckICeCreaCup()
+ {
+ int count = 2;
+ LebaiRobot.GetInstance.SetValue(1);
+ p:
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_冰淇淋杯检测);
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+ if (!LebaiRobot.GetInstance.GetInput())
+ {
+ if (count >= 3)
+ {
+ //退出循环回到初始位置
+ DeviceProcessLogShow($"执行{count}次取冰淇淋杯,仍未成功,订单默认废弃,机器人回到初始位置!");
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_冰淇淋杯回原点);
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+ return;
+ }
+ DeviceProcessLogShow($"执行{count}次取冰淇淋杯!");
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_二次取冰淇淋杯);
+ new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_ICECREAM }.Publish();//落碗控制
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+ count++;
+ goto p;
+ }
+ DeviceProcessLogShow("冰淇淋杯检测完成");
+ }
+
+ ///
+ /// 机器人取接冰淇淋
+ ///
+ ///
+ private void GetIceCream(OrderLocInfo order)
+ {
+ //制冷模式
+ new GSIceCream_ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish();
+ LebaiRobot.GetInstance.SetValue(0);
+ OrderChange(order.SuborderId, ORDER_STATUS.COOKING);
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_接1号冰淇淋);
+ Wait();
+ bool doItResult = true;
+ //出料
+ new GSIceCream_DischargeEvent().Publish(delegate (object[] args)
+ {
+ doItResult = (bool)args[0];
+ });
+ if (doItResult)
+ {
+ IceCreamCookCheck();
+ }
+ else
+ {
+ int count_1 = 0;
+ while (MorkIStatus.GetInstance().CXB <= 86)
+ {
+ Thread.Sleep(5);
+ count_1++;
+ if (count_1 >= 2000)
+ break;
+ }
+ IceCreamCookCheck();
+ }
+ LebaiRobot.GetInstance.SetValue(1);
+ }
+
+ ///
+ /// 把冰淇淋放到取餐位后回原点
+ ///
+ ///
+ private void PutIceCream(OrderLocInfo order)
+ {
+ while (LebaiRobot.GetInstance.GetInput())
+ {
+ Thread.Sleep(500);
+ }
+ LebaiRobot.GetInstance.Scene(LebaiRobot.SENCE_放冰淇淋位置);
+ Wait();
+ LebaiRobot.GetInstance.SetValue(1);
+ //订单状态改变:完成
+ OrderChange(order.SuborderId, ORDER_STATUS.COMPLETED_COOK);
+ DeviceProcessLogShow($"{order.GoodsName}等待取餐");
+ //WaitTakeMealOrder.Enqueue(order);
+
+ }
+
///
/// 冰淇淋机器制作冰淇淋
///
diff --git a/BPASmartClient/App.config b/BPASmartClient/App.config
index e789e97e..08824b61 100644
--- a/BPASmartClient/App.config
+++ b/BPASmartClient/App.config
@@ -12,7 +12,7 @@
-
+
@@ -36,7 +36,7 @@
-->
-
+