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.

434 lines
18 KiB
C#

using ChoiceTech.Halcon.Control;
using HalconDotNet;
using Rs.AutoDischarge.V3.Flow;
using Rs.Camera;
using Rs.Controls;
using Rs.DataAccess;
using Rs.Framework;
using Rs.Motion.Base;
using Rs.MotionPlat.AuxiliaryEquipment;
using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Entitys.Trays;
using Rs.MotionPlat.Flow;
using Rs.MotionPlat.Flow.Camera;
using Rs.MotionPlat.Flow.SafePosFlow;
using Rs.MotionPlat.Flow.Space;
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;
using static Rs.MotionPlat.Commom.SchedulingMessageBox;
namespace Rs.MotionPlat
{
public partial class FormMain : BaseForm
{
HObject defaultImage = new HObject();
public FormMain()
{
InitializeComponent();
}
private void Instance_OnMatchResult(List<MatchResult> obj)
{
int i = 1;
foreach (MatchResult matchResult in obj)
{
HWindow_Final hwin = null;
if (i == 9) return;
switch (i)
{
case 1: hwin = himgNozzle1; break;
case 2: hwin = himgNozzle2; break;
case 3: hwin = himgNozzle3; break;
case 4: hwin = himgNozzle4; break;
case 5: hwin = himgNozzle5; break;
case 6: hwin = himgNozzle6; break;
case 7: hwin = himgNozzle7; break;
case 8: hwin = himgNozzle8; break;
default:
break;
}
if (hwin != null)
{
hwin.HobjectToHimage(matchResult.Himage);
if(matchResult.IsOK)
{
hwin.DispObj(matchResult.ContourXld, "green");
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, matchResult.SN,20,20,"green");
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"x:{matchResult.OffsetRow}", 200, 20, "green");
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"y:{matchResult.OffsetCol}", 400, 20, "green");
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"r:{matchResult.OffsetA}", 600, 20, "green");
}
else
{
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "NG", 20, 20, "red");
}
i++;
}
}
}
private void Instance_OnUpCameraGrabResult(List<Flow.Camera.VisionResult> obj)
{
foreach (VisionResult matchResult in obj)
{
HWindow_Final hwin = null;
switch (matchResult.SlotIndex)
{
case 1: hwin = hwin_turnoverSlot1; break;
case 2: hwin = hwin_turnoverSlot2; break;
case 3: hwin = hwin_turnoverSlot3; break;
case 4: hwin = hwin_turnoverSlot4; break;
case 5: hwin = hwin_turnoverSlot5; break;
case 6: hwin = hwin_turnoverSlot6; break;
case 7: hwin = hwin_turnoverSlot7; break;
case 8: hwin = hwin_turnoverSlot8; break;
case 9: hwin = hwin_turnoverSlot9; break;
case 10: hwin = hwin_turnoverSlot10; break;
case 11: hwin = hwin_turnoverSlot11; break;
case 12: hwin = hwin_turnoverSlot12; break;
case 13: hwin = hwin_turnoverSlot13; break;
case 14: hwin = hwin_turnoverSlot14; break;
case 15: hwin = hwin_turnoverSlot15; break;
case 16: hwin = hwin_turnoverSlot16; break;
case 17: hwin = hwin_turnoverSlot17; break;
case 18: hwin = hwin_turnoverSlot18; break;
case 19: hwin = hwin_turnoverSlot19; break;
case 20: hwin = hwin_turnoverSlot20; break;
case 21: hwin = hwin_turnoverSlot21; break;
case 22: hwin = hwin_turnoverSlot22; break;
case 23: hwin = hwin_turnoverSlot23; break;
case 24: hwin = hwin_turnoverSlot24; break;
case 25: hwin = hwin_turnoverSlot25; break;
case 26: hwin = hwin_turnoverSlot26; break;
case 27: hwin = hwin_turnoverSlot27; break;
case 28: hwin = hwin_turnoverSlot28; break;
case 29: hwin = hwin_turnoverSlot29; break;
case 30: hwin = hwin_turnoverSlot30; break;
case 31: hwin = hwin_turnoverSlot31; break;
case 32: hwin = hwin_turnoverSlot32; break;
default:
break;
}
if (hwin != null)
{
if (matchResult.SearchModelOK)
{
hwin.HobjectToHimage(matchResult.SourceImage);
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, matchResult.SN, 20, 20, "green");
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"x:{matchResult.OffsetX}", 200, 20, "green");
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"y:{matchResult.OffsetY}", 400, 20, "green");
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"r:{matchResult.OffsetR}", 600, 20, "green");
}
else
{
hwin.ClearWindow();
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "NG", 20, 20, "red");
}
}
}
}
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)
{
//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") == "Empty1").First();
// if(dr!=null)
// {
// trayEmpty1.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
// trayEmpty1.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") == "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") == "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") == "Multi").First();
// if (dr != null)
// {
// trayMulti.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
// trayMulti.RowNum = int.Parse(dr["RowNum"].ToString());
// }
// dr = dt.AsEnumerable().Where(r => r.Field<string>("TrayName") == "Empty2").First();
// if (dr != null)
// {
// trayEmpty2.ColumnNum = int.Parse(dr["ColumnNum"].ToString());
// trayEmpty2.RowNum = int.Parse(dr["RowNum"].ToString());
// }
//}
//timer1.Interval = 500;
//timer1.Enabled = true;
//DischargeFlow.Instance.OnMatchResult += Instance_OnMatchResult;
//DischargeFlow.Instance.OnUpCameraGrabResult += Instance_OnUpCameraGrabResult;
//DischargeFlow.Instance.OnShowGrabResult += Instance_OnShowGrabResult;
//trayTurnover.ItemName = "Turnover";
//trayEmpty1.ItemName = "Empty1";
//trayInput.ItemName = "Input";
//trayOk.ItemName = "Ok";
//trayNg.ItemName = "Ng";
//trayMulti.ItemName = "Multi";
//trayEmpty2.ItemName = "Empty2";
//trayEmpty1.InitSlotStatus = ESlotStatus.Null;
//trayInput.InitSlotStatus = ESlotStatus.Null;
//trayOk.InitSlotStatus = ESlotStatus.Null;
//trayNg.InitSlotStatus = ESlotStatus.Null;
//trayMulti.InitSlotStatus = ESlotStatus.Null;
//trayEmpty2.InitSlotStatus = ESlotStatus.Null;
//GlobalTray.Empty1Tray = trayEmpty1;
//GlobalTray.InputTray = trayInput;
//GlobalTray.OkTary= trayOk;
//GlobalTray.NgTray= trayNg;
//GlobalTray.MultiTray = trayMulti;
//GlobalTray.Empty2Tray = trayEmpty2;
//GlobalTray.TurnoverTray = trayTurnover;
//GlobalTray.TestTray = trayTest;
////StockManager.Instance.Start();
//LoadStockStatus();
HOperatorSet.ReadImage(out defaultImage, "default.bmp");
}
private void Instance_OnShowGrabResult(VisionResult matchResult, bool arg2)
{
HWindow_Final hwin = null;
switch (matchResult.SlotIndex)
{
case 1: hwin = hwin_turnoverSlot1; break;
case 2: hwin = hwin_turnoverSlot2; break;
case 3: hwin = hwin_turnoverSlot3; break;
case 4: hwin = hwin_turnoverSlot4; break;
case 5: hwin = hwin_turnoverSlot5; break;
case 6: hwin = hwin_turnoverSlot6; break;
case 7: hwin = hwin_turnoverSlot7; break;
case 8: hwin = hwin_turnoverSlot8; break;
case 9: hwin = hwin_turnoverSlot9; break;
case 10: hwin = hwin_turnoverSlot10; break;
case 11: hwin = hwin_turnoverSlot11; break;
case 12: hwin = hwin_turnoverSlot12; break;
case 13: hwin = hwin_turnoverSlot13; break;
case 14: hwin = hwin_turnoverSlot14; break;
case 15: hwin = hwin_turnoverSlot15; break;
case 16: hwin = hwin_turnoverSlot16; break;
case 17: hwin = hwin_turnoverSlot17; break;
case 18: hwin = hwin_turnoverSlot18; break;
case 19: hwin = hwin_turnoverSlot19; break;
case 20: hwin = hwin_turnoverSlot20; break;
case 21: hwin = hwin_turnoverSlot21; break;
case 22: hwin = hwin_turnoverSlot22; break;
case 23: hwin = hwin_turnoverSlot23; break;
case 24: hwin = hwin_turnoverSlot24; break;
case 25: hwin = hwin_turnoverSlot25; break;
case 26: hwin = hwin_turnoverSlot26; break;
case 27: hwin = hwin_turnoverSlot27; break;
case 28: hwin = hwin_turnoverSlot28; break;
case 29: hwin = hwin_turnoverSlot29; break;
case 30: hwin = hwin_turnoverSlot30; break;
case 31: hwin = hwin_turnoverSlot31; break;
case 32: hwin = hwin_turnoverSlot32; break;
default:
break;
}
if (hwin != null)
{
hwin.ClearWindow();
if (arg2)
{
if (matchResult.ScanBarCodeOK)
{
hwin.HobjectToHimage(matchResult.SourceImage);
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"sn:{matchResult.SN}", 20, 20, "green");
//HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"x:{matchResult.OffsetX}", 200, 20, "green");
//HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"y:{matchResult.OffsetY}", 400, 20, "green");
//HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, $"r:{matchResult.OffsetR}", 600, 20, "green");
}
else
{
hwin.HobjectToHimage(matchResult.SourceImage);
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "NG", 20, 20, "red");
}
}
else
{
//加载默认图片
hwin.HobjectToHimage(defaultImage);
HalconTool.DispMessage(hwin.hWindowControl.HalconWindow, "no product", 20, 20, "red");
}
}
}
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();
}
}
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()
{
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);
}
else
{
GlobalTray.GetTray(ETrayType.Input).Status = EStockTrayStatus.Empty.ToString();
}
if (StockManager.Instance.HasTray(ETrayType.Ok))
{
StockManager.Instance.GetStock(ETrayType.Ok).ChangeStatus(EStockTrayStatus.Loaded);
}
else
{
GlobalTray.GetTray(ETrayType.Ok).Status = EStockTrayStatus.Empty.ToString();
}
if (StockManager.Instance.HasTray(ETrayType.Ng))
{
StockManager.Instance.GetStock(ETrayType.Ng).ChangeStatus(EStockTrayStatus.Loaded);
}
else
{
GlobalTray.GetTray(ETrayType.Ng).Status = EStockTrayStatus.Empty.ToString();
}
if (StockManager.Instance.HasTray(ETrayType.Multi))
{
StockManager.Instance.GetStock(ETrayType.Multi).ChangeStatus(EStockTrayStatus.Loaded);
}
else
{
GlobalTray.GetTray(ETrayType.Multi).Status = EStockTrayStatus.Empty.ToString();
}
if (StockManager.Instance.HasTray(ETrayType.Empty2))
{
StockManager.Instance.GetStock(ETrayType.Empty2).ChangeStatus(EStockTrayStatus.Loaded);
}
else
{
GlobalTray.GetTray(ETrayType.Empty2).Status = EStockTrayStatus.Empty.ToString();
}
}
}
}