|
|
using Rs.Camera;
|
|
|
using Rs.Controls;
|
|
|
using Rs.DataAccess;
|
|
|
using Rs.Framework;
|
|
|
using Rs.Motion.Base;
|
|
|
using Rs.MotionPlat.Commom;
|
|
|
using Rs.MotionPlat.Entitys;
|
|
|
using Rs.MotionPlat.Entitys.Trays;
|
|
|
using Rs.MotionPlat.Flow;
|
|
|
using Rs.MotionPlat.Flow.SafePosFlow;
|
|
|
using Rs.MotionPlat.Flow.SubFlow;
|
|
|
using Rs.MotionPlat.SysConfig;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Data;
|
|
|
using System.Diagnostics;
|
|
|
using System.Drawing;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
namespace Rs.MotionPlat
|
|
|
{
|
|
|
public partial class FormMain : BaseForm
|
|
|
{
|
|
|
public FormMain()
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
|
|
|
}
|
|
|
|
|
|
private void timer1_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
if(!string.IsNullOrEmpty(GlobalUser.UserName))
|
|
|
{
|
|
|
if(cboxTestMode.Enabled==false)
|
|
|
cboxTestMode.Enabled = true;
|
|
|
if(cboxTestMethod.Enabled==false)
|
|
|
cboxTestMethod.Enabled = true;
|
|
|
if(txtLotName.Enabled==false)
|
|
|
txtLotName.Enabled = true;
|
|
|
if(cboxMtcp.Enabled==false)
|
|
|
cboxMtcp.Enabled = true;
|
|
|
if (cboxNoise.Enabled == false)
|
|
|
cboxNoise.Enabled = true;
|
|
|
if(txtGrrProductNum.Enabled==false)
|
|
|
txtGrrProductNum.Enabled = true;
|
|
|
if(txtGrrTestNum.Enabled==false)
|
|
|
txtGrrTestNum.Enabled = true;
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (cboxTestMode.Enabled == true)
|
|
|
cboxTestMode.Enabled = false;
|
|
|
if (cboxTestMethod.Enabled == true)
|
|
|
cboxTestMethod.Enabled = false;
|
|
|
if (txtLotName.Enabled == true)
|
|
|
txtLotName.Enabled = false;
|
|
|
if (cboxMtcp.Enabled)
|
|
|
cboxMtcp.Enabled = false;
|
|
|
if(cboxNoise.Enabled)
|
|
|
cboxNoise.Enabled = false;
|
|
|
if (txtGrrProductNum.Enabled)
|
|
|
txtGrrProductNum.Enabled = false;
|
|
|
if (txtGrrTestNum.Enabled)
|
|
|
txtGrrTestNum.Enabled = false;
|
|
|
}
|
|
|
//获取运行信息
|
|
|
while (MessageQueue.Instance.HaveMessage())
|
|
|
{
|
|
|
MessageItem runInfo = MessageQueue.Instance.GetMessage();
|
|
|
if (runInfo != null)
|
|
|
{
|
|
|
while (dgv_runinfo.Rows.Count > 500)
|
|
|
{
|
|
|
dgv_runinfo.Rows.RemoveAt(dgv_runinfo.Rows.Count - 1);
|
|
|
}
|
|
|
dgv_runinfo.Rows.Insert(0, runInfo.Time, runInfo.Content);
|
|
|
}
|
|
|
|
|
|
MessageItem errorInfo = MessageQueue.Instance.GetWarn();
|
|
|
if (errorInfo != null)
|
|
|
{
|
|
|
while (dgv_errinfo.Rows.Count > 500)
|
|
|
{
|
|
|
dgv_errinfo.Rows.RemoveAt(dgv_errinfo.Rows.Count - 1);
|
|
|
}
|
|
|
dgv_errinfo.Rows.Insert(0, errorInfo.Time, errorInfo.Content);
|
|
|
}
|
|
|
}
|
|
|
if(MachineManage.Instance.MachineStatus== EMachineStatus.Working)
|
|
|
{
|
|
|
if (btnWholeHome.Visible == true)
|
|
|
btnWholeHome.Visible = false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (btnWholeHome.Visible == false)
|
|
|
btnWholeHome.Visible = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void FormMain_Load(object sender, EventArgs e)
|
|
|
{
|
|
|
tabControlEx1.TabPages.RemoveAt(1);
|
|
|
SqliteHelper db = new SqliteHelper();
|
|
|
string querySql = "select * from NormalTray";
|
|
|
DataTable dt = db.GetDataTable(querySql);
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
|
{
|
|
|
DataRow dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Ng").First();
|
|
|
if (dr != null)
|
|
|
{
|
|
|
trayNg.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
|
|
|
trayNg.RowNum = int.Parse(dr["RowNum"].ToString());
|
|
|
}
|
|
|
|
|
|
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "ReTest").First();
|
|
|
if (dr != null)
|
|
|
{
|
|
|
trayReTest.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
|
|
|
trayReTest.RowNum = int.Parse(dr["RowNum"].ToString());
|
|
|
}
|
|
|
|
|
|
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Grr").First();
|
|
|
if (dr != null)
|
|
|
{
|
|
|
trayGrr.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
|
|
|
trayGrr.RowNum = int.Parse(dr["RowNum"].ToString());
|
|
|
}
|
|
|
|
|
|
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Ok").First();
|
|
|
if (dr != null)
|
|
|
{
|
|
|
trayOk.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
|
|
|
trayOk.RowNum = int.Parse(dr["RowNum"].ToString());
|
|
|
}
|
|
|
|
|
|
|
|
|
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Input").First();
|
|
|
if (dr != null)
|
|
|
{
|
|
|
trayInput.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
|
|
|
trayInput.RowNum = int.Parse(dr["RowNum"].ToString());
|
|
|
}
|
|
|
|
|
|
//dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Grab").First();
|
|
|
//if (dr != null)
|
|
|
//{
|
|
|
// trayGrab.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
|
|
|
// trayGrab.RowNum = int.Parse(dr["RowNum"].ToString());
|
|
|
//}
|
|
|
}
|
|
|
|
|
|
timer1.Interval = 500;
|
|
|
timer1.Enabled = true;
|
|
|
timer2.Interval = 200;
|
|
|
timer2.Enabled = true;
|
|
|
|
|
|
trayNg.ItemName = "Empty1";
|
|
|
trayReTest.ItemName = "Input";
|
|
|
trayGrr.ItemName = "Ok";
|
|
|
trayOk.ItemName = "Ng";
|
|
|
trayInput.ItemName = "Multi";
|
|
|
|
|
|
|
|
|
trayNg.InitSlotStatus = ESlotStatus.NotHave;
|
|
|
trayReTest.InitSlotStatus = ESlotStatus.NotHave;
|
|
|
trayGrr.InitSlotStatus = ESlotStatus.NotHave;
|
|
|
trayOk.InitSlotStatus = ESlotStatus.NotHave;
|
|
|
trayInput.InitSlotStatus = ESlotStatus.NotHave;
|
|
|
|
|
|
GlobalTray.NgTray = trayNg;
|
|
|
GlobalTray.RetestTray = trayReTest;
|
|
|
GlobalTray.GrrTray=trayGrr;
|
|
|
GlobalTray.OkTary = trayOk ;
|
|
|
GlobalTray.InputTray = trayInput;
|
|
|
//GlobalTray.GrabTray = trayGrab;
|
|
|
GlobalTray.NozzleTray = trayNozzle ;
|
|
|
//StockManager.Instance.Start();
|
|
|
LoadStockStatus();
|
|
|
switchButton1.Checked = GlobalVar.DeviceIsAuto;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//uTestCell1.BindEntity(TestFixtureManager.Instance.GetTestFixture(1));
|
|
|
//uTestCell2.BindEntity(TestFixtureManager.Instance.GetTestFixture(2));
|
|
|
//uTestCell3.BindEntity(TestFixtureManager.Instance.GetTestFixture(3));
|
|
|
//uTestCell4.BindEntity(TestFixtureManager.Instance.GetTestFixture(4));
|
|
|
//uTestCell5.BindEntity(TestFixtureManager.Instance.GetTestFixture(5));
|
|
|
//uTestCell6.BindEntity(TestFixtureManager.Instance.GetTestFixture(6));
|
|
|
|
|
|
|
|
|
//PositionHelper.BindSinglePosition(txtLotName,"string");
|
|
|
for(int i=1;i<=6;i++)
|
|
|
{
|
|
|
switch (i)
|
|
|
{
|
|
|
case 1:
|
|
|
TestFixtureManager.Instance.GetTestFixture(i).Enable = GlobalVar.EnableTC1;
|
|
|
break;
|
|
|
case 2:
|
|
|
TestFixtureManager.Instance.GetTestFixture(i).Enable = GlobalVar.EnableTC2;
|
|
|
break;
|
|
|
case 3:
|
|
|
TestFixtureManager.Instance.GetTestFixture(i).Enable = GlobalVar.EnableTC3;
|
|
|
break;
|
|
|
case 4:
|
|
|
TestFixtureManager.Instance.GetTestFixture(i).Enable = GlobalVar.EnableTC4;
|
|
|
break;
|
|
|
case 5:
|
|
|
TestFixtureManager.Instance.GetTestFixture(i).Enable = GlobalVar.EnableTC5;
|
|
|
break;
|
|
|
case 6:
|
|
|
TestFixtureManager.Instance.GetTestFixture(i).Enable = GlobalVar.EnableTC6;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
timertc1.Enabled = true;
|
|
|
timertc2.Enabled = true;
|
|
|
timertc3.Enabled = true;
|
|
|
timertc4.Enabled = true;
|
|
|
timertc5.Enabled = true;
|
|
|
timertc6.Enabled = true;
|
|
|
BindParameter();
|
|
|
//if (!string.IsNullOrEmpty(GlobalUser.UserName))
|
|
|
//{
|
|
|
// txtLotName.Enabled = true;
|
|
|
// //txtConfig.Enabled = true;
|
|
|
// //cboxConfigName.Enabled = true;
|
|
|
// //txtSubLotName.Enabled = true;
|
|
|
// //txtSiteID.Enabled = true;
|
|
|
// //txtProjectID.Enabled = true;
|
|
|
// cboxMtcp.Enabled = true;
|
|
|
// cboxNoise.Enabled = true;
|
|
|
// cboxTestMethod.Enabled = true;
|
|
|
// cboxTestMode.Enabled = true;
|
|
|
|
|
|
//}
|
|
|
uTestCell1.SetIndex(1);
|
|
|
uTestCell2.SetIndex(2);
|
|
|
uTestCell3.SetIndex(3);
|
|
|
uTestCell4.SetIndex(4);
|
|
|
uTestCell5.SetIndex(5);
|
|
|
uTestCell6.SetIndex(6);
|
|
|
}
|
|
|
|
|
|
|
|
|
void BindParameter()
|
|
|
{
|
|
|
txtLotName.Text = GlobalVar.LotName;
|
|
|
//txtConfig.Text = GlobalVar.Config;
|
|
|
//cboxConfigName.SelectedItem = GlobalVar.ConfigName;
|
|
|
//txtSubLotName.Text=GlobalVar.SubLotName;
|
|
|
//txtSiteID.Text= GlobalVar.SiteID;
|
|
|
//txtProjectID.Text=GlobalVar.ProjectID;
|
|
|
cboxMtcp.Checked = GlobalVar.Mtcp;
|
|
|
cboxNoise.Checked = GlobalVar.Noise;
|
|
|
cboxTestMode.SelectedItem = GlobalVar.TestMode;
|
|
|
cboxTestMethod.SelectedItem = GlobalVar.TestMethod;
|
|
|
txtGrrProductNum.Text = GlobalVar.GrrProductNum.ToString();
|
|
|
txtGrrTestNum.Text = GlobalVar.GrrTestNum.ToString();
|
|
|
}
|
|
|
|
|
|
private void btnWholeHome_Load(object sender, EventArgs e)
|
|
|
{
|
|
|
Ops.GoHome();
|
|
|
}
|
|
|
|
|
|
private void btnSpaceRun_BtnClick(object sender, EventArgs e)
|
|
|
{
|
|
|
//SpaceTest.Instance.Start();
|
|
|
if (MachineManage.Instance.MachineStatus== EMachineStatus.Homed || MachineManage.Instance.MachineStatus == EMachineStatus.Stop)
|
|
|
{
|
|
|
//MachineManage.Instance.RunStatus = Commom.ERunStatus.Started;
|
|
|
////WorkFlow.Instance.Start();
|
|
|
//TurnoverFlow.Instance.Start();
|
|
|
//TakeTrayFlow.Instance.Start();
|
|
|
|
|
|
Ops.Start();
|
|
|
|
|
|
//TakeTrayFlow.Instance.Start();
|
|
|
//StockManager.Instance.Start();
|
|
|
//WorkEnvironment.Instance.Ready();
|
|
|
|
|
|
|
|
|
//TakeDumpTest.Instance.Start();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
MessageQueue.Instance.Warn($"device {MachineManage.Instance.MachineStatus} status,cann't start!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void btnStop_BtnClick(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
Ops.Stop();
|
|
|
//TakeDumpTest.Instance.Stop();
|
|
|
//LoadAndUnloadTest.Instance.Stop();
|
|
|
//TakeTrayTest.Instance.Stop();
|
|
|
//TurnoverFlow.Instance.Stop();
|
|
|
//TakeTrayFlow.Instance.Stop();
|
|
|
////ZRTest.Instance.Stop();
|
|
|
////CameraTriggerTest.Instance.Stop();
|
|
|
////SpaceTest.Instance.Stop();
|
|
|
//WorkFlow.Instance.Stop();
|
|
|
//MachineManage.Instance.MachineStatus = EMachineStatus.Stop;
|
|
|
}
|
|
|
|
|
|
private void LoadStockStatus()
|
|
|
{
|
|
|
//StringBuilder msg = new StringBuilder();
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Input))
|
|
|
//{
|
|
|
// msg.Append(ETrayType.Input.ToString()).Append(",");
|
|
|
//}
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Ok))
|
|
|
//{
|
|
|
// msg.Append(ETrayType.Ok.ToString()).Append(",");
|
|
|
//}
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Ng))
|
|
|
//{
|
|
|
// msg.Append(ETrayType.Ng.ToString()).Append(",");
|
|
|
//}
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Multi))
|
|
|
//{
|
|
|
// msg.Append(ETrayType.Multi.ToString()).Append(",");
|
|
|
//}
|
|
|
//if(msg.Length > 0)
|
|
|
//{
|
|
|
// Task.Run(() => {
|
|
|
// Msg.ShowInfo("Stock " + msg.ToString().TrimEnd(new char[] { ',' }) + " has tray,please check products status");
|
|
|
// });
|
|
|
//}
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Empty1))
|
|
|
//{
|
|
|
// StockManager.Instance.GetStock(ETrayType.Empty1).ChangeStatus(EStockTrayStatus.Loaded);
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// GlobalTray.GetTray(ETrayType.Empty1).Status = EStockTrayStatus.Empty.ToString();
|
|
|
//}
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Input))
|
|
|
//{
|
|
|
// StockManager.Instance.GetStock(ETrayType.Input).ChangeStatus(EStockTrayStatus.Loaded,false);
|
|
|
// TrayStatusManager.Init(ETrayType.Input);
|
|
|
// //GlobalTray.InputTray.ChangeStatus()
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// GlobalTray.GetTray(ETrayType.Input).Status = EStockTrayStatus.Empty.ToString();
|
|
|
//}
|
|
|
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Ok))
|
|
|
//{
|
|
|
// StockManager.Instance.GetStock(ETrayType.Ok).ChangeStatus(EStockTrayStatus.Loaded, false);
|
|
|
// TrayStatusManager.Init(ETrayType.Ok);
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// GlobalTray.GetTray(ETrayType.Ok).Status = EStockTrayStatus.Empty.ToString();
|
|
|
//}
|
|
|
|
|
|
//if (Ops.IsOn("NG"))
|
|
|
//{
|
|
|
// StockManager.Instance.GetStock(ETrayType.Ng).ChangeStatus(EStockTrayStatus.Loaded, false);
|
|
|
// TrayStatusManager.Init(ETrayType.Ng);
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// GlobalTray.GetTray(ETrayType.Ng).Status = EStockTrayStatus.Empty.ToString();
|
|
|
//}
|
|
|
|
|
|
//if (StockManager.Instance.HasTray(ETrayType.Multi))
|
|
|
//{
|
|
|
// StockManager.Instance.GetStock(ETrayType.Multi).ChangeStatus(EStockTrayStatus.Loaded, false);
|
|
|
// TrayStatusManager.Init(ETrayType.Multi);
|
|
|
//}
|
|
|
//else
|
|
|
//{
|
|
|
// GlobalTray.GetTray(ETrayType.Multi).Status = EStockTrayStatus.Empty.ToString();
|
|
|
//}
|
|
|
|
|
|
|
|
|
//TrayStatusManager.InitDischargeNozzle();
|
|
|
//TrayStatusManager.InitTrunoverTray();
|
|
|
//TrayStatusManager.InitTurnoverNozzle();
|
|
|
//TrayStatusManager.InitFixtureTray();
|
|
|
}
|
|
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
//PromptMessageBox.ShowDialog(111, "取料失败!! \r\n周转吸嘴取治具{}号穴位的物料时失败 \r\nPickup fail !!\r\nNozzle of tester from site{} socket\r\nPickup fail !!\r\nSite{} socket 으로부터 Unit을 pickup할때 pickup fail이 발생하였습니다.", ETipButton.Yes);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 治具盘画盘后事件
|
|
|
/// </summary>
|
|
|
/// <param name="obj"></param>
|
|
|
private void trayTest_DrawTrayAfterEvent(RsTray obj, ESlotStatus status, List<TraySlot> opSlots)
|
|
|
{
|
|
|
//TestTrayManager.Instance.ResetStatus();
|
|
|
//List<TraySlot> slots = obj.GetSlots(ESlotStatus.Have);
|
|
|
LogHelper.Debug($"手动画盘设置{opSlots.Select(s=>s.Index).ToJoinString()}{status}");
|
|
|
foreach (TraySlot slot in opSlots)
|
|
|
{
|
|
|
int slotIndex = slot.Index;
|
|
|
if(status== ESlotStatus.Have)
|
|
|
{
|
|
|
//TestTrayManager.Instance.Slot(slotIndex).IsHasProduct = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//TestTrayManager.Instance.Slot(slotIndex).ResetStatus();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 周转盘画盘后事件
|
|
|
/// </summary>
|
|
|
/// <param name="obj"></param>
|
|
|
private void trayTurnover_DrawTrayAfterEvent(RsTray obj, ESlotStatus status, List<TraySlot> opSlots)
|
|
|
{
|
|
|
//TurnoverTrayManager.Instance.ResetStatus();
|
|
|
//List<TraySlot> slots = obj.GetSlots(ESlotStatus.Have);
|
|
|
LogHelper.Debug($"手动画盘设置{opSlots.Select(s => s.Index).ToJoinString()}{status}");
|
|
|
foreach (TraySlot slot in opSlots)
|
|
|
{
|
|
|
int slotIndex = slot.Index;
|
|
|
if (status == ESlotStatus.Have)
|
|
|
{
|
|
|
//TurnoverTrayManager.Instance.Slot(slotIndex).IsHasProduct = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//TurnoverTrayManager.Instance.Slot(slotIndex).ResetStatus();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 周转吸嘴画盘后事件
|
|
|
/// </summary>
|
|
|
/// <param name="obj"></param>
|
|
|
private void trayTurnoverNozzle_DrawTrayAfterEvent(RsTray obj, ESlotStatus status, List<TraySlot> opSlots)
|
|
|
{
|
|
|
//TransitNozzleManager.Instance.ResetStatus();
|
|
|
//List<TraySlot> slots = obj.GetSlots(ESlotStatus.Have);
|
|
|
|
|
|
LogHelper.Debug($"手动画盘设置{opSlots.Select(s => s.Index).ToJoinString()}{status}");
|
|
|
foreach (TraySlot slot in opSlots)
|
|
|
{
|
|
|
int slotIndex = slot.Index;
|
|
|
if(status== ESlotStatus.Have)
|
|
|
{
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).FromType = TurnoverType.Turnover;
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).FromIndex = slotIndex - 1;
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).ToType = TurnoverType.Multifunction;
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).ToIndex = (slotIndex <= 8 ? slotIndex + 8 : slotIndex + 16) - 1;
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).IsHasProduct = true;
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).Update();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).ResetStaus();
|
|
|
//TransitNozzleManager.Instance.Nozzle(slotIndex).Update();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 排料吸嘴画盘后事件
|
|
|
/// </summary>
|
|
|
/// <param name="obj"></param>
|
|
|
private void trayDischargeNozzle_DrawTrayAfterEvent(RsTray obj, ESlotStatus status, List<TraySlot> opSlots)
|
|
|
{
|
|
|
//NozzleManager.GetAllNozzles().ForEach((n) => { n.ResetStatus(); });
|
|
|
//List<TraySlot> slots = obj.GetSlots(ESlotStatus.Have);
|
|
|
LogHelper.Debug($"手动画盘设置{opSlots.Select(s => s.Index).ToJoinString()}{status}");
|
|
|
foreach (TraySlot slot in opSlots)
|
|
|
{
|
|
|
int slotIndex = slot.Index;
|
|
|
if (status == ESlotStatus.Have)
|
|
|
{
|
|
|
Nozzle nozzle = NozzleManager.GetNozzle(slotIndex);
|
|
|
if (nozzle != null)
|
|
|
{
|
|
|
//NozzleManager.GetNozzle(slotIndex).FromType = TurnoverType.Turnover;
|
|
|
//nozzle.FromIndex = slotIndex - 1;
|
|
|
//NozzleManager.GetNozzle(slotIndex).ToType = TurnoverType.Multifunction;
|
|
|
//nozzle.ToIndex = 0;
|
|
|
NozzleManager.GetNozzle(slotIndex).Status = ENozzleStatus.ToUnload;
|
|
|
nozzle.Update();
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
NozzleManager.GetNozzle(slotIndex).Clear();
|
|
|
NozzleManager.GetNozzle(slotIndex).Update();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void switchButton1_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
//GlobalVar.DeviceIsAuto = switchButton1.Checked;
|
|
|
if(switchButton1.Checked)
|
|
|
{
|
|
|
GlobalVar.Clear = false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
GlobalVar.Clear = true;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private void timer2_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
public void txtSysParam_KeyUp(object sender, KeyEventArgs e)
|
|
|
{
|
|
|
if(e.KeyCode == Keys.Enter)
|
|
|
{
|
|
|
UpdateSysParam((TextBox)sender);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private void timer3_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
uTestCell1.RefreshStatus(TestFixtureManager.Instance.GetTestFixture(1));
|
|
|
}
|
|
|
|
|
|
private void timertc2_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
uTestCell2.RefreshStatus(TestFixtureManager.Instance.GetTestFixture(2));
|
|
|
}
|
|
|
|
|
|
private void timertc3_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
uTestCell3.RefreshStatus(TestFixtureManager.Instance.GetTestFixture(3));
|
|
|
}
|
|
|
|
|
|
private void timertc4_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
uTestCell4.RefreshStatus(TestFixtureManager.Instance.GetTestFixture(4));
|
|
|
}
|
|
|
|
|
|
private void timertc5_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
uTestCell5.RefreshStatus(TestFixtureManager.Instance.GetTestFixture(5));
|
|
|
}
|
|
|
|
|
|
private void timertc6_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
uTestCell6.RefreshStatus(TestFixtureManager.Instance.GetTestFixture(6));
|
|
|
}
|
|
|
|
|
|
private void cboxMtcp_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
if(cboxMtcp.Checked)
|
|
|
{
|
|
|
SysConfigParam.Update("Mtcp","true");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
SysConfigParam.Update("Mtcp", "false");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void cboxNoise_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
if (cboxNoise.Checked)
|
|
|
{
|
|
|
SysConfigParam.Update("Noise", "true");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
SysConfigParam.Update("Noise", "false");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void cboxTestMethod_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
{
|
|
|
SysConfigParam.Update("TestMethod", cboxTestMethod.SelectedItem.ToString());
|
|
|
}
|
|
|
|
|
|
private void cboxTestMode_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
{
|
|
|
SysConfigParam.Update("TestMode", cboxTestMode.SelectedItem.ToString());
|
|
|
if(cboxTestMode.SelectedItem!=null && (cboxTestMode.SelectedItem.ToString()=="GRR" || cboxTestMode.SelectedItem.ToString()=="AUDIT"))
|
|
|
{
|
|
|
GlobalTray.GrrTray.ChangeStatus(ESlotStatus.NotHave);
|
|
|
for (int i=0;i<GlobalVar.GrrProductNum;i++)
|
|
|
{
|
|
|
GlobalTray.GrrTray.ChangeStatus(i+1,ESlotStatus.Have);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
GlobalTray.GrrTray.ChangeStatus(ESlotStatus.NotHave);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void btnClearData_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
TestFixtureManager.Instance.GetTestFixture(1).ClearData();
|
|
|
TestFixtureManager.Instance.GetTestFixture(2).ClearData();
|
|
|
TestFixtureManager.Instance.GetTestFixture(3).ClearData();
|
|
|
TestFixtureManager.Instance.GetTestFixture(4).ClearData();
|
|
|
TestFixtureManager.Instance.GetTestFixture(5).ClearData();
|
|
|
TestFixtureManager.Instance.GetTestFixture(6).ClearData();
|
|
|
}
|
|
|
|
|
|
private void btnLight_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
if(Ops.IsOutOn("照明灯"))
|
|
|
{
|
|
|
Ops.Off("照明灯");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Ops.On("照明灯");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void btnSelectProduct_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
SelectProductFrm selectPro = new SelectProductFrm();
|
|
|
selectPro.ShowDialog();
|
|
|
}
|
|
|
|
|
|
private void btnNozzleStatus_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
NozzleStatusFrm nozzleFrm = new NozzleStatusFrm();
|
|
|
nozzleFrm.TopMost = true;
|
|
|
nozzleFrm.ShowInTaskbar = false;
|
|
|
nozzleFrm.Show();
|
|
|
}
|
|
|
|
|
|
private void btnBuzzer_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
Ops.Off("蜂鸣器");
|
|
|
}
|
|
|
|
|
|
private void txtGrrProductNum_KeyUp(object sender, KeyEventArgs e)
|
|
|
{
|
|
|
if(e.KeyCode== Keys.Enter)
|
|
|
{
|
|
|
if (cboxTestMode.SelectedItem != null && (cboxTestMode.SelectedItem.ToString() == "GRR" || cboxTestMode.SelectedItem.ToString() == "AUDIT"))
|
|
|
{
|
|
|
SysConfigParam.Update("GrrProductNum", txtGrrProductNum.Text);
|
|
|
for (int i = 0; i < GlobalVar.GrrProductNum; i++)
|
|
|
{
|
|
|
GlobalTray.GrrTray.ChangeStatus(i + 1, ESlotStatus.Have);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|