Browse Source

煮面机逻辑优化

样式分支
pry 2 years ago
parent
commit
6c7db8cb88
11 changed files with 474 additions and 405 deletions
  1. +61
    -58
      BPASmartClient.DRCoffee/CoffeeMachine.cs
  2. +11
    -0
      BPASmartClient.Device/BaseDevice.cs
  3. +74
    -70
      BPASmartClient.GSIceCream/IceCreamMachine.cs
  4. +107
    -105
      BPASmartClient.KLMCoffee/CoffeeMachine.cs
  5. +8
    -6
      BPASmartClient.Lebai/LebaiRobot.cs
  6. +7
    -1
      BPASmartClient.MORKSM.BK.PLC/PLCMachine.cs
  7. +41
    -14
      BPASmartClient.MorkS/Control_Morks.cs
  8. +7
    -1
      BPASmartClient.MorkS/GVL_MORKS.cs
  9. +3
    -1
      BPASmartClient.Peripheral/BasePeripheral.cs
  10. +2
    -0
      BPASmartClient.Peripheral/IPeripheral.cs
  11. +153
    -149
      BPASmartClient.SCChip/ICChipMachine.cs

+ 61
- 58
BPASmartClient.DRCoffee/CoffeeMachine.cs View File

@@ -16,7 +16,7 @@ namespace BPASmartClient.DRCoffee
/// <summary> /// <summary>
/// 咖啡机 /// 咖啡机
/// </summary> /// </summary>
public class CoffeeMachine :BasePeripheral
public class CoffeeMachine : BasePeripheral
{ {
//通讯代理 //通讯代理
SerialPortClient commProxy = null; SerialPortClient commProxy = null;
@@ -95,7 +95,7 @@ namespace BPASmartClient.DRCoffee
commProxy.SendData(cmdAsk); commProxy.SendData(cmdAsk);
} }
Thread.Sleep(200); Thread.Sleep(200);
}),"咖啡机询问线程");
}), "咖啡机询问线程");


ThreadManage.GetInstance().StartLong(new Action(() => ThreadManage.GetInstance().StartLong(new Action(() =>
{ {
@@ -132,7 +132,7 @@ namespace BPASmartClient.DRCoffee
} }
} }
Thread.Sleep(5); Thread.Sleep(5);
}),"咖啡机解析线程");
}), "咖啡机解析线程");
} }


/// <summary> /// <summary>
@@ -141,7 +141,7 @@ namespace BPASmartClient.DRCoffee
/// <param name="package"></param> /// <param name="package"></param>
public void ProcessPackage(DrCoffeePackage package) public void ProcessPackage(DrCoffeePackage package)
{ {
if (((DrCoffeeStatus)status["CoffeeStatus"]) == DrCoffeeStatus.Running && package.Status != DrCoffeeStatus.Running) if (((DrCoffeeStatus)status["CoffeeStatus"]) == DrCoffeeStatus.Running && package.Status != DrCoffeeStatus.Running)
{ {
status["CoffeeStatus"] = package.Status; status["CoffeeStatus"] = package.Status;
@@ -154,17 +154,17 @@ namespace BPASmartClient.DRCoffee
status["CoffeeAppStatus"] = package.ApplicationStatus; status["CoffeeAppStatus"] = package.ApplicationStatus;
status["CoffeeWarning"] = package.Warning; status["CoffeeWarning"] = package.Warning;
status["CoffeeFault"] = package.Fault; status["CoffeeFault"] = package.Fault;
if ((DrCoffeeStatus)status["CoffeeStatus"] == DrCoffeeStatus.Warning if ((DrCoffeeStatus)status["CoffeeStatus"] == DrCoffeeStatus.Warning
|| (DrCoffeeStatus)status["CoffeeStatus"] == DrCoffeeStatus.Fault || (DrCoffeeStatus)status["CoffeeStatus"] == DrCoffeeStatus.Fault
|| (DrCoffeeWarning)status["CoffeeWarning"] != DrCoffeeWarning.无警告 || (DrCoffeeWarning)status["CoffeeWarning"] != DrCoffeeWarning.无警告
|| (DrCoffeeFault)status["CoffeeFault"] != DrCoffeeFault.无故障 || (DrCoffeeFault)status["CoffeeFault"] != DrCoffeeFault.无故障
) )
{ {
IsWork = false;
IsWork = false;
} }
else else
IsWork = true;
IsWork = true;
} }


protected override void InitStatus() protected override void InitStatus()
@@ -177,68 +177,71 @@ namespace BPASmartClient.DRCoffee


public override void Init() public override void Init()
{ {
commProxy = new SerialPortClient(communicationPar.SerialPort,(BaudRates)communicationPar.BaudRate);
commProxy = new SerialPortClient(communicationPar.SerialPort, (BaudRates)communicationPar.BaudRate);
commProxy.SetDataStorage(dataStorage); commProxy.SetDataStorage(dataStorage);


//咖博士咖啡机制作 //咖博士咖啡机制作
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_MakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
drinksOrder.CommCmd = DrCoffeeCommCmd.饮品制作指令;
drinksOrder.DrinksCode = ((DRCoffee_MakeCoffeeEvent)@event).DrinkCode;
commProxy.SendData(DrCoffee.Packe(drinksOrder));
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_MakeCoffeeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
drinksOrder.CommCmd = DrCoffeeCommCmd.饮品制作指令;
drinksOrder.DrinksCode = ((DRCoffee_MakeCoffeeEvent)@event).DrinkCode;
commProxy.SendData(DrCoffee.Packe(drinksOrder));
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});


//咖博士咖啡机取消制作咖啡 //咖博士咖啡机取消制作咖啡
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CancelMakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
drinksOrder.CommCmd = DrCoffeeCommCmd.取消应用指令;
drinksOrder.DrinksCode = 0;
commProxy.SendData(DrCoffee.Packe(drinksOrder));
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CancelMakeCoffeeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
drinksOrder.CommCmd = DrCoffeeCommCmd.取消应用指令;
drinksOrder.DrinksCode = 0;
commProxy.SendData(DrCoffee.Packe(drinksOrder));
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});


