using Rs.AutoDischarge.V3.Flow; using Rs.Controls; using Rs.Framework; using Rs.MotionPlat.Commom; using Rs.MotionPlat.Flow; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Rs.MotionPlat.SysConfig { public partial class StockControl : BaseForm { public StockControl() { InitializeComponent(); } protected void OnbtnLoadClick(object sender, EventArgs e) { Button btn = (Button)sender; string trayName = btn.Tag.ToString(); bool ok = Enum.TryParse(trayName, out ETrayType result); if (ok) { Task.Run(() => { if (MachineManage.Instance.MachineStatus == EMachineStatus.Homed || MachineManage.Instance.MachineStatus == EMachineStatus.Stop) { if (!StockManager.Instance.GetStock(result).IsRunning()) { if (IsBack(trayName)) { StockManager.Instance.GetStock(result).Load(EStockTrayLoadMode.AfterBacked, () => { }); } else { StockManager.Instance.GetStock(result).Load(EStockTrayLoadMode.Whole, () => { if (result == ETrayType.Input) { GlobalTray.GetTray(result).ChangeStatus(Rs.Controls.ESlotStatus.Have); } else { GlobalTray.GetTray(result).ChangeStatus(Rs.Controls.ESlotStatus.NotHave); } }); } } else { Msg.ShowError("Stock is busy"); } } else { Msg.ShowError($"device status is {MachineManage.Instance.MachineStatus},cann't operate the stock"); } }); } } protected void OnbtnUnLoadClick(object sender, EventArgs e) { Button btn = (Button)sender; string trayName = btn.Tag.ToString(); bool ok = Enum.TryParse(trayName, out ETrayType result); if(ok) { Task.Run(() => { if(MachineManage.Instance.MachineStatus== EMachineStatus.Homed || MachineManage.Instance.MachineStatus== EMachineStatus.Stop) { if (!StockManager.Instance.GetStock(result).IsRunning()) { if (IsBack(trayName)) { StockManager.Instance.GetStock(result).Unload(EStockTrayUnLoadMode.Back, () => { // GlobalTray.GetTray(result).ChangeStatus(Rs.Controls.ESlotStatus.Null); }); } else { StockManager.Instance.GetStock(result).Unload(EStockTrayUnLoadMode.Whole, () => { GlobalTray.GetTray(result).ChangeStatus(Rs.Controls.ESlotStatus.Null); }); } } else { Msg.ShowError("Stock is busy"); } } else { Msg.ShowError($"device status is {MachineManage.Instance.MachineStatus},cann't operate the stock"); } }); } } private bool IsBack(string trayName) { bool back = false; switch (trayName) { case "Empty1": if (cboxBackEmpty1.Checked) back = true; break; case "Input": if (cboxBackInput.Checked) back = true; break; case "Ok": if (cboxBackOk.Checked) back = true; break; case "Ng": if (cboxBackNg.Checked) back = true; break; case "Multi": if (cboxBackMulti.Checked) back = true; break; case "Empty2": if (cboxBackEmpty2.Checked) back = true; break; default: break; } return back; } protected void btnMovetrayClick(object sender, EventArgs e) { RadioButton rbtnFrom = null; RadioButton rbtnTo = null; foreach (Control ctl in gboxFrom.Controls) { if(ctl is RadioButton) { rbtnFrom = (RadioButton)ctl; if(rbtnFrom.Checked) { break; } } } foreach (Control ctl in gboxTo.Controls) { if (ctl is RadioButton) { rbtnTo = (RadioButton)ctl; if (rbtnTo.Checked) { break; } } } if(rbtnFrom != null && rbtnTo!=null) { if(rbtnFrom.Text == rbtnTo.Text) { Msg.ShowError("Cann't move tray to same position"); return; } } } private void button12_Click(object sender, EventArgs e) { ETrayType fromstock = ETrayType.Empty2; ETrayType tostock = ETrayType.Ok ; if (btnFromEmpty1.Checked) fromstock = ETrayType.Empty1; if (btnFromInput.Checked) fromstock = ETrayType.Input; if (btnFromOk.Checked) fromstock = ETrayType.Ok; if (btnFromNg.Checked) fromstock = ETrayType.Ng; if (btnFromMulti.Checked) fromstock = ETrayType.Multi; if (btnFromEmpty2.Checked) fromstock = ETrayType.Empty2; if (btnToEmpty1.Checked) tostock = ETrayType.Empty1; if (btnToInput.Checked) tostock = ETrayType.Input; if (btnToOk.Checked) tostock = ETrayType.Ok; if (btnToNg.Checked) tostock = ETrayType.Ng; if (btnToMulti.Checked) tostock = ETrayType.Multi; if (btnToEmpty2.Checked) tostock = ETrayType.Empty2; StockManager.Instance.GetStock(fromstock).Load(EStockTrayLoadMode.Whole, null); TakeTrayFlow.Instance.Take(fromstock, tostock, null, null, () => { StockManager.Instance.GetStock(tostock).Unload(EStockTrayUnLoadMode.Whole, null); }); } } }