Browse Source

MorkT

样式分支
NXX 2 years ago
parent
commit
6b5e1ee9b5
15 changed files with 314 additions and 144 deletions
  1. +1
    -1
      BPASmartClient.DRCoffee/CoffeeMachine.cs
  2. +1
    -0
      BPASmartClient.Device/BaseDevice.cs
  3. +5
    -5
      BPASmartClient.GSIceCream/IceCreamMachine.cs
  4. +73
    -7
      BPASmartClient.Lebai/LebaiRobot.cs
  5. +19
    -35
      BPASmartClient.LebaiRobot/LebaiHelper.cs
  6. +4
    -2
      BPASmartClient.Model/BPASmartClient.Model.csproj
  7. +33
    -0
      BPASmartClient.Model/乐白机器人/Enum/Lebai_qsqdCode.cs
  8. +48
    -0
      BPASmartClient.Model/乐白机器人/LebaiRobotEvent.cs
  9. +90
    -63
      BPASmartClient.MorkT/Control_MorkT.cs
  10. +1
    -4
      BPASmartClient.MorkT/GLV_MorkT.cs
  11. +18
    -18
      BPASmartClient.MorkT/PolymerBatching.cs
  12. +1
    -1
      BPASmartClient.SCChip/ICChipMachine.cs
  13. +11
    -7
      BPASmartClient.ViewModel/MorkT_DebugViewModel.cs
  14. +8
    -0
      BPASmartClient/Control/MorkT_DebugView.xaml
  15. +1
    -1
      BPASmartClient/MainWindow.xaml.cs

+ 1
- 1
BPASmartClient.DRCoffee/CoffeeMachine.cs View File

@@ -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);

//咖博士咖啡机制作


+ 1
- 0
BPASmartClient.Device/BaseDevice.cs View File

@@ -128,6 +128,7 @@ namespace BPASmartClient.Device
peripherals.ForEach(p =>
{
p.DeviceId = this.DeviceId;
p.Init();
});
this.peripherals = peripherals;


+ 5
- 5
BPASmartClient.GSIceCream/IceCreamMachine.cs View File

@@ -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("冰淇淋机器初始化完成");
}
}



+ 73
- 7
BPASmartClient.Lebai/LebaiRobot.cs View File

@@ -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("乐白机器人初始化完成");
}



+ 19
- 35
BPASmartClient.LebaiRobot/LebaiHelper.cs View File

@@ -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>


+ 4
- 2
BPASmartClient.Model/BPASmartClient.Model.csproj View File

@@ -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>


+ 33
- 0
BPASmartClient.Model/乐白机器人/Enum/Lebai_qsqdCode.cs View File

@@ -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
}
}

+ 48
- 0
BPASmartClient.Model/乐白机器人/LebaiRobotEvent.cs View File

@@ -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; }

}
}

+ 90
- 63
BPASmartClient.MorkT/Control_MorkT.cs View File

@@ -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)
{


+ 1
- 4
BPASmartClient.MorkT/GLV_MorkT.cs View File

@@ -29,10 +29,7 @@ namespace BPASmartClient.MorkT
/// </summary>
public OrderLocInfo MakeCoffeeOrder = new OrderLocInfo();

/// <summary>
/// 获取乐百机器人的数据
/// </summary>
public SignalResult lebai = new SignalResult();


/// <summary>
/// 咖啡机位置是否有咖啡在制作中


+ 18
- 18
BPASmartClient.MorkT/PolymerBatching.cs View File

@@ -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;
// }
//}
}
}

+ 1
- 1
BPASmartClient.SCChip/ICChipMachine.cs View File

@@ -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单片机下杯


+ 11
- 7
BPASmartClient.ViewModel/MorkT_DebugViewModel.cs View File

@@ -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-状态刷新");
}


+ 8
- 0
BPASmartClient/Control/MorkT_DebugView.xaml View File

@@ -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"/>


+ 1
- 1
BPASmartClient/MainWindow.xaml.cs View File

@@ -73,9 +73,9 @@ namespace BPASmartClient

ThreadManage.GetInstance().Start(new Action(() =>
{
GetDevices();
mainConsole = new MainConsole();
mainConsole.Start();
GetDevices();
}), "启动主控制台", false);

ThreadManage.GetInstance().Start(new Action(() =>


Loading…
Cancel
Save