//咖博士咖啡机模式设置 //咖博士咖啡机模式设置
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeeCommCmdEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
drinksOrder.CommCmd = ((DRCoffee_CoffeeCommCmdEvent)@event).CommCmd;
commProxy.SendData(DrCoffee.Packe(drinksOrder));
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeeCommCmdEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
drinksOrder.CommCmd = ((DRCoffee_CoffeeCommCmdEvent)@event).CommCmd;
commProxy.SendData(DrCoffee.Packe(drinksOrder));
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
InitStatus(); InitStatus();
//测试 //测试
Start(); Start();
} }


public override void WriteData(string address, object value)
{
}
} }
} }

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

@@ -110,6 +110,17 @@ namespace BPASmartClient.Device


#endregion #endregion


public void WriteControl(string address, object value)
{
if (peripherals != null)
{
for (int i = 0; i < peripherals.Count; i++)
{
peripherals.ElementAt(i).WriteData(address, value);
}
}
}

/// <summary> /// <summary>
/// 设备过程日志显示 /// 设备过程日志显示
/// </summary> /// </summary>


+ 74
- 70
BPASmartClient.GSIceCream/IceCreamMachine.cs View File

@@ -14,8 +14,8 @@ using static BPASmartClient.GSIceCream.MessageDefine;


