@@ -177,7 +177,7 @@ namespace BPASmartClient.DRCoffee | |||
public override void Init() | |||
{ | |||
commProxy = new SerialPortClient(PortName,(BaudRates)Enum.Parse(typeof(BaudRates),BaudRate)); | |||
commProxy = new SerialPortClient(communicationPar.SerialPort,(BaudRates)communicationPar.BaudRate); | |||
commProxy.SetDataStorage(dataStorage); | |||
//咖博士咖啡机制作 | |||
@@ -128,6 +128,7 @@ namespace BPASmartClient.Device | |||
peripherals.ForEach(p => | |||
{ | |||
p.DeviceId = this.DeviceId; | |||
p.Init(); | |||
}); | |||
this.peripherals = peripherals; | |||
@@ -243,12 +243,11 @@ namespace BPASmartClient.GSIceCream | |||
public override void Init() | |||
{ | |||
commProxy = new SerialPortClient(PortName,(BaudRates)Enum.Parse(typeof(BaudRates),BaudRate)); | |||
//广深冰淇淋机模式设置 | |||
commProxy = new SerialPortClient(communicationPar.SerialPort, (BaudRates)communicationPar.BaudRate); | |||
commProxy.SetDataStorage(dataStorage); | |||
//广深冰淇淋机模式设置 | |||
EventBus.EventBus.GetInstance().Subscribe<GSIceCream_ModeSetEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack) | |||
EventBus.EventBus.GetInstance().Subscribe<GSIceCream_ModeSetEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) | |||
{ | |||
try | |||
{ | |||
@@ -258,7 +257,7 @@ namespace BPASmartClient.GSIceCream | |||
commProxy.SendData(data); | |||
Thread.Sleep(200); | |||
free = false; | |||
MessageLog.GetInstance.Show(string.Format("设置模式[{0}]",Enum.GetName(typeof(MORKI_MODE),((GSIceCream_ModeSetEvent)@event).Mode))); | |||
MessageLog.GetInstance.Show(string.Format("设置模式[{0}]", Enum.GetName(typeof(MORKI_MODE), ((GSIceCream_ModeSetEvent)@event).Mode))); | |||
} | |||
catch (Exception ex) | |||
{ | |||
@@ -333,6 +332,7 @@ namespace BPASmartClient.GSIceCream | |||
InitStatus(); | |||
//测试用 | |||
Start(); | |||
MessageLog.GetInstance.Show("冰淇淋机器初始化完成"); | |||
} | |||
} | |||
@@ -15,16 +15,13 @@ using BPASmartClient.EventBus; | |||
using static BPASmartClient.EventBus.EventBus; | |||
using BPASmartClient.Model; | |||
using BPASmartClient.LebaiRobot; | |||
using BPASmartClient.Model.乐白机器人; | |||
namespace BPASmartClient.Lebai | |||
{ | |||
public class LebaiRobot: BasePeripheral | |||
{ | |||
/// <summary> | |||
/// IP地址 | |||
/// </summary> | |||
public string IpAddress { get; set; } = "192.168.0.1"; | |||
/// <summary> | |||
/// 抓手上传感器输入位索引 | |||
/// </summary> | |||
@@ -43,13 +40,18 @@ namespace BPASmartClient.Lebai | |||
public override void Start() | |||
{ | |||
LebaiHelper.GetInstance().Connect(IpAddress); | |||
ThreadManage.GetInstance().StartLong(() => { LebaiHelper.GetInstance().Reconnect(IpAddress); Thread.Sleep(5000); }, "机器人重连检测"); | |||
LebaiHelper.GetInstance().Connect(communicationPar.IPAddress); | |||
ThreadManage.GetInstance().StartLong(() => { LebaiHelper.GetInstance().Reconnect(communicationPar.IPAddress); Thread.Sleep(5000); }, "机器人重连检测"); | |||
ThreadManage.GetInstance().StartLong(() => | |||
{ | |||
status["Connected"] = LebaiHelper.GetInstance().IsConnected; | |||
IsConnected = LebaiHelper.GetInstance().IsConnected; | |||
status["OK"] = LebaiHelper.GetInstance().GetValueAsync().Ok; | |||
status["Value"] = LebaiHelper.GetInstance().GetValueAsync().Value; | |||
if (LebaiHelper.GetInstance().robotData != null) status["RobotMode"] = LebaiHelper.GetInstance().robotData.RobotMode.Mode; | |||
LebaiHelper.GetInstance().GetRobotModeStatus(); | |||
Thread.Sleep(10); | |||
},"获取乐白机器人数据"); | |||
} | |||
public override void Stop() | |||
@@ -63,8 +65,72 @@ namespace BPASmartClient.Lebai | |||
{ | |||
}); | |||
//获取机器人信号 | |||
EventBus.EventBus.GetInstance().Subscribe<LebaiRobot_GetInputEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) | |||
{ | |||
if (@event == null) return; | |||
if (@event is LebaiRobot_GetInputEvent getInput) | |||
{ | |||
callBack.Invoke(LebaiHelper.GetInstance().GetInput(getInput.Pin)); | |||
} | |||
}); | |||
//获取Tcp信号 | |||
EventBus.EventBus.GetInstance().Subscribe<Demo_MakeCoffeeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) | |||
{ | |||
if (@event == null) return; | |||
if (@event is LebaiRobot_GetInputEvent getTCPInput) | |||
{ | |||
callBack.Invoke(LebaiHelper.GetInstance().GetTcpInput(getTCPInput.Pin)); | |||
} | |||
}); | |||
//机器人输入信号 | |||
EventBus.EventBus.GetInstance().Subscribe<LebaiRobot_SetValueEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) | |||
{ | |||
if (@event == null) return; | |||
if (@event is LebaiRobot_SetValueEvent SetValueEvent) | |||
{ | |||
LebaiHelper.GetInstance().SetValue(SetValueEvent.RobotSetValue); | |||
} | |||
}); | |||
//控制机器人 | |||
EventBus.EventBus.GetInstance().Subscribe<LebaiRobot_LebaiControlEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) | |||
{ | |||
if (@event == null) return; | |||
if (@event is LebaiRobot_LebaiControlEvent lebaiControlEvent) | |||
{ | |||
switch (lebaiControlEvent.LebaiControl) | |||
{ | |||
case "机器人启动": | |||
LebaiHelper.GetInstance().StartRobot(); | |||
break; | |||
case "启动示教": | |||
LebaiHelper.GetInstance().StartTeachMode(); | |||
break; | |||
case "停止示教": | |||
LebaiHelper.GetInstance().EndtTeachMode(); | |||
break; | |||
case "机器人急停": | |||
LebaiHelper.GetInstance().EStopRobot(); | |||
break; | |||
default: | |||
break; | |||
} | |||
} | |||
}); | |||
//选择机器人场景 | |||
EventBus.EventBus.GetInstance().Subscribe<LebaiRobot_LebaiSenceEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack) | |||
{ | |||
if (@event == null) return; | |||
if (@event is LebaiRobot_LebaiSenceEvent lebaiSenceEvent) | |||
{ | |||
LebaiHelper.GetInstance().Scene(lebaiSenceEvent.LebaiSence); | |||
} | |||
}); | |||
InitStatus(); | |||
Start(); | |||
MessageLog.GetInstance.Show("乐白机器人初始化完成"); | |||
} | |||
@@ -15,41 +15,7 @@ namespace BPASmartClient.LebaiRobot | |||
public class LebaiHelper:Singleton<LebaiHelper> | |||
{ | |||
#region 且时且多设备 | |||
//取咖啡杯 set:=1 get:=101 10031 | |||
//取冰淇淋杯 set:=1 get:=101 10032 | |||
//咖啡杯检测 set:=1 get:=101 10033 | |||
//冰淇淋杯检测 set:=1 get:=101 10034 | |||
//二次取咖啡杯 set:=1 get:=101 10035 | |||
//二次取冰淇淋杯 set:=1 get:=101 10036 | |||
//接咖啡 set:=1 get:=101 10037 | |||
//接冰淇淋公共点 set:=1 get:=101 10038 | |||
//接1号冰淇淋 set:=1 get:=101 10039 | |||
//接2号冰淇淋 set:=1 get:=101 10040 | |||
//接3号冰淇淋 set:=1 get:=101 10041 | |||
//放咖啡位置 set:=1 get:=101 10042 | |||
//放冰淇淋位置 set:=1 get:=101 10043 | |||
public const int SENCE_取咖啡杯 = 10031; | |||
public const int SENCE_取冰淇淋杯 = 10032; | |||
public const int SENCE_咖啡杯检测 = 10033; | |||
public const int SENCE_冰淇淋杯检测 = 10034; | |||
public const int SENCE_二次取咖啡杯 = 10035; | |||
public const int SENCE_二次取冰淇淋杯 = 10036; | |||
public const int SENCE_接咖啡 = 10037; | |||
public const int SENCE_接冰淇淋公共点 = 10038; | |||
public const int SENCE_接1号冰淇淋 = 10039; | |||
public const int SENCE_接2号冰淇淋 = 10040; | |||
public const int SENCE_接3号冰淇淋 = 10041; | |||
public const int SENCE_放咖啡位置 = 10042; | |||
public const int SENCE_放冰淇淋位置 = 10043; | |||
//add 新加场景 | |||
public const int SENCE_接咖啡后回原点 = 10051; | |||
public const int SENCE_咖啡杯回原点 = 10050; | |||
public const int SENCE_冰淇淋杯回原点 = 10049; | |||
public const int SENCE_取咖啡出餐 = 10052; | |||
#endregion | |||
@@ -302,6 +268,24 @@ namespace BPASmartClient.LebaiRobot | |||
return false; | |||
} | |||
public bool GetTcpInput(int pin = 1) | |||
{ | |||
try | |||
{ | |||
if (client == null) return false; | |||
var res = client.GetTcpDIO(new IOPin() { Pin = pin }).Result; | |||
if (res != null) | |||
{ | |||
return res.Value == 1 ? true : false; | |||
} | |||
} | |||
catch (Exception ex) | |||
{ | |||
MessageLog.GetInstance.ShowEx(ex.ToString()); | |||
} | |||
return false; | |||
} | |||
/// <summary> | |||
/// 运行指定的场景 | |||
/// </summary> | |||
@@ -7,11 +7,13 @@ | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\BPASmartClient.EventBus\BPASmartClient.EventBus.csproj" /> | |||
<Compile Remove="机器人\**" /> | |||
<EmbeddedResource Remove="机器人\**" /> | |||
<None Remove="机器人\**" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Folder Include="机器人\Enum\" /> | |||
<ProjectReference Include="..\BPASmartClient.EventBus\BPASmartClient.EventBus.csproj" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
@@ -0,0 +1,33 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.Model.乐白机器人.Enum | |||
{ | |||
public class Lebai_qsqdCode | |||
{ | |||
#region 且时且多设备 | |||
public const int SENCE_取咖啡杯 = 10031; | |||
public const int SENCE_取冰淇淋杯 = 10032; | |||
public const int SENCE_咖啡杯检测 = 10033; | |||
public const int SENCE_冰淇淋杯检测 = 10034; | |||
public const int SENCE_二次取咖啡杯 = 10035; | |||
public const int SENCE_二次取冰淇淋杯 = 10036; | |||
public const int SENCE_接咖啡 = 10037; | |||
public const int SENCE_接冰淇淋公共点 = 10038; | |||
public const int SENCE_接1号冰淇淋 = 10039; | |||
public const int SENCE_接2号冰淇淋 = 10040; | |||
public const int SENCE_接3号冰淇淋 = 10041; | |||
public const int SENCE_放咖啡位置 = 10042; | |||
public const int SENCE_放冰淇淋位置 = 10043; | |||
//add 新加场景 | |||
public const int SENCE_接咖啡后回原点 = 10051; | |||
public const int SENCE_咖啡杯回原点 = 10050; | |||
public const int SENCE_冰淇淋杯回原点 = 10049; | |||
public const int SENCE_取咖啡出餐 = 10052; | |||
#endregion | |||
} | |||
} |
@@ -0,0 +1,48 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
namespace BPASmartClient.Model.乐白机器人 | |||
{ | |||
/// <summary> | |||
/// 获取机器人输入DI状态 | |||
/// </summary> | |||
public class LebaiRobot_GetInputEvent : BaseEvent | |||
{ | |||
public int Pin { get; set; } = 0; | |||
} | |||
/// <summary> | |||
/// /// <summary> | |||
/// 获取机器人输入TCPDI状态 | |||
/// </summary> | |||
/// </summary> | |||
public class LebaiRobot_GetTCPInputEvent : BaseEvent | |||
{ | |||
public int Pin { get; set; } = 1; | |||
} | |||
/// <summary> | |||
/// 输入机器人信号 | |||
/// </summary> | |||
public class LebaiRobot_SetValueEvent : BaseEvent | |||
{ | |||
public int RobotSetValue { get; set; } | |||
} | |||
/// <summary> | |||
/// 机器人控制 | |||
/// </summary> | |||
public class LebaiRobot_LebaiControlEvent : BaseEvent | |||
{ | |||
public string LebaiControl { get; set; } | |||
} | |||
/// <summary> | |||
/// 选择乐白机器人场景 | |||
/// </summary> | |||
public class LebaiRobot_LebaiSenceEvent : BaseEvent | |||
{ | |||
public int LebaiSence { get; set; } | |||
} | |||
} |
@@ -7,6 +7,7 @@ using BPASmartClient.Lebai; | |||
using BPASmartClient.LebaiRobot; | |||
using BPASmartClient.Message; | |||
using BPASmartClient.Model; | |||
using BPASmartClient.Model.乐白机器人; | |||
using BPASmartClient.Model.冰淇淋.Enum; | |||
using BPASmartClient.Model.单片机; | |||
using BPASmartClient.Model.单片机.Enum; | |||
@@ -27,6 +28,7 @@ namespace BPASmartClient.MorkT | |||
GLV_MorkT morkT = new GLV_MorkT(); | |||
public override void DoMain() | |||
{ | |||
IsHealth = true; | |||
@@ -37,28 +39,8 @@ namespace BPASmartClient.MorkT | |||
if (morkT.MakeCoffeeOrder != null) | |||
morkT.MakeCoffeeOrder.OrderStatus = 1; | |||
}); | |||
ActionManage.GetInstance.Register(new Action<object>((o) => | |||
{ | |||
switch (o) | |||
{ | |||
case "机器人启动": | |||
LebaiHelper.GetInstance().StartRobot(); | |||
break; | |||
case "启动示教": | |||
LebaiHelper.GetInstance().StartTeachMode(); | |||
break; | |||
case "停止示教": | |||
LebaiHelper.GetInstance().EndtTeachMode(); | |||
break; | |||
case "机器人急停": | |||
LebaiHelper.GetInstance().EStopRobot(); | |||
break; | |||
default: | |||
break; | |||
} | |||
}),"调试控制-机器人控制"); | |||
MessageLog.GetInstance.Show("MORKT 设备初始化完成"); | |||
} | |||
@@ -72,17 +54,24 @@ namespace BPASmartClient.MorkT | |||
public override void MainTask() | |||
{ | |||
MakeCoffeeProcess(); | |||
if(!LebaiHelper.GetInstance().GetInput())//取餐口有空余位置 | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent { DeviceId = DeviceId, Pin = 0 },(o)=> | |||
{ | |||
MakeIceCreamProcess(); | |||
MakeCoffeeComplete(); | |||
} | |||
if(o != null && o.Length > 0 && o[0] is bool resultValue) | |||
{ | |||
if(!resultValue)//取餐口有空余位置 | |||
{ | |||
MakeIceCreamProcess(); | |||
MakeCoffeeComplete(); | |||
} | |||
} | |||
}); | |||
} | |||
public override void ReadData() | |||
{ | |||
morkT.lebai = LebaiHelper.GetInstance().GetValueAsync(); | |||
LebaiHelper.GetInstance().GetRobotModeStatus(); | |||
} | |||
@@ -186,7 +175,6 @@ namespace BPASmartClient.MorkT | |||
} | |||
}); | |||
} | |||
/// <summary> | |||
/// 验证当前是做咖啡还是做冰淇淋 | |||
/// </summary> | |||
@@ -208,7 +196,7 @@ namespace BPASmartClient.MorkT | |||
private void Wait(int value = 101) | |||
{ | |||
while (!(morkT.lebai.Ok && morkT.lebai.Value == value)) | |||
while (!((bool)Status.status["OK"] && (int)Status.status["Value"] == value)) | |||
{ | |||
Thread.Sleep(5); | |||
} | |||
@@ -236,9 +224,9 @@ namespace BPASmartClient.MorkT | |||
{ | |||
DeviceProcessLogShow($"开始制作 [咖啡] 订单[{orderLoc.SortNum}]"); | |||
GetAndCheeckCoffe(orderLoc); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_接咖啡后回原点);//把咖啡杯放到咖啡机机的位置后回原点 | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10051}); //接咖啡后回原点 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
new DRCoffee_MakeCoffeeEvent() { DrinkCode = (Model.咖啡机.Enum.DrCoffeeDrinksCode)int.Parse(orderLoc.Loc) }.Publish(); //接咖啡控制 | |||
DeviceProcessLogShow($"发送咖啡机制作{orderLoc.Loc}!"); | |||
morkT.IsCoffeeMake = true; morkT.MakeCoffeeOrder = orderLoc; | |||
@@ -271,9 +259,9 @@ namespace BPASmartClient.MorkT | |||
/// </summary> | |||
private void DoCoffeeQC(OrderLocInfo order) | |||
{ | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_取咖啡出餐); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10052 }); //SENCE_取咖啡出餐 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
//订单状态改变:完成 | |||
OrderChange(order.SuborderId, ORDER_STATUS.COMPLETED_COOK); | |||
DeviceProcessLogShow($"{order.GoodsName}等待取餐"); | |||
@@ -287,36 +275,45 @@ namespace BPASmartClient.MorkT | |||
/// <param name="order"></param> | |||
private void GetAndCheeckCoffe(OrderLocInfo order) | |||
{ | |||
LebaiHelper.GetInstance().SetValue(0); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }); | |||
OrderChange(order.SuborderId, ORDER_STATUS.COOKING); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_取咖啡杯); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10031 }); //SENCE_取咖啡杯 | |||
Wait(); | |||
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_COFFEE }.Publish();//落碗控制 | |||
Thread.Sleep(500); | |||
DeviceProcessLogShow("尝试取咖啡杯!"); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
int count = 2; | |||
bool result = true; | |||
p: | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_咖啡杯检测); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10033 }); //SENCE_咖啡杯检测 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetTCPInputEvent { DeviceId = DeviceId, Pin = 1 }, (o)=> | |||
{ | |||
if(o != null && o.Length > 0 && o[0] is bool resultValue) | |||
{ | |||
result = resultValue; | |||
} | |||
}); | |||
if (!LebaiHelper.GetInstance().GetInput()) | |||
if (!result) | |||
{ | |||
if (count >= 3) | |||
{ | |||
//退出循环回到初始位置 | |||
DeviceProcessLogShow($"执行{count}次取咖啡杯,仍为成功,订单默认废弃,机器人回到初始位置!"); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_咖啡杯回原点); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10050 }); //SENCE_咖啡杯回原点 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
return; | |||
} | |||
DeviceProcessLogShow("执行二次取咖啡杯"); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_二次取咖啡杯); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10035 }); //SENCE_二次取咖啡杯 | |||
Wait(); | |||
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_COFFEE }.Publish();//落碗控制 | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
count++; | |||
goto p; | |||
} | |||
@@ -349,7 +346,15 @@ namespace BPASmartClient.MorkT | |||
{ | |||
if ((short)Status.status["CBX"] >= 86 && morkT.morkOrderPushesIceCream.Count > 0)//成型比大于86才可以制作 | |||
{ | |||
if (LebaiHelper.GetInstance().GetInput(3)) | |||
bool result = true; | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent { DeviceId = DeviceId, Pin = 3 }, (res) => | |||
{ | |||
if (res[0] is bool resultValue) | |||
{ | |||
result = resultValue; | |||
} | |||
}); | |||
if (result) | |||
{ | |||
if (morkT.IceIsOK) DeviceProcessLogShow("请检查冰淇淋出料口有无遮挡"); | |||
morkT.IceIsOK = false; | |||
@@ -383,8 +388,8 @@ namespace BPASmartClient.MorkT | |||
/// </summary> | |||
private void GetIceCreamCup() | |||
{ | |||
LebaiHelper.GetInstance().SetValue(0); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_取冰淇淋杯); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10032 }); //SENCE_取冰淇淋杯 | |||
Wait(); | |||
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_ICECREAM }.Publish();//落碗控制 | |||
Thread.Sleep(500); | |||
@@ -398,27 +403,35 @@ namespace BPASmartClient.MorkT | |||
private void CheckICeCreaCup() | |||
{ | |||
int count = 2; | |||
LebaiHelper.GetInstance().SetValue(1); | |||
bool result = true; | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
p: | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_冰淇淋杯检测); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10034 }); //SENCE_冰淇淋杯检测 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
if (!LebaiHelper.GetInstance().GetInput()) | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetTCPInputEvent { DeviceId = DeviceId, Pin = 1 }, (o) => | |||
{ | |||
if (o != null && o.Length > 0 && o[0] is bool resultValue) | |||
{ | |||
result = resultValue; | |||
} | |||
}); | |||
if (!result) | |||
{ | |||
if (count >= 3) | |||
{ | |||
//退出循环回到初始位置 | |||
DeviceProcessLogShow($"执行{count}次取冰淇淋杯,仍未成功,订单默认废弃,机器人回到初始位置!"); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_冰淇淋杯回原点); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10049 }); //SENCE_冰淇淋杯回原点 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
return; | |||
} | |||
DeviceProcessLogShow($"执行{count}次取冰淇淋杯!"); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_二次取冰淇淋杯); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10036 }); //SENCE_二次取冰淇淋杯 | |||
new SCChip_TakeCupEvent() { Cup = IC_CUP.CUP_ICECREAM }.Publish();//落碗控制 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
count++; | |||
goto p; | |||
} | |||
@@ -433,9 +446,9 @@ namespace BPASmartClient.MorkT | |||
{ | |||
//制冷模式 | |||
new GSIceCream_ModeSetEvent() { Mode = MORKI_MODE.制冷模式 }.Publish(); | |||
LebaiHelper.GetInstance().SetValue(0); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 0 }); | |||
OrderChange(order.SuborderId, ORDER_STATUS.COOKING); | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_接1号冰淇淋); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10039 }); //SENCE_接1号冰淇淋 | |||
Wait(); | |||
bool doItResult = true; | |||
//出料 | |||
@@ -460,7 +473,7 @@ namespace BPASmartClient.MorkT | |||
} | |||
IceCreamCookCheck(); | |||
} | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
} | |||
/// <summary> | |||
@@ -469,13 +482,19 @@ namespace BPASmartClient.MorkT | |||
/// <param name="order"></param> | |||
private void PutIceCream(OrderLocInfo order) | |||
{ | |||
while (LebaiHelper.GetInstance().GetInput()) | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent { DeviceId = DeviceId, Pin = 0 }, (res) => | |||
{ | |||
Thread.Sleep(500); | |||
} | |||
LebaiHelper.GetInstance().Scene(LebaiHelper.SENCE_放冰淇淋位置); | |||
if (res[0] is bool resultValue) | |||
{ | |||
while (resultValue) | |||
{ | |||
Thread.Sleep(500); | |||
} | |||
} | |||
}); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiSenceEvent { DeviceId = DeviceId, LebaiSence = 10043 }); //SENCE_放冰淇淋位置 | |||
Wait(); | |||
LebaiHelper.GetInstance().SetValue(1); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_SetValueEvent { DeviceId = DeviceId, RobotSetValue = 1 }); | |||
//订单状态改变:完成 | |||
OrderChange(order.SuborderId, ORDER_STATUS.COMPLETED_COOK); | |||
DeviceProcessLogShow($"{order.GoodsName}等待取餐"); | |||
@@ -488,9 +507,17 @@ namespace BPASmartClient.MorkT | |||
/// </summary> | |||
public void IceCreamCookCheck() | |||
{ | |||
bool result = true; | |||
int retry = 3; | |||
DateTime beginTime = DateTime.Now; | |||
while (!LebaiHelper.GetInstance().GetInput(3)) | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_GetInputEvent { DeviceId = DeviceId, Pin = 3 } ,(res)=> | |||
{ | |||
if (res[0] is bool resultValue) | |||
{ | |||
result = resultValue; | |||
} | |||
} ); | |||
while (!result) | |||
{ | |||
if (retry <= 0 && DateTime.Now.Subtract(beginTime).TotalSeconds >= 10) | |||
{ | |||
@@ -29,10 +29,7 @@ namespace BPASmartClient.MorkT | |||
/// </summary> | |||
public OrderLocInfo MakeCoffeeOrder = new OrderLocInfo(); | |||
/// <summary> | |||
/// 获取乐百机器人的数据 | |||
/// </summary> | |||
public SignalResult lebai = new SignalResult(); | |||
/// <summary> | |||
/// 咖啡机位置是否有咖啡在制作中 | |||
@@ -98,26 +98,26 @@ namespace BPASmartClient.MorkT | |||
return temp; | |||
} | |||
internal static IC_SE GetIceCreamSE(string loc, out int sence) | |||
{ | |||
switch (loc) | |||
{ | |||
case ICE_MAIN_BATCHIN1_LOC: | |||
sence = LebaiHelper.SENCE_接1号冰淇淋; | |||
return IC_SE.SE_1; | |||
//internal static IC_SE GetIceCreamSE(string loc, out int sence) | |||
//{ | |||
// switch (loc) | |||
// { | |||
// case ICE_MAIN_BATCHIN1_LOC: | |||
// sence = LebaiHelper.SENCE_接1号冰淇淋; | |||
// return IC_SE.SE_1; | |||
case ICE_MAIN_BATCHIN2_LOC: | |||
sence = LebaiHelper.SENCE_接2号冰淇淋; | |||
return IC_SE.SE_2; | |||
// case ICE_MAIN_BATCHIN2_LOC: | |||
// sence = LebaiHelper.SENCE_接2号冰淇淋; | |||
// return IC_SE.SE_2; | |||
case ICE_MAIN_BATCHIN3_LOC: | |||
sence = LebaiHelper.SENCE_接3号冰淇淋; | |||
return IC_SE.SE_3; | |||
// case ICE_MAIN_BATCHIN3_LOC: | |||
// sence = LebaiHelper.SENCE_接3号冰淇淋; | |||
// return IC_SE.SE_3; | |||
default: | |||
sence = LebaiHelper.SENCE_接1号冰淇淋; | |||
return IC_SE.SE_1; | |||
} | |||
} | |||
// default: | |||
// sence = LebaiHelper.SENCE_接1号冰淇淋; | |||
// return IC_SE.SE_1; | |||
// } | |||
//} | |||
} | |||
} |
@@ -224,7 +224,7 @@ namespace BPASmartClient.SCChip | |||
public override void Init() | |||
{ | |||
commProxy = new SerialPortClient(PortName,(BaudRates)Enum.Parse(typeof(BaudRates),BaudRate)); | |||
commProxy = new SerialPortClient(communicationPar.SerialPort,(BaudRates)communicationPar.BaudRate); | |||
commProxy.SetDataStorage(dataStorage); | |||
//STM32F103RCT6单片机下杯 | |||
@@ -7,6 +7,7 @@ using BPASmartClient.Helper; | |||
using BPASmartClient.Lebai; | |||
using BPASmartClient.LebaiRobot; | |||
using BPASmartClient.Model; | |||
using BPASmartClient.Model.乐白机器人; | |||
using BPASmartClient.Model.冰淇淋.Enum; | |||
using BPASmartClient.Model.咖啡机.Enum; | |||
using BPASmartClient.SCChip; | |||
@@ -24,6 +25,10 @@ namespace BPASmartClient.ViewModel | |||
{ | |||
public class MorkT_DebugViewModel : ObservableObject | |||
{ | |||
/// <summary> | |||
/// 设备ID | |||
/// </summary> | |||
int DeviceId { get; set; } | |||
#region 乐白机器人 | |||
/// <summary> | |||
/// 乐白机器人连接状态 | |||
@@ -43,7 +48,7 @@ namespace BPASmartClient.ViewModel | |||
/// <param name="o"></param> | |||
private void Button_RobotControl(object o) | |||
{ | |||
ActionManage.GetInstance.Send("调试控制-机器人控制",o.ToString()); | |||
EventBus.EventBus.GetInstance().Publish(new LebaiRobot_LebaiControlEvent { DeviceId = DeviceId, LebaiControl = o.ToString() }); | |||
} | |||
#endregion | |||
@@ -109,7 +114,9 @@ namespace BPASmartClient.ViewModel | |||
private void Button_SetIceCreamModel() | |||
{ | |||
MORKI_MODE mORKI_MODE = (MORKI_MODE)Enum.Parse(typeof(MORKI_MODE), SelecteIceCreamdMode); | |||
new GSIceCream_ModeSetEvent() { Mode = mORKI_MODE }.Publish(); | |||
//ActionManage.GetInstance.Send("测试", mORKI_MODE); | |||
new GSIceCream_ModeSetEvent() { DeviceId = DeviceId, Mode = mORKI_MODE }.Publish(); | |||
} | |||
#endregion | |||
@@ -175,10 +182,11 @@ namespace BPASmartClient.ViewModel | |||
Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices().ForEach(device => | |||
{ | |||
if (device.Name == "MorkT") CurrentData = device.Status.GetStatus(); | |||
DeviceId = device.DeviceId; | |||
}); | |||
if (CurrentData != null && CurrentData.Count != 0) | |||
{ | |||
RobotConnected = (bool)CurrentData["Lebai.LebaiRobot.Connected"] ? "已连接" : "未连接"; | |||
RobotConnected = (bool)CurrentData["Lebai.LebaiRobot.IsConnected"] ? "已连接" : "未连接"; | |||
IceCreamConnected = (bool)CurrentData["GSIceCream.IceCreamMachine.IsConnected"] ? "已连接" : "未连接"; | |||
CoffeeConnected = (bool)CurrentData["GSIceCream.IceCreamMachine.IsConnected"] ? "已连接" : "未连接"; | |||
@@ -200,10 +208,6 @@ namespace BPASmartClient.ViewModel | |||
DLCompleted = (bool)CurrentData["GSIceCream.IceCreamMachine.DLCompleted"] ? "打料完成" : "打料中"; | |||
} | |||
Thread.Sleep(500); | |||
}), "MorkT-状态刷新"); | |||
} | |||
@@ -38,6 +38,14 @@ | |||
<RowDefinition Height="*"/> | |||
<RowDefinition Height="3*"/> | |||
</Grid.RowDefinitions> | |||
<StackPanel Orientation="Horizontal"> | |||
<TextBlock Text="连接状态" /> | |||
<TextBlock Text="{Binding RobotConnected}" | |||
Margin="40,0"/> | |||
<TextBlock Text="机器人模式:"/> | |||
<TextBlock Text="{Binding RobotMode}" | |||
Margin="40,0"/> | |||
</StackPanel> | |||
<TextBlock Text="连接状态" /> | |||
<TextBlock Text="{Binding RobotConnected}" | |||
Margin="120,0,0,0"/> | |||
@@ -73,9 +73,9 @@ namespace BPASmartClient | |||
ThreadManage.GetInstance().Start(new Action(() => | |||
{ | |||
GetDevices(); | |||
mainConsole = new MainConsole(); | |||
mainConsole.Start(); | |||
GetDevices(); | |||
}), "启动主控制台", false); | |||
ThreadManage.GetInstance().Start(new Action(() => | |||