diff --git a/Rs.SkyLine/Commom/Scheduling.cs b/Rs.SkyLine/Commom/Scheduling.cs index c8ee1ca..ea16560 100644 --- a/Rs.SkyLine/Commom/Scheduling.cs +++ b/Rs.SkyLine/Commom/Scheduling.cs @@ -1145,6 +1145,10 @@ namespace Rs.MotionPlat.Commom /// EndInput, /// + /// 流程结束, 发送 回复 + /// + EndFlow, + /// /// 取料失败, 排料机发送 回复, 里提供接下来该做的处理方式 /// TakingError, diff --git a/Rs.SkyLine/Flow/MachineManage.cs b/Rs.SkyLine/Flow/MachineManage.cs index 0faf72e..6c6621e 100644 --- a/Rs.SkyLine/Flow/MachineManage.cs +++ b/Rs.SkyLine/Flow/MachineManage.cs @@ -96,15 +96,41 @@ namespace Rs.MotionPlat.Flow /// private ERunStatus RunStatus { get; set; } = ERunStatus.Stopped; + private ERunMode _RunMode = ERunMode.Manual; /// /// 运行模式(Manual,Automatic) /// - public ERunMode RunMode { get; set; } = ERunMode.Manual; + public ERunMode RunMode + { + get + { + return _RunMode; + } + set + { + if (_RunMode != value) + { + _RunMode = value; + TestCenter.Instance.ReportStatusToCenter(SchedulingStatusInfo.InfoType.RunMode); + } + } + } + private EInitializeState _InitializeState = EInitializeState.Uninitialized; /// /// 初始化状态(Uninitialized,Initializing,Initialized) /// - public EInitializeState InitializeState { get; set; } = EInitializeState.Uninitialized; + public EInitializeState InitializeState + { + get { return _InitializeState; } + set { + if(_InitializeState != value) + { + _InitializeState = value; + TestCenter.Instance.ReportStatusToCenter(SchedulingStatusInfo.InfoType.InitializeState); + } + } + } /// /// 测试机状态 @@ -124,7 +150,13 @@ namespace Rs.MotionPlat.Flow /// public void SetCenterMachineStatus(ERunStatus status) { - RunStatus= status; + if(RunStatus!=status) + { + RunStatus = status; + //send to center + TestCenter.Instance.ReportStatusToCenter(SchedulingStatusInfo.InfoType.RunStatus); + } + } public void SetTesterState(TesterInfo _testerInfo) diff --git a/Rs.SkyLine/Flow/TestCenter.cs b/Rs.SkyLine/Flow/TestCenter.cs index ce58fe6..a8ecf94 100644 --- a/Rs.SkyLine/Flow/TestCenter.cs +++ b/Rs.SkyLine/Flow/TestCenter.cs @@ -26,7 +26,7 @@ namespace Rs.MotionPlat.Flow public class TestCenter { TcpClientHelper client = new TcpClientHelper("127.0.0.1",2048); - //TcpClientHelper client = new TcpClientHelper("192.168.31.120", 2048); + //TcpClientHelper client = new TcpClientHelper("192.168.110.162", 2048); SchedulingResult schedulResult = new SchedulingResult(); SchedulingMaterial sm; Dictionary alarmInfos = new Dictionary(); @@ -72,41 +72,13 @@ namespace Rs.MotionPlat.Flow } else if(ssi.Info== "Stopped") { - MessageQueue.Instance.Insert("收到中控停止命令,等待各个料盘就绪"); - Task.Run(() => { - while(true) - { - bool bInput = (StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Empty); - - bool bOk = (StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Empty); - - bool bNg = (StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Empty); - - bool bMulti = (StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Empty); - - bool bEmpty2 = (StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Loaded - || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Unloaded - || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Empty); - - if (bInput && bOk && bNg && bMulti && bEmpty2) - { - DischargeFlow.Instance.ResetScanNum(); - Ops.Stop(); - MessageQueue.Instance.Insert("料仓已全部就绪,设备停止运行"); - break; - } - Thread.Sleep(100); - } - }); + MessageQueue.Instance.Insert($"收到中控停止命令:{ssi.Info}"); + Ops.Stop(); } + //else if(ssi.Info== "EndFlow")//Stopped + //{ + + //} //WorkEnvironment.Instance.Ready(); //Task.Run(() => { // if (WorkEnvironment.Instance.EnvReadyOkEvent.WaitOne()) @@ -156,6 +128,10 @@ namespace Rs.MotionPlat.Flow } switch (eInstructioneInstruction) { + case EInstruction.EndFlow: + MessageQueue.Instance.Insert("收到中控停止命令:EndFlow,等待各个料盘就绪"); + EndFlow(); + break; case EInstruction.CheckTray: MachineManage.Instance.SetLoadUnloadStatus(ERunState.Busying); ReportToTestCenter(schedule); @@ -702,6 +678,46 @@ namespace Rs.MotionPlat.Flow Send(content, Encoding.ASCII); } + + + public void EndFlow() + { + + Task.Run(() => { + while (true) + { + bool bInput = (StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Input).Status == EStockTrayStatus.Empty); + + bool bOk = (StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Ok).Status == EStockTrayStatus.Empty); + + bool bNg = (StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Ng).Status == EStockTrayStatus.Empty); + + bool bMulti = (StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Multi).Status == EStockTrayStatus.Empty); + + bool bEmpty2 = (StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Loaded + || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Unloaded + || StockManager.Instance.GetStock(ETrayType.Empty2).Status == EStockTrayStatus.Empty); + + if (bInput && bOk && bNg && bMulti && bEmpty2) + { + DischargeFlow.Instance.ResetScanNum(); + Ops.Stop(); + MessageQueue.Instance.Insert("料仓已全部就绪,设备停止运行"); + break; + } + Thread.Sleep(100); + } + }); + } + public void ShowMsgBox(SchedulingMessageBox msgBox) { @@ -753,5 +769,36 @@ namespace Rs.MotionPlat.Flow } ReportToTestCenter(tray); } + + public void ReportStatusToCenter(SchedulingStatusInfo.InfoType intoType) + { + SchedulingStatusInfo statusInto = new SchedulingStatusInfo(); + statusInto.Type=intoType; + statusInto.Instruction = EInstruction.InquireStatus; + switch (intoType) + { + case SchedulingStatusInfo.InfoType.State: + statusInto.Info = MachineManage.Instance.GetLoadUnloadStatus().ToString();// ERunState.Waiting.ToString(); + break; + case SchedulingStatusInfo.InfoType.RunStatus: + statusInto.Info = MachineManage.Instance.GetCenterRunStatus().ToString();// ERunStatus.Started.ToString(); + break; + case SchedulingStatusInfo.InfoType.RunMode: + statusInto.Info = MachineManage.Instance.RunMode.ToString(); + break; + case SchedulingStatusInfo.InfoType.InitializeState: + statusInto.Info = MachineManage.Instance.InitializeState.ToString();// EInitializeState.Initialized.ToString(); + break; + case SchedulingStatusInfo.InfoType.AssignMode: + statusInto.Info = EAssignMode.Normal.ToString(); + break; + case SchedulingStatusInfo.InfoType.TesterState: + statusInto.Info = JsonConvert.SerializeObject(MachineManage.Instance.GetTesterInfo());//.ToString(); + break; + default: + break; + } + ReportToTestCenter(statusInto); + } } } diff --git a/Rs.SkyLine/Properties/AssemblyInfo.cs b/Rs.SkyLine/Properties/AssemblyInfo.cs index 68bbb8e..727abc8 100644 --- a/Rs.SkyLine/Properties/AssemblyInfo.cs +++ b/Rs.SkyLine/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ using System.Runtime.InteropServices; // //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: - [assembly: AssemblyVersion("3.20.24.54")] + [assembly: AssemblyVersion("3.20.24.55")] //[assembly: AssemblyVersion("1.0.0.0")] //[assembly: AssemblyFileVersion("1.0.0.0")]