namespace BPASmartClient.GSIceCream namespace BPASmartClient.GSIceCream
{ {
public class IceCreamMachine :BasePeripheral
{
public class IceCreamMachine : BasePeripheral
{
//通讯代理 //通讯代理
SerialPortClient commProxy = null; SerialPortClient commProxy = null;
//是否下发指令,主线程等待 //是否下发指令,主线程等待
@@ -179,13 +179,13 @@ namespace BPASmartClient.GSIceCream
IsConnected = OnLine; IsConnected = OnLine;
status["IceCreamIsConnected"] = OnLine; status["IceCreamIsConnected"] = OnLine;
status["IceCreamCurrentMode"] = heartUpMsg.MS; status["IceCreamCurrentMode"] = heartUpMsg.MS;
status["IceCreamYLWD"] = BitConverter.ToInt16(new byte[] { heartUpMsg.YLWD_L,heartUpMsg.YLWD_H },0);
status["IceCreamHQWD"] = BitConverter.ToInt16(new byte[] { heartUpMsg.HQWD_L,heartUpMsg.HQWD_H },0);
status["IceCreamHJWD"] = BitConverter.ToInt16(new byte[] { heartUpMsg.HJWD_L,heartUpMsg.HJWD_H },0);
status["IceCreamYLWD"] = BitConverter.ToInt16(new byte[] { heartUpMsg.YLWD_L, heartUpMsg.YLWD_H }, 0);
status["IceCreamHQWD"] = BitConverter.ToInt16(new byte[] { heartUpMsg.HQWD_L, heartUpMsg.HQWD_H }, 0);
status["IceCreamHJWD"] = BitConverter.ToInt16(new byte[] { heartUpMsg.HJWD_L, heartUpMsg.HJWD_H }, 0);
status["IceCreamDL"] = BitConverter.ToInt16(new byte[] { heartUpMsg.DL_L, heartUpMsg.DL_H }, 0); status["IceCreamDL"] = BitConverter.ToInt16(new byte[] { heartUpMsg.DL_L, heartUpMsg.DL_H }, 0);
status["IceCreamFault"] = (MORKI_FAULT)BitConverter.ToInt16(new byte[] { heartUpMsg.GZ_L,heartUpMsg.GZ_H },0);
status["IceCreamFault"] = (MORKI_FAULT)BitConverter.ToInt16(new byte[] { heartUpMsg.GZ_L, heartUpMsg.GZ_H }, 0);
status["IceCreamCXB"] = heartUpMsg.CXB; status["IceCreamCXB"] = heartUpMsg.CXB;
status["IceCreamDLCompleted"] = (heartUpMsg.DLTJ >> 4 & 1) == 1;
status["IceCreamDLCompleted"] = (heartUpMsg.DLTJ >> 4 & 1) == 1;


if (RTrig.GetInstance("打料完成检测").Start((bool)status["IceCreamDLCompleted"])) if (RTrig.GetInstance("打料完成检测").Start((bool)status["IceCreamDLCompleted"]))
{ {
@@ -201,7 +201,7 @@ namespace BPASmartClient.GSIceCream


private void ProcessModeUp(ICMSG_MODE_UP modeUpMsg) private void ProcessModeUp(ICMSG_MODE_UP modeUpMsg)
{ {
MessageLog.GetInstance.Show(string.Format("模式返回为:{0}",modeUpMsg.Mode));
MessageLog.GetInstance.Show(string.Format("模式返回为:{0}", modeUpMsg.Mode));
} }


public void ProcessMsg(byte[] data) public void ProcessMsg(byte[] data)
@@ -269,79 +269,83 @@ namespace BPASmartClient.GSIceCream
}); });


//广深冰淇淋机打料 //广深冰淇淋机打料
EventBus.EventBus.GetInstance().Subscribe<GSIceCream_DischargeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
if ((MORKI_FAULT)status["IceCreamFault"] != MORKI_FAULT.未发生故障)
{
MessageLog.GetInstance.Show(string.Format("当前存在故障[{0}%],不允许制作",(MORKI_FAULT)status["IceCreamFault"]));
new GSIceCream_EndCookEvent() { DeviceId = DeviceId,Status = false }.Publish();
callBack?.Invoke(false);
return;
}
if ((byte)status["IceCreamCXB"] <= 86)
{
MessageLog.GetInstance.Show(string.Format("当前成型比[{0}%],低于86%,不允许制作",(byte)status["IceCreamCXB"]));
new GSIceCream_EndCookEvent() { DeviceId = DeviceId,Status = false }.Publish();
callBack?.Invoke(false );
return;
}
EventBus.EventBus.GetInstance().Subscribe<GSIceCream_DischargeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
if ((MORKI_FAULT)status["IceCreamFault"] != MORKI_FAULT.未发生故障)
{
MessageLog.GetInstance.Show(string.Format("当前存在故障[{0}%],不允许制作", (MORKI_FAULT)status["IceCreamFault"]));
new GSIceCream_EndCookEvent() { DeviceId = DeviceId, Status = false }.Publish();
callBack?.Invoke(false);
return;
}
if ((byte)status["IceCreamCXB"] <= 86)
{
MessageLog.GetInstance.Show(string.Format("当前成型比[{0}%],低于86%,不允许制作", (byte)status["IceCreamCXB"]));
new GSIceCream_EndCookEvent() { DeviceId = DeviceId, Status = false }.Publish();
callBack?.Invoke(false);
return;
}


bool modeRight = (MORKI_MODE)status["IceCreamCurrentMode"] == MORKI_MODE.制冷模式;
bool modeRight = (MORKI_MODE)status["IceCreamCurrentMode"] == MORKI_MODE.制冷模式;


if (!modeRight)
{
free = true;
Thread.Sleep(200);
if (!modeRight)
{
free = true;
Thread.Sleep(200);


var temp = IcPack.StructureToByte(ICMSG_MODE_DW.Build(MORKI_MODE.制冷模式));
commProxy.SendData(temp);
var temp = IcPack.StructureToByte(ICMSG_MODE_DW.Build(MORKI_MODE.制冷模式));
commProxy.SendData(temp);


Thread.Sleep(200);
free = false;
MessageLog.GetInstance.Show(string.Format("出料操作->设置模式[{0}]",MORKI_MODE.制冷模式));
Thread.Sleep(200);
free = false;
MessageLog.GetInstance.Show(string.Format("出料操作->设置模式[{0}]", MORKI_MODE.制冷模式));


DateTime freeTime = DateTime.Now.AddSeconds(5);
while (DateTime.Now < freeTime)
{
Thread.Sleep(10);
modeRight = (MORKI_MODE)status["IceCreamCurrentMode"] == MORKI_MODE.制冷模式;
if (modeRight)
break;
}
}
DateTime freeTime = DateTime.Now.AddSeconds(5);
while (DateTime.Now < freeTime)
{
Thread.Sleep(10);
modeRight = (MORKI_MODE)status["IceCreamCurrentMode"] == MORKI_MODE.制冷模式;
if (modeRight)
break;
}
}


if (modeRight)
{
free = true;
Thread.Sleep(200);
var data = IcPack.StructureToByte(ICMSG_MODE_DW.Build(MORKI_MODE.打料));
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
new GSIceCream_EndCookEvent() { DeviceId = DeviceId,Status =true}.Publish();
MessageLog.GetInstance.Show(string.Format("出料操作->设置模式[{0}]",MORKI_MODE.打料));
callBack?.Invoke(true);
}
else
{
MessageLog.GetInstance.Show(string.Format("出料操作->模式切换失败,当前模式[{0}],不允许出料",(MORKI_MODE)status["IceCreamCurrentMode"]));
new GSIceCream_EndCookEvent() { DeviceId = DeviceId,Status = false }.Publish();
callBack?.Invoke(false);
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.GSIceCream 中引发错误,IceCreamMachine 类,描述:[{ex.Message}]");
callBack?.Invoke(false);
}
});
if (modeRight)
{
free = true;
Thread.Sleep(200);
var data = IcPack.StructureToByte(ICMSG_MODE_DW.Build(MORKI_MODE.打料));
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
new GSIceCream_EndCookEvent() { DeviceId = DeviceId, Status = true }.Publish();
MessageLog.GetInstance.Show(string.Format("出料操作->设置模式[{0}]", MORKI_MODE.打料));
callBack?.Invoke(true);
}
else
{
MessageLog.GetInstance.Show(string.Format("出料操作->模式切换失败,当前模式[{0}],不允许出料", (MORKI_MODE)status["IceCreamCurrentMode"]));
new GSIceCream_EndCookEvent() { DeviceId = DeviceId, Status = false }.Publish();
callBack?.Invoke(false);
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.GSIceCream 中引发错误,IceCreamMachine 类,描述:[{ex.Message}]");
callBack?.Invoke(false);
}
});
InitStatus(); InitStatus();
//测试用 //测试用
Start(); Start();
MessageLog.GetInstance.Show("冰淇淋机器初始化完成"); MessageLog.GetInstance.Show("冰淇淋机器初始化完成");
} }

public override void WriteData(string address, object value)
{
}
} }


} }

+ 107
- 105
BPASmartClient.KLMCoffee/CoffeeMachine.cs View File

@@ -19,7 +19,7 @@ namespace BPASmartClient.KLMCoffee
/// <summary> /// <summary>
/// 伽乐美咖啡机 /// 伽乐美咖啡机
/// </summary> /// </summary>
public class CoffeeMachine :BasePeripheral
public class CoffeeMachine : BasePeripheral
{ {
//通讯代理 //通讯代理
SerialPortClient commProxy = null; SerialPortClient commProxy = null;
@@ -92,12 +92,12 @@ namespace BPASmartClient.KLMCoffee
commProxy.SendData(cmdAsk); commProxy.SendData(cmdAsk);
} }
Thread.Sleep(200); Thread.Sleep(200);
}),"咖啡机询问线程");
}), "咖啡机询问线程");


