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.
Rs.DeweyTester/Rs.DeweyTester/FormMain.cs

459 lines
18 KiB
C#

2 years ago
using ChoiceTech.Halcon.Control;
using HalconDotNet;
using Rs.Camera;
using Rs.Controls;
using Rs.DataAccess;
using Rs.Framework;
using Rs.Motion.Base;
using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Entitys;
2 years ago
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
{
HObject defaultImage = new HObject();
2 years ago
public FormMain()
{
InitializeComponent();
2 years ago
}
private void timer1_Tick(object sender, EventArgs e)
{
//获取运行信息
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)
{
2 years ago
DataRow dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Ng").First();
2 years ago
if (dr != null)
{
2 years ago
trayNg.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
trayNg.RowNum = int.Parse(dr["RowNum"].ToString());
2 years ago
}
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "ReTest").First();
2 years ago
if (dr != null)
{
trayReTest.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
trayReTest.RowNum = int.Parse(dr["RowNum"].ToString());
2 years ago
}
2 years ago
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Grr").First();
2 years ago
if (dr != null)
{
2 years ago
trayGrr.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
trayGrr.RowNum = int.Parse(dr["RowNum"].ToString());
2 years ago
}
2 years ago
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Ok").First();
2 years ago
if (dr != null)
{
2 years ago
trayOk.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
trayOk.RowNum = int.Parse(dr["RowNum"].ToString());
2 years ago
}
2 years ago
dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Input").First();
2 years ago
if (dr != null)
{
2 years ago
trayInput.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
trayInput.RowNum = int.Parse(dr["RowNum"].ToString());
2 years ago
}
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());
}
2 years ago
}
timer1.Interval = 500;
timer1.Enabled = true;
timer2.Interval = 200;
timer2.Enabled = true;
2 years ago
2 years ago
trayNg.ItemName = "Empty1";
trayReTest.ItemName = "Input";
2 years ago
trayGrr.ItemName = "Ok";
trayOk.ItemName = "Ng";
trayInput.ItemName = "Multi";
2 years ago
trayNg.InitSlotStatus = ESlotStatus.NotHave;
trayReTest.InitSlotStatus = ESlotStatus.Null;
trayGrr.InitSlotStatus = ESlotStatus.Have;
2 years ago
trayOk.InitSlotStatus = ESlotStatus.Null;
trayInput.InitSlotStatus = ESlotStatus.Null;
GlobalTray.NgTray = trayNg;
GlobalTray.RetestTray = trayReTest;
GlobalTray.GrrTray=trayGrr;
GlobalTray.OkTary = trayOk ;
GlobalTray.InputTray = trayInput;
GlobalTray.GrabTray = trayGrab;
GlobalTray.NozzleTray = trayNozzle ;
2 years ago
//StockManager.Instance.Start();
LoadStockStatus();
HOperatorSet.ReadImage(out defaultImage, "default.bmp");
switchButton1.Checked = GlobalVar.DeviceIsAuto;
VisionHelper.Init();
TestFixtureManager.Instance.StartLister();
2 years ago
SimulateTesterManager.Instance.Init();
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;
}
}
2 years ago
}
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();
2 years ago
}
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;
2 years ago
}
else
{
//TestTrayManager.Instance.Slot(slotIndex).ResetStatus();
2 years ago
}
}
}
/// <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;
2 years ago
}
else
{
//TurnoverTrayManager.Instance.Slot(slotIndex).ResetStatus();
2 years ago
}
}
}
/// <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;
2 years ago
//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();
2 years ago
}
else
{
//TransitNozzleManager.Instance.Nozzle(slotIndex).ResetStaus();
//TransitNozzleManager.Instance.Nozzle(slotIndex).Update();
2 years ago
}
}
}
/// <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;
2 years ago
//NozzleManager.GetNozzle(slotIndex).ToType = TurnoverType.Multifunction;
//nozzle.ToIndex = 0;
2 years ago
NozzleManager.GetNozzle(slotIndex).Status = ENozzleStatus.ToUnload;
nozzle.Update();
}
}
else
{
NozzleManager.GetNozzle(slotIndex).Clear();
2 years ago
NozzleManager.GetNozzle(slotIndex).Update();
}
}
}
private void switchButton1_Click(object sender, EventArgs e)
{
GlobalVar.DeviceIsAuto = switchButton1.Checked;
}
private void timer2_Tick(object sender, EventArgs e)
{
}
public void txtSysParam_KeyUp(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
UpdateSysParam((TextBox)sender);
}
}
2 years ago
}
}