You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

869 lines
33 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Rs.MotionPlat
{
public partial class FormMain : BaseForm
{
public FormMain()
{
InitializeComponent();
DischargeFlow.Instance.workFinishedEvent += () => {
Invoke(new Action(() => {
GlobalVar.Clear = false;
switchButton1.Checked = true;
}));
};
DischargeFlow.Instance.CleanDataEvent += () =>
{
btnClearData.PerformClick();
};
GrrFlow.Instance.CleanDataEvent += () => {
btnClearData.PerformClick();
};
}
private void timer1_Tick(object sender, EventArgs e)
{
if(!string.IsNullOrEmpty(GlobalUser.UserName))
{
if (tableLayoutPanel2.Enabled==false)
{
if(!GlobalUser.IsPm())
{
tableLayoutPanel2.Enabled = true;
}
}
if (cboxTestMode.Enabled==false)
{
cboxTestMode.Items.Clear();
if (GlobalUser.IsOp())
{
cboxTestMode.Items.Add("Production");
cboxTestMode.Items.Add("REL");
//cboxTestMode.SelectedIndex = 0;
}
else if(GlobalUser.IsAudit())
{
cboxTestMode.Items.Add("GRR");
cboxTestMode.Items.Add("AUDIT");
//cboxTestMode.SelectedIndex = 0;
}
else if(GlobalUser.IsSuper()||GlobalUser.IsVender())
{
cboxTestMode.Items.Add("Production");
cboxTestMode.Items.Add("GRR");
cboxTestMode.Items.Add("AUDIT");
cboxTestMode.Items.Add("REL");
cboxTestMode.Items.Add("DOE");
//cboxTestMode.SelectedIndex = 0;
}
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 (cboxTestMode.SelectedItem != null && (cboxTestMode.SelectedItem.ToString() == "GRR" || cboxTestMode.SelectedItem.ToString() == "AUDIT"))
{
if (txtGrrProductNum.Enabled == false)
txtGrrProductNum.Enabled = true;
if (txtGrrTestNum.Enabled == false)
txtGrrTestNum.Enabled = true;
}
}
else
{
if (MachineManage.Instance.MachineStatus == EMachineStatus.Working)
{
Ops.Stop();
}
if (tableLayoutPanel2.Enabled)
{
tableLayoutPanel2.Enabled = false;
}
if (cboxTestMode.Enabled == true)
{
cboxTestMode.Items.Clear();
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;
}
if(Ops.IsOutOn("照明灯") )
{
if(btnLight.BackColor != Color.Lime)
{
btnLight.BackColor = Color.Lime;
}
}
else
{
btnLight.BackColor = Color.FromArgb(56, 56, 56);
}
//获取运行信息
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();
if(GlobalVar.Clear==false)
{
switchButton1.Checked = true;
}
//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;
timeruph.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);
StockPlaceFlow.Instance.PlaceFinishedEvent += (pro) => {
int.TryParse(lblTotalNum.Text, out int totalNum);
int.TryParse(lblPassNum.Text,out int passNum);
int.TryParse(lblNgNum.Text, out int ngNum);
totalNum++;
if (pro!= null && pro.Result == "PASS")
{
passNum++;
}
else
{
ngNum++;
}
lblTotalNum.Text=totalNum.ToString();
lblPassNum.Text = passNum.ToString();
lblNgNum.Text = ngNum.ToString();
lblTotalYield.Text = $"{(((double)((double)passNum / totalNum)) * 100).ToString("0.00")}%";
};
}
public void ReloadParameters()
{
BindParameter();
}
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} statuscann'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);
}
txtGrrProductNum.Enabled = true;
txtGrrTestNum.Enabled = true;
}
else
{
txtGrrProductNum.Enabled = false;
txtGrrTestNum.Enabled = false;
GlobalTray.GrrTray.ChangeStatus(ESlotStatus.NotHave);
}
}
private void btnClearData_Click(object sender, EventArgs e)
{
//EButtonType btn = Msgbox.ShowTipDialog(EButtonType.Ok | EButtonType.Cancel, "Are you sure to clear data?");
//if(btn== EButtonType.Ok)
{
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();
lblTotalNum.Text = "0";
lblPassNum.Text = "0";
lblNgNum.Text = "0";
lblTotalYield.Text = "";
}
}
private void btnLight_Click(object sender, EventArgs e)
{
if(Ops.IsOutOn("照明灯"))
{
Ops.Off("照明灯");
LogHelper.Debug("关闭照明灯");
}
else
{
Ops.On("照明灯");
LogHelper.Debug("打开照明灯");
}
}
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);
//}
}
}
}
private void btnSave_Click(object sender, EventArgs e)
{
if(cboxTestMode.SelectedItem == null || cboxTestMode.SelectedItem.ToString().Trim()=="")
{
Msg.ShowError("Testmode cann't empty");
return;
}
SysConfigParam.Update("LotName", txtLotName.Text.Trim());
SysConfigParam.Update("TestMethod", cboxTestMethod.SelectedItem.ToString());
SysConfigParam.Update("TestMode", cboxTestMode.SelectedItem.ToString());
if (cboxTestMode.SelectedItem != null && (cboxTestMode.SelectedItem.ToString() == "GRR" || cboxTestMode.SelectedItem.ToString() == "AUDIT"))
{
int.TryParse(txtGrrProductNum.Text, out int productNum);
if(productNum>TestFixtureManager.Instance.GetEnableFixtureList().Count+1 && cboxTestMode.SelectedItem.ToString() == "GRR")
{
Msg.ShowError("1. The number of products can be less than that of the fixtures.\r\n2. The number of products is equal to that of the fixtures.\r\n3. The number of products is 1 more than that of the fixtures.");
return;
}
else
{
SysConfigParam.Update("GrrProductNum", txtGrrProductNum.Text);
SysConfigParam.Update("GrrTestNum", txtGrrTestNum.Text);
GlobalTray.GrrTray.ChangeStatus(ESlotStatus.NotHave);
for (int i = 0; i < GlobalVar.GrrProductNum; i++)
{
GlobalTray.GrrTray.ChangeStatus(i + 1, ESlotStatus.Have);
}
}
}
SysConfigParam.Update("Mtcp", cboxMtcp.Checked.ToString());
SysConfigParam.Update("Noise", cboxNoise.Checked.ToString());
SysConfigParam.Init();
Msgbox.ShowTipDialog(EButtonType.Ok, "Save success!", "tip");
}
private void btnUpCameraGrab_Click(object sender, EventArgs e)
{
AxisControl.LoadY2.ComparePulse((ushort)GlobalVar.HightChannel, false);
}
private void txtLotName_KeyUp(object sender, KeyEventArgs e)
{
StringBuilder msg = new StringBuilder();
string reg = "[\\w,&,\\.]";
TextBox textBox = (TextBox)sender;
string text=textBox.Text;
foreach(char c in text.ToCharArray())
{
if(Regex.IsMatch(c.ToString(), reg))
{
msg.Append(c);
}
}
textBox.Text = msg.ToString();
//textBox.Select(msg.Length, 0);
}
private void timer3_Tick_1(object sender, EventArgs e)
{
DateTime start = DateTime.Now.AddMinutes(GlobalVar.UphRefreshCycle*-1);
string querySql = $"select count(0) from records where placetime >= '{start.ToString("yyyy-MM-dd HH:mm:ss")}'";
DataSet ds = MySqlHelper.GetDataSet(querySql);
if(ds!=null && ds.Tables.Count>0)
{
if(int.TryParse(ds.Tables[0].Rows[0][0].ToString(),out int totalNum))
{
int uph = (int)(((double)totalNum / GlobalVar.UphRefreshCycle) * 60);
lblAvgUpg.Text = uph.ToString();
}
}
}
private void btnEndLot_Click(object sender, EventArgs e)
{
List<TestFixture> fixtureList = TestFixtureManager.Instance.GetEnableFixtureList();
if(fixtureList!=null && fixtureList.Count>0)
{
fixtureList[0].Send("LotEnd$");
DevLog.EventTracker("End", 0, "", "End");
}
}
}
}