ThreadManage.GetInstance().StartLong(new Action(() => ThreadManage.GetInstance().StartLong(new Action(() =>
{ {
ResolveMsg(); ResolveMsg();
}),"咖啡机解析线程");
}), "咖啡机解析线程");
} }


private void ResolveMsg() private void ResolveMsg()
@@ -117,7 +117,7 @@ namespace BPASmartClient.KLMCoffee
{ {
temp.Add(dataStorage.GetData()); temp.Add(dataStorage.GetData());
} }
List<byte> vs = new List<byte>() { temp[temp.Count - 4],temp[temp.Count - 3],temp[temp.Count - 2],temp[temp.Count - 1] };
List<byte> vs = new List<byte>() { temp[temp.Count - 4], temp[temp.Count - 3], temp[temp.Count - 2], temp[temp.Count - 1] };


//帧尾 //帧尾
if (Encoding.ASCII.GetString(vs.ToArray()).ToLower() == "\\r\\n" || Encoding.ASCII.GetString(vs.ToArray()).ToLower() == "\r\n") if (Encoding.ASCII.GetString(vs.ToArray()).ToLower() == "\\r\\n" || Encoding.ASCII.GetString(vs.ToArray()).ToLower() == "\r\n")
@@ -146,9 +146,9 @@ namespace BPASmartClient.KLMCoffee
status["Warning"] = systemStatus.faultMessage.dataFault(); status["Warning"] = systemStatus.faultMessage.dataFault();
status["Keep"] = systemStatus.upkeepMessage; status["Keep"] = systemStatus.upkeepMessage;
if (systemStatus.faultMessage.IsFault() || systemStatus.upkeepMessage.IsUpkeep()) if (systemStatus.faultMessage.IsFault() || systemStatus.upkeepMessage.IsUpkeep())
IsWork=false;
IsWork = false;
else else
IsWork=true;
IsWork = true;
} }


} }
@@ -164,128 +164,130 @@ namespace BPASmartClient.KLMCoffee
status["drinkType"] = DrinkType.意式; status["drinkType"] = DrinkType.意式;
status["AppStatus"] = TaskIndex.无任务; status["AppStatus"] = TaskIndex.无任务;
status["progress"] = 0; status["progress"] = 0;
status["Warning"] = new FaultMessage(0x00,0x00).dataFault();
status["Warning"] = new FaultMessage(0x00, 0x00).dataFault();
status["Keep"] = new UpkeepMessage(0x00).dataFault(); status["Keep"] = new UpkeepMessage(0x00).dataFault();


} }


public override void Init() public override void Init()
{ {
commProxy = new SerialPortClient(PortName,(BaudRates)Enum.Parse(typeof(BaudRates),BaudRate));
commProxy = new SerialPortClient(PortName, (BaudRates)Enum.Parse(typeof(BaudRates), BaudRate));
commProxy.SetDataStorage(dataStorage); commProxy.SetDataStorage(dataStorage);


//伽乐美咖啡机制作 //伽乐美咖啡机制作
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_MakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data=command.ReturnsCommandData(K95CommandEnum.配方咖啡制作.GetString(),new RecipeModel().Packe(((KLMCoffee_MakeCoffeeEvent)@event).DrinkCode));
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_MakeCoffeeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsCommandData(K95CommandEnum.配方咖啡制作.GetString(), new RecipeModel().Packe(((KLMCoffee_MakeCoffeeEvent)@event).DrinkCode));
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});


//伽乐美咖啡机取消制作咖啡 //伽乐美咖啡机取消制作咖啡
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_CancelMakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsCancelMake();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_CancelMakeCoffeeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsCancelMake();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});


//伽乐美咖啡机清洗冲泡器 //伽乐美咖啡机清洗冲泡器
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_WashCPJEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsWashCPJ();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_WashCPJEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsWashCPJ();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});


//伽乐美咖啡机放杯确认 //伽乐美咖啡机放杯确认
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_CupIsOKEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsCupIsOK();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_CupIsOKEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsCupIsOK();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});




//伽乐美咖啡机清洗奶沫器 //伽乐美咖啡机清洗奶沫器
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_WashNMJEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsWashNMJ();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_WashNMJEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsWashNMJ();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});




//伽乐美咖啡机清洗奶沫器确认 //伽乐美咖啡机清洗奶沫器确认
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_WashNMJIsOKEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsWashNMJIsOK();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<KLMCoffee_WashNMJIsOKEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
free = true;
Thread.Sleep(200);
byte[] data = command.ReturnsWashNMJIsOK();
commProxy.SendData(data);
Thread.Sleep(200);
free = false;
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.KLMCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]");
}
});
InitStatus(); InitStatus();
} }



public override void WriteData(string address, object value)
{
}
} }
} }

+ 8
- 6
BPASmartClient.Lebai/LebaiRobot.cs View File

@@ -19,7 +19,7 @@ using BPASmartClient.Model.乐白机器人;


namespace BPASmartClient.Lebai namespace BPASmartClient.Lebai
{ {
public class LebaiRobot: BasePeripheral
public class LebaiRobot : BasePeripheral
{ {


/// <summary> /// <summary>
@@ -51,7 +51,7 @@ namespace BPASmartClient.Lebai
if (LebaiHelper.GetInstance().robotData != null) status["RobotMode"] = LebaiHelper.GetInstance().robotData.RobotMode.Mode; if (LebaiHelper.GetInstance().robotData != null) status["RobotMode"] = LebaiHelper.GetInstance().robotData.RobotMode.Mode;
LebaiHelper.GetInstance().GetRobotModeStatus(); LebaiHelper.GetInstance().GetRobotModeStatus();
Thread.Sleep(10); Thread.Sleep(10);
},"获取乐白机器人数据");
}, "获取乐白机器人数据");


} }


@@ -62,7 +62,7 @@ namespace BPASmartClient.Lebai


public override void Init() public override void Init()
{ {
EventBus.EventBus.GetInstance().Subscribe<Demo_MakeCoffeeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack )
EventBus.EventBus.GetInstance().Subscribe<Demo_MakeCoffeeEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{ {


}); });
@@ -90,7 +90,7 @@ namespace BPASmartClient.Lebai
if (@event == null) return; if (@event == null) return;
if (@event is LebaiRobot_SetValueEvent SetValueEvent) if (@event is LebaiRobot_SetValueEvent SetValueEvent)
{ {
LebaiHelper.GetInstance().SetValue(SetValueEvent.RobotSetValue);
LebaiHelper.GetInstance().SetValue(SetValueEvent.RobotSetValue);
} }
}); });
//控制机器人 //控制机器人
@@ -116,7 +116,7 @@ namespace BPASmartClient.Lebai
default: default:
break; break;
} }
} }
}); });
//选择机器人场景 //选择机器人场景
@@ -134,6 +134,8 @@ namespace BPASmartClient.Lebai
MessageLog.GetInstance.Show("乐白机器人初始化完成"); MessageLog.GetInstance.Show("乐白机器人初始化完成");
} }


public override void WriteData(string address, object value)
{
}
} }
} }

+ 7
- 1
BPASmartClient.MORKSM.BK.PLC/PLCMachine.cs View File

@@ -48,7 +48,7 @@ namespace BPASmartClient.PLC
{ {
if (@event == null) return; if (@event == null) return;
var par = @event as WriteModel; var par = @event as WriteModel;
//M32.7地址复位
modbusTcp.Write(par?.Address, par?.Value); modbusTcp.Write(par?.Address, par?.Value);
}); });
} }
@@ -63,6 +63,12 @@ namespace BPASmartClient.PLC


} }


public override void WriteData(string address, object value)
{
if (address != null && value != null)
modbusTcp.Write(address, value);
}

protected override void InitStatus() protected override void InitStatus()
{ {




+ 41
- 14
BPASmartClient.MorkS/Control_Morks.cs View File

@@ -17,6 +17,7 @@ using System.Reflection;
using BPASmartClient.MorkS.Model; using BPASmartClient.MorkS.Model;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using BPASmartClient.MorkS.ViewModel; using BPASmartClient.MorkS.ViewModel;
using BPASmartClient.Business;


namespace BPASmartClient.MorkS namespace BPASmartClient.MorkS
{ {
@@ -287,8 +288,6 @@ namespace BPASmartClient.MorkS
else else
IsHealth = true; IsHealth = true;


//if (mORKS.AllowRun)
//{
TakeBowlTask(); TakeBowlTask();


TakeNoodleTask(); TakeNoodleTask();
@@ -298,7 +297,15 @@ namespace BPASmartClient.MorkS
SingleDetect(); SingleDetect();


TurntableControl(); TurntableControl();
//}

var data = new List<bool>();
for (int i = 0; i < Json<MorksPar>.Data.parSets.Count; i++)
{
data.Add(Json<MorksPar>.Data.parSets.ElementAt(i).IsShield);
}

WriteControl("M260.0", data.ToArray());

} }


private void BowlControl(OrderLocInfo orderLocInfo) private void BowlControl(OrderLocInfo orderLocInfo)
@@ -400,6 +407,11 @@ namespace BPASmartClient.MorkS
{ {
if (mORKS.TurntableFeedbackloc != loc && !mORKS.TurntableLocLists.Contains(loc)) if (mORKS.TurntableFeedbackloc != loc && !mORKS.TurntableLocLists.Contains(loc))
{ {
if (!mORKS.TurntableLowerLimit)
{
WriteData("M32.7", false);
DeviceProcessLogShow($"执行了转台启动互锁信号复位");
}
TurntableStart(loc); TurntableStart(loc);
DeviceProcessLogShow($"没有物料检测的启动转台控制,转台位置:[{loc}]"); DeviceProcessLogShow($"没有物料检测的启动转台控制,转台位置:[{loc}]");
break; break;
@@ -414,6 +426,15 @@ namespace BPASmartClient.MorkS
} }
} }


//if (DelayRTrig.GetInstance("互锁信号复位").Start(!mORKS.TurntableLowerLimit && mORKS.TurntableMoveInPlace, 2))
//{
// if (!mORKS.TurntableLowerLimit)
// {
// WriteData("M32.7", false);
// DeviceProcessLogShow($"执行了转台启动互锁信号复位");
// }
//}

//补料中检测 //补料中检测
if (RTrig.GetInstance("mORKS.Feeding").Start(mORKS.Feeding)) if (RTrig.GetInstance("mORKS.Feeding").Start(mORKS.Feeding))
{ {
@@ -488,6 +509,17 @@ namespace BPASmartClient.MorkS
RobotOutMeal(); RobotOutMeal();
CookNoodleStatusReset((ushort)(loc + 1)); CookNoodleStatusReset((ushort)(loc + 1));
ResetAllowFallNoodle(); ResetAllowFallNoodle();


//新增,待测试
//if (mORKS.RbOutMealComplete)
//{
// ResetCookComplete();
// mORKS.CookCompleteFlatBit = false;
// DeviceProcessLogShow("取餐过程中复位出餐完成信号");
//}


mORKS.OutMealId = mORKS.IngredientsCompleteId; mORKS.OutMealId = mORKS.IngredientsCompleteId;
mORKS.IngredientsCompleteId = string.Empty; mORKS.IngredientsCompleteId = string.Empty;
mORKS.CookNodelId[loc] = string.Empty; mORKS.CookNodelId[loc] = string.Empty;
@@ -522,7 +554,7 @@ namespace BPASmartClient.MorkS
} }


//取餐完成逻辑处理 //取餐完成逻辑处理
if (Delay.GetInstance("CompleteChange1").Start(mORKS.CookCompleteFlatBit && !mORKS.TakeMealDetect, 2))
if (Delay.GetInstance("CompleteChange1").Start(mORKS.CookCompleteFlatBit && !mORKS.TakeMealDetect, 1))
{ {
OrderChange(mORKS.OutMealId, ORDER_STATUS.COMPLETED_TAKE); OrderChange(mORKS.OutMealId, ORDER_STATUS.COMPLETED_TAKE);
DeviceProcessLogShow($"订单【{mORKS.OutMealId}】取餐完成"); DeviceProcessLogShow($"订单【{mORKS.OutMealId}】取餐完成");
@@ -531,15 +563,6 @@ namespace BPASmartClient.MorkS
mORKS.OutMealId = string.Empty; mORKS.OutMealId = string.Empty;
} }


//if (DelayRTrig.GetInstance("CompleteChange1").Start(mORKS.CookCompleteFlatBit && !mORKS.TakeMealDetect, 2))
//{
// OrderChange(mORKS.OutMealId, ORDER_STATUS.COMPLETED_TAKE);
// DeviceProcessLogShow($"订单【{mORKS.OutMealId}】取餐完成");
// ResetCookComplete();
// mORKS.CookCompleteFlatBit = false;
// mORKS.OutMealId = string.Empty;
//}

//机器人取面完成信号检测 //机器人取面完成信号检测
if (RTrig.GetInstance("TakeNoodleComplete").Start(mORKS.RbTakeNoodleComplete)) if (RTrig.GetInstance("TakeNoodleComplete").Start(mORKS.RbTakeNoodleComplete))
{ {
@@ -552,7 +575,11 @@ namespace BPASmartClient.MorkS


int OutMealRequstCount = mORKS.CookNoodlesComplete.Where(p => p == true).ToList().Count; int OutMealRequstCount = mORKS.CookNoodlesComplete.Where(p => p == true).ToList().Count;
int mlCount = mORKS.NoodleCookerStatus.Where(p => p == true).ToList().Count; int mlCount = mORKS.NoodleCookerStatus.Where(p => p == true).ToList().Count;
mORKS.RobotTaskInterlock = OutMealRequstCount > 0 && mORKS.AllowFallNoodle && (mlCount >= 2 || mORKS.RBTakeNoodleTask.Count == 0);

mORKS.PriorityJudgment = Delay.GetInstance("取餐优先级判断").Start(mORKS.TurntableLocLists.Count > 0 && !mORKS.TurntableLowerLimit, 4);
mORKS.RobotTaskInterlock = OutMealRequstCount > 0 && mORKS.AllowFallNoodle && (mlCount >= 2 || mORKS.RBTakeNoodleTask.Count == 0 || mORKS.PriorityJudgment);


} }






+ 7
- 1
BPASmartClient.MorkS/GVL_MORKS.cs View File

@@ -42,7 +42,13 @@ namespace BPASmartClient.MorkS
public bool AllowRun { get; set; } public bool AllowRun { get; set; }


/// <summary> /// <summary>
/// //机器人任务互锁信号
/// 优先级判断
/// </summary>
[VariableMonitor("优先级判断条件")]
public bool PriorityJudgment { get; set; }

/// <summary>
/// 机器人任务互锁信号,false:取面,true:出餐
/// </summary> /// </summary>
//[Circuit(new string[] { "机器人取面", "出面控制" }, "机器人互锁", new bool[] { true, false })] //[Circuit(new string[] { "机器人取面", "出面控制" }, "机器人互锁", new bool[] { true, false })]
[VariableMonitor("机器人任务互锁信号")] [VariableMonitor("机器人任务互锁信号")]


+ 3
- 1
BPASmartClient.Peripheral/BasePeripheral.cs View File

@@ -47,16 +47,18 @@ namespace BPASmartClient.Peripheral
return null; return null;
} }



public abstract void Start(); public abstract void Start();


public abstract void Stop(); public abstract void Stop();


public abstract void Init(); public abstract void Init();


public abstract void WriteData(string address, object value);

public ConcurrentDictionary<string, object> GetAllStatus() public ConcurrentDictionary<string, object> GetAllStatus()
{ {
return status; return status;
} }

} }
} }

+ 2
- 0
BPASmartClient.Peripheral/IPeripheral.cs View File

@@ -53,6 +53,8 @@ namespace BPASmartClient.Peripheral
/// </summary> /// </summary>
ConcurrentDictionary<string, object> status { get; set; } ConcurrentDictionary<string, object> status { get; set; }


void WriteData(string address, object value);

/// <summary> /// <summary>
/// 初始化 /// 初始化
/// </summary> /// </summary>


+ 153
- 149
BPASmartClient.SCChip/ICChipMachine.cs View File

@@ -14,7 +14,7 @@ using static BPASmartClient.EventBus.EventBus;


namespace BPASmartClient.SCChip namespace BPASmartClient.SCChip
{ {
public class ICChipMachine :BasePeripheral
public class ICChipMachine : BasePeripheral
{ {
//通讯代理 //通讯代理
SerialPortClient commProxy = null; SerialPortClient commProxy = null;
@@ -80,7 +80,7 @@ namespace BPASmartClient.SCChip
ThreadManage.GetInstance().StartLong(new Action(() => ThreadManage.GetInstance().StartLong(new Action(() =>
{ {
ResolveMsg(); ResolveMsg();
}),"单片机解析线程");
}), "单片机解析线程");
} }


private void ResolveMsg() private void ResolveMsg()
@@ -120,8 +120,8 @@ namespace BPASmartClient.SCChip
IntPtr allocIntPtr = Marshal.AllocHGlobal(size); IntPtr allocIntPtr = Marshal.AllocHGlobal(size);
try try
{ {
Marshal.Copy(dataBuffer,0,allocIntPtr,size);
structure = (ICChipPackage)Marshal.PtrToStructure(allocIntPtr,typeof(ICChipPackage));
Marshal.Copy(dataBuffer, 0, allocIntPtr, size);
structure = (ICChipPackage)Marshal.PtrToStructure(allocIntPtr, typeof(ICChipPackage));
} }
finally finally
{ {
@@ -141,8 +141,8 @@ namespace BPASmartClient.SCChip
IntPtr bufferIntPtr = Marshal.AllocHGlobal(size); IntPtr bufferIntPtr = Marshal.AllocHGlobal(size);
try try
{ {
Marshal.StructureToPtr(structure,bufferIntPtr,true);
Marshal.Copy(bufferIntPtr,buffer,0,size);
Marshal.StructureToPtr(structure, bufferIntPtr, true);
Marshal.Copy(bufferIntPtr, buffer, 0, size);
} }
finally finally
{ {
@@ -201,8 +201,8 @@ namespace BPASmartClient.SCChip
} }
break; break;
} }
if(!OnLine) IsWork = false;
else IsWork = true;
if (!OnLine) IsWork = false;
else IsWork = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -224,163 +224,167 @@ namespace BPASmartClient.SCChip


public override void Init() public override void Init()
{ {
commProxy = new SerialPortClient(communicationPar.SerialPort,(BaudRates)communicationPar.BaudRate);
commProxy = new SerialPortClient(communicationPar.SerialPort, (BaudRates)communicationPar.BaudRate);
commProxy.SetDataStorage(dataStorage); commProxy.SetDataStorage(dataStorage);


//STM32F103RCT6单片机下杯 //STM32F103RCT6单片机下杯
EventBus.EventBus.GetInstance().Subscribe<SCChip_TakeCupEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
switch ((@event as SCChip_TakeCupEvent).Cup)
{
case IC_CUP.CUP_ICECREAM:
status["CompletedTake_CPU_CUP_ICECREAM"] = false;
break;
case IC_CUP.CUP_COFFEE:
status["CompletedTake_CPU_CUP_COFFEE"] = false;
break;
}
package.Cmd = IC_CMD.TAKE_CUP;
package.Value = (byte)(@event as SCChip_TakeCupEvent).Cup;
commProxy.SendData(StructureToByte(package));
EventBus.EventBus.GetInstance().Subscribe<SCChip_TakeCupEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
switch ((@event as SCChip_TakeCupEvent).Cup)
{
case IC_CUP.CUP_ICECREAM:
status["CompletedTake_CPU_CUP_ICECREAM"] = false;
break;
case IC_CUP.CUP_COFFEE:
status["CompletedTake_CPU_CUP_COFFEE"] = false;
break;
}
package.Cmd = IC_CMD.TAKE_CUP;
package.Value = (byte)(@event as SCChip_TakeCupEvent).Cup;
commProxy.SendData(StructureToByte(package));


bool wait = true;
var waitTimeout = DateTime.Now.AddSeconds(3);
while (wait)
{
wait = DateTime.Now < waitTimeout;
if (wait)
{
switch ((@event as SCChip_TakeCupEvent).Cup)
{
case IC_CUP.CUP_ICECREAM:
wait = !(bool)status["CompletedTake_CPU_CUP_ICECREAM"];
break;
case IC_CUP.CUP_COFFEE:
wait = !(bool)status["CompletedTake_CPU_CUP_COFFEE"];
break;
}
}
Thread.Sleep(10);
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});
bool wait = true;
var waitTimeout = DateTime.Now.AddSeconds(3);
while (wait)
{
wait = DateTime.Now < waitTimeout;
if (wait)
{
switch ((@event as SCChip_TakeCupEvent).Cup)
{
case IC_CUP.CUP_ICECREAM:
wait = !(bool)status["CompletedTake_CPU_CUP_ICECREAM"];
break;
case IC_CUP.CUP_COFFEE:
wait = !(bool)status["CompletedTake_CPU_CUP_COFFEE"];
break;
}
}
Thread.Sleep(10);
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});


//STM32F103RCT6单片机舵机打料 //STM32F103RCT6单片机舵机打料
EventBus.EventBus.GetInstance().Subscribe<SCChip_MakeIceCreamEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
switch ((IC_SE)(@event as SCChip_MakeIceCreamEvent).SteeringEngine)
{
case IC_SE.SE_1:
status["CompletedOpen_SE_1"] = false;
break;
case IC_SE.SE_2:
status["CompletedOpen_SE_2"] = false;
break;
case IC_SE.SE_3:
status["CompletedOpen_SE_3"] = false;
break;
}
package.Cmd = IC_CMD.OPEN_SE;
package.Value = (byte)(@event as SCChip_MakeIceCreamEvent).SteeringEngine;
commProxy.SendData(StructureToByte(package));
EventBus.EventBus.GetInstance().Subscribe<SCChip_MakeIceCreamEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
switch ((IC_SE)(@event as SCChip_MakeIceCreamEvent).SteeringEngine)
{
case IC_SE.SE_1:
status["CompletedOpen_SE_1"] = false;
break;
case IC_SE.SE_2:
status["CompletedOpen_SE_2"] = false;
break;
case IC_SE.SE_3:
status["CompletedOpen_SE_3"] = false;
break;
}
package.Cmd = IC_CMD.OPEN_SE;
package.Value = (byte)(@event as SCChip_MakeIceCreamEvent).SteeringEngine;
commProxy.SendData(StructureToByte(package));


bool wait = true;
DateTime waitTimeout = DateTime.Now.AddSeconds(3);
while (wait)
{
wait = DateTime.Now < waitTimeout;
if (wait)
{
switch ((IC_SE)(@event as SCChip_MakeIceCreamEvent).SteeringEngine)
{
case IC_SE.SE_1:
wait = !(bool)status["CompletedOpen_SE_1"];
break;
case IC_SE.SE_2:
wait = !(bool)status["CompletedOpen_SE_2"];
break;
case IC_SE.SE_3:
wait = !(bool)status["CompletedOpen_SE_3"];
break;
}
}
Thread.Sleep(10);
}
Thread.Sleep(2000);
package.Cmd = IC_CMD.CLOSE_SE;
package.Value = (byte)(@event as SCChip_MakeIceCreamEvent).SteeringEngine;
commProxy.SendData(StructureToByte(package));
bool wait = true;
DateTime waitTimeout = DateTime.Now.AddSeconds(3);
while (wait)
{
wait = DateTime.Now < waitTimeout;
if (wait)
{
switch ((IC_SE)(@event as SCChip_MakeIceCreamEvent).SteeringEngine)
{
case IC_SE.SE_1:
wait = !(bool)status["CompletedOpen_SE_1"];
break;
case IC_SE.SE_2:
wait = !(bool)status["CompletedOpen_SE_2"];
break;
case IC_SE.SE_3:
wait = !(bool)status["CompletedOpen_SE_3"];
break;
}
}
Thread.Sleep(10);
}
Thread.Sleep(2000);
package.Cmd = IC_CMD.CLOSE_SE;
package.Value = (byte)(@event as SCChip_MakeIceCreamEvent).SteeringEngine;
commProxy.SendData(StructureToByte(package));


wait = true;
waitTimeout = DateTime.Now.AddSeconds(3);
while (wait)
{
wait = DateTime.Now < waitTimeout;
if (wait)
{
switch ((IC_SE)(@event as SCChip_MakeIceCreamEvent).SteeringEngine)
{
case IC_SE.SE_1:
wait = !(bool)status["CompletedClose_SE_1"];
break;
case IC_SE.SE_2:
wait = !(bool)status["CompletedClose_SE_2"];
break;
case IC_SE.SE_3:
wait = !(bool)status["CompletedClose_SE_3"];
break;
}
}
Thread.Sleep(10);
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});
wait = true;
waitTimeout = DateTime.Now.AddSeconds(3);
while (wait)
{
wait = DateTime.Now < waitTimeout;
if (wait)
{
switch ((IC_SE)(@event as SCChip_MakeIceCreamEvent).SteeringEngine)
{
case IC_SE.SE_1:
wait = !(bool)status["CompletedClose_SE_1"];
break;
case IC_SE.SE_2:
wait = !(bool)status["CompletedClose_SE_2"];
break;
case IC_SE.SE_3:
wait = !(bool)status["CompletedClose_SE_3"];
break;
}
}
Thread.Sleep(10);
}
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});


//STM32F103RCT6单片机舵机打开或者关闭 //STM32F103RCT6单片机舵机打开或者关闭
EventBus.EventBus.GetInstance().Subscribe<SCChip_SESwitchCreamEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
package.Cmd = (@event as SCChip_SESwitchCreamEvent).IsOpen ? IC_CMD.OPEN_SE : IC_CMD.CLOSE_SE;
package.Value = (byte)(@event as SCChip_SESwitchCreamEvent).SteeringEngine;
commProxy.SendData(StructureToByte(package));
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<SCChip_SESwitchCreamEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
package.Cmd = (@event as SCChip_SESwitchCreamEvent).IsOpen ? IC_CMD.OPEN_SE : IC_CMD.CLOSE_SE;
package.Value = (byte)(@event as SCChip_SESwitchCreamEvent).SteeringEngine;
commProxy.SendData(StructureToByte(package));
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});


//STM32F103RCT6单片机控制冰淇淋机器转 //STM32F103RCT6单片机控制冰淇淋机器转
EventBus.EventBus.GetInstance().Subscribe<SCChip_RotorSwitchEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack)
{
try
{
package.Cmd = IC_CMD.ROTOR;
package.Value = (@event as SCChip_RotorSwitchEvent).TurnOn ? (byte)IC_ROTOR.OPEN_ROTOR : (byte)IC_ROTOR.CLOSE_ROTOR;
commProxy.SendData(StructureToByte(package));
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});
EventBus.EventBus.GetInstance().Subscribe<SCChip_RotorSwitchEvent>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
try
{
package.Cmd = IC_CMD.ROTOR;
package.Value = (@event as SCChip_RotorSwitchEvent).TurnOn ? (byte)IC_ROTOR.OPEN_ROTOR : (byte)IC_ROTOR.CLOSE_ROTOR;
commProxy.SendData(StructureToByte(package));
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx($"BPASmartClient.SCChip 中引发错误,ICChipMachine 类,描述:[{ex.Message}]");
}
});
InitStatus(); InitStatus();
//测试 //测试
Start(); Start();
} }

public override void WriteData(string address, object value)
{
}
} }


} }

Loading…
Cancel
Save