|
|
|
|
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.Flow;
|
|
|
|
|
using Rs.MotionPlat.Flow.Space;
|
|
|
|
|
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
|
|
|
|
|
{
|
|
|
|
|
IAxis axis = null;
|
|
|
|
|
HWindow winHandle = null;
|
|
|
|
|
HObject hImage = null;
|
|
|
|
|
HObject hmodelImage = null;
|
|
|
|
|
HTuple h1;
|
|
|
|
|
HTuple modelID;
|
|
|
|
|
HObject final_Region = new HObject();
|
|
|
|
|
BindingList<MessageItem> runInfoList = new BindingList<MessageItem>();
|
|
|
|
|
BindingList<MessageItem> errorInfoList = new BindingList<MessageItem>();
|
|
|
|
|
public FormMain()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
//CameraTriggerTest.Instance.OnMatchResult += Instance_OnMatchResult;
|
|
|
|
|
//this.tabControlEx1.TabPages.RemoveAt(1);
|
|
|
|
|
//HikCamera.Instance.AutoGrabOkEvent += Instance_GrabOkEvent;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int num = 0;
|
|
|
|
|
private void Instance_CameraOkEvent1(HObject[] obj,List<MatchResult> mrs)
|
|
|
|
|
{
|
|
|
|
|
if (obj[0]!=null)
|
|
|
|
|
{
|
|
|
|
|
hwin_vac1.HobjectToHimage(obj[0]);
|
|
|
|
|
if (mrs!=null && mrs[0] != null)
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"cam1 R:{mrs[0].Row.ToString("0.000")},C:{mrs[0].Col.ToString("0.000")},A:{mrs[0].Angle.ToString("0.000")},S:{mrs[0].Score.ToString("0.000")}");
|
|
|
|
|
hwin_vac1.DispObj(mrs[0].ContourXld, "green");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (obj[1]!=null)
|
|
|
|
|
{
|
|
|
|
|
hwin_vac2.HobjectToHimage(obj[1]);
|
|
|
|
|
if (mrs != null && mrs[1]!=null)
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Insert($"cam2 R:{mrs[1].Row.ToString("0.000")},C:{mrs[1].Col.ToString("0.000")},A:{mrs[1].Angle.ToString("0.000")},S:{mrs[1].Score.ToString("0.000")}");
|
|
|
|
|
hwin_vac2.DispObj(mrs[1].ContourXld, "green");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//if (obj[2] != null)
|
|
|
|
|
//{
|
|
|
|
|
// hwin_vac3.HobjectToHimage(obj[2]);
|
|
|
|
|
// if (mrs != null && mrs[2] != null)
|
|
|
|
|
// {
|
|
|
|
|
// MessageQueue.Instance.Insert($"cam3 R:{mrs[2].Row.ToString("0.000")},C:{mrs[2].Col.ToString("0.000")},A:{mrs[2].Angle.ToString("0.000")},S:{mrs[2].Score.ToString("0.000")}");
|
|
|
|
|
// hwin_vac3.DispObj(mrs[2].ContourXld, "green");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (obj[3] != null)
|
|
|
|
|
//{
|
|
|
|
|
// hwin_vac4.HobjectToHimage(obj[3]);
|
|
|
|
|
// if (mrs != null && mrs[3] != null)
|
|
|
|
|
// {
|
|
|
|
|
// MessageQueue.Instance.Insert($"cam4 R:{mrs[3].Row.ToString("0.000")},C:{mrs[3].Col.ToString("0.000")},A:{mrs[3].Angle.ToString("0.000")},S:{mrs[3].Score.ToString("0.000")}");
|
|
|
|
|
// hwin_vac4.DispObj(mrs[3].ContourXld, "green");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (obj[4] != null)
|
|
|
|
|
//{
|
|
|
|
|
// hwin_vac5.HobjectToHimage(obj[4]);
|
|
|
|
|
// if (mrs != null && mrs[4] != null)
|
|
|
|
|
// {
|
|
|
|
|
// MessageQueue.Instance.Insert($"cam5 R:{mrs[4].Row.ToString("0.000")},C:{mrs[4].Col.ToString("0.000")},A:{mrs[4].Angle.ToString("0.000")},S:{mrs[4].Score.ToString("0.000")}");
|
|
|
|
|
// hwin_vac5.DispObj(mrs[1].ContourXld, "green");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (obj[5] != null)
|
|
|
|
|
//{
|
|
|
|
|
// hwin_vac6.HobjectToHimage(obj[5]);
|
|
|
|
|
// if (mrs != null && mrs[5] != null)
|
|
|
|
|
// {
|
|
|
|
|
// MessageQueue.Instance.Insert($"cam6 R:{mrs[5].Row.ToString("0.000")},C:{mrs[5].Col.ToString("0.000")},A:{mrs[5].Angle.ToString("0.000")},S:{mrs[5].Score.ToString("0.000")}");
|
|
|
|
|
// hwin_vac6.DispObj(mrs[5].ContourXld, "green");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (obj[6] != null)
|
|
|
|
|
//{
|
|
|
|
|
// hwin_vac7.HobjectToHimage(obj[6]);
|
|
|
|
|
// if (mrs != null && mrs[6] != null)
|
|
|
|
|
// {
|
|
|
|
|
// MessageQueue.Instance.Insert($"cam7 R:{mrs[6].Row.ToString("0.000")},C:{mrs[6].Col.ToString("0.000")} ,A: {mrs[6].Angle.ToString("0.000")} ,S: {mrs[6].Score.ToString("0.000")}");
|
|
|
|
|
// hwin_vac7.DispObj(mrs[6].ContourXld, "green");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (obj[7] != null)
|
|
|
|
|
//{
|
|
|
|
|
// hwin_vac8.HobjectToHimage(obj[7]);
|
|
|
|
|
// if (mrs != null && mrs[7] != null)
|
|
|
|
|
// {
|
|
|
|
|
// MessageQueue.Instance.Insert($"cam8 R:{mrs[7].Row.ToString("0.000")},C:{mrs[7].Col.ToString("0.000")} ,A: {mrs[7].Angle.ToString("0.000")} ,S: {mrs[7].Score.ToString("0.000")}");
|
|
|
|
|
// hwin_vac8.DispObj(mrs[7].ContourXld, "green");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ProductModel pm;
|
|
|
|
|
private void LoadModel()
|
|
|
|
|
{
|
|
|
|
|
string dirPath = Path.Combine("Recipe",GlobalVar.CurRecipe, "料盘1");
|
|
|
|
|
pm = new ProductModel();
|
|
|
|
|
HOperatorSet.ReadRegion(out HObject region, Path.Combine(dirPath, "search.reg"));
|
|
|
|
|
pm.SearchRegion = region;
|
|
|
|
|
}
|
|
|
|
|
Stopwatch time = new Stopwatch();
|
|
|
|
|
private void Instance_CameraOkEvent(int index,HObject obj)
|
|
|
|
|
{
|
|
|
|
|
time.Restart();
|
|
|
|
|
hwin_vac1.HobjectToHimage(obj);
|
|
|
|
|
string m_savePath = Path.Combine(GlobalVar.CurRecipe, "料盘1");
|
|
|
|
|
string filePath = Path.Combine(m_savePath, "model.shm");
|
|
|
|
|
HOperatorSet.ReadShapeModel(filePath, out HTuple modelID);
|
|
|
|
|
HOperatorSet.ReadRegion(out HObject searchRegion, Path.Combine(m_savePath + "\\search.reg"));
|
|
|
|
|
if (searchRegion.IsInitialized())
|
|
|
|
|
{
|
|
|
|
|
hImage = obj;
|
|
|
|
|
pm.SearchRegion = searchRegion;
|
|
|
|
|
HOperatorSet.ReduceDomain(obj, pm.SearchRegion, out HObject searchImg);
|
|
|
|
|
HOperatorSet.GetShapeModelContours(out HObject modelContours, modelID, 1);
|
|
|
|
|
HOperatorSet.FindShapeModel(searchImg, modelID, AngleTool.Deg2Rad(-10), AngleTool.Deg2Rad(20), new HTuple(0.3), 1, 0.5, "least_squares", 0, 0.9, out HTuple row, out HTuple column, out HTuple angle, out HTuple score);
|
|
|
|
|
if (score != null && score.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
int len = score.Length;
|
|
|
|
|
for (int i = 0; i < len; i++)
|
|
|
|
|
{
|
|
|
|
|
HOperatorSet.VectorAngleToRigid(0, 0, 0, row[i].D, column[i].D, angle[i].D, out HTuple homMat2D);
|
|
|
|
|
HOperatorSet.AffineTransContourXld(modelContours, out HObject contoursAffineTrans, homMat2D);
|
|
|
|
|
hwin_vac1.DispObj(contoursAffineTrans, "green");
|
|
|
|
|
|
|
|
|
|
//matchResultRow = row.DArr[i];
|
|
|
|
|
//matchResultColumn = column.DArr[i];
|
|
|
|
|
//matchResultAngle = angle.DArr[i];
|
|
|
|
|
//matchResultScore = score.DArr[i];
|
|
|
|
|
HOperatorSet.GenCrossContourXld(out HObject cross, row.DArr[i], column.DArr[i], 100, 0);
|
|
|
|
|
hwin_vac1.DispObj(cross, "red");
|
|
|
|
|
File.AppendAllText("d:\\test.csv",$"{index},{row.DArr[i]},{column.DArr[i]}\r\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HOperatorSet.GetImageSize(obj, out HTuple imgWidth, out HTuple imgHeight);
|
|
|
|
|
HOperatorSet.GenCrossContourXld(out HObject camCenter, imgHeight / 2, imgWidth / 2, Math.Max(imgHeight, imgWidth), 0);
|
|
|
|
|
hwin_vac1.DispObj(camCenter, "green");
|
|
|
|
|
time.Stop();
|
|
|
|
|
MessageQueue.Instance.Insert($"image process time:{time.ElapsedMilliseconds}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool cameraFinished = false;
|
|
|
|
|
int testNum = 0;
|
|
|
|
|
int speed = 50;
|
|
|
|
|
static int i = 0;
|
|
|
|
|
private void Instance_GrabOkEvent(int arg1, HalconDotNet.HObject arg2)
|
|
|
|
|
{
|
|
|
|
|
lock(this)
|
|
|
|
|
{
|
|
|
|
|
hwin_vac1.HobjectToHimage(arg2);
|
|
|
|
|
HOperatorSet.WriteImage(arg2, "bmp", 0, "d://temp//" + (i++).ToString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//hImage = arg2;
|
|
|
|
|
//HOperatorSet.FindShapeModel(hImage, modelID, -0.39, 0.79, 0.5, 1, 0.5, "least_squares", 0, 0.9, out HTuple row, out HTuple column, out HTuple angle, out HTuple score);
|
|
|
|
|
//if (score.Length>0)
|
|
|
|
|
//{
|
|
|
|
|
// Invoke(new Action(() => {
|
|
|
|
|
// textBox1.Text = score.DArr[0].ToString("0.000");
|
|
|
|
|
// textBox2.Text = row.DArr[0].ToString("0.000");
|
|
|
|
|
// textBox3.Text = column.DArr[0].ToString("0.000");
|
|
|
|
|
|
|
|
|
|
// string msg = $"{testNum},{speed},{textBox2.Text},{textBox3.Text},{textBox1.Text}\r\n";
|
|
|
|
|
// File.AppendAllText("log.txt", msg);
|
|
|
|
|
// MessageQueue.Instance.Insert(msg);
|
|
|
|
|
// }));
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// string msg = $"{testNum},{speed},丢步\r\n";
|
|
|
|
|
// File.AppendAllText("log.txt", msg);
|
|
|
|
|
// MessageQueue.Instance.Warn("未找到");
|
|
|
|
|
//}
|
|
|
|
|
//cameraFinished = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
winHandle = hwin_vac1.hWindowControl.HalconWindow;
|
|
|
|
|
h1 = hwin_vac1.HWindowHalconID;
|
|
|
|
|
HOperatorSet.GenEmptyObj(out final_Region);
|
|
|
|
|
HOperatorSet.GenEmptyObj(out hmodelImage);
|
|
|
|
|
modelID = new HTuple();
|
|
|
|
|
HOperatorSet.ReadShapeModel("Model/model.shm", out modelID);
|
|
|
|
|
LoadModel();
|
|
|
|
|
WorkFlow.Instance.OnMatchResult += Instance_OnMatchResult;
|
|
|
|
|
SpaceFlow.Instance.CameraOkEvent += Instance_CameraOkEvent1;
|
|
|
|
|
RsTray turnoverTray = new RsTray()
|
|
|
|
|
{
|
|
|
|
|
OffsetX = -40,
|
|
|
|
|
OffsetY = 18,
|
|
|
|
|
OffsetYEven = 42,
|
|
|
|
|
SinglePoint = true,
|
|
|
|
|
RowNum = 4,
|
|
|
|
|
ColumnNum = 8,
|
|
|
|
|
};
|
|
|
|
|
turnoverTray.ItemName = "中转盘";
|
|
|
|
|
//turnoverTray.Init();
|
|
|
|
|
GlobalTray.TurnoverTray = turnoverTray;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//dgv_runinfo.DataSource = runInfoList;
|
|
|
|
|
//dgv_errinfo.DataSource = errorInfoList;
|
|
|
|
|
timer1.Interval = 500;
|
|
|
|
|
timer1.Enabled = true;
|
|
|
|
|
HObject img = new HObject();
|
|
|
|
|
//HOperatorSet.CloseWindow(hWindow_Final1.HWindowHalconID);
|
|
|
|
|
//HOperatorSet.OpenWindow(0, 0, hWindow_Final1.Width, hWindow_Final1.Height, winHandle,"visible", "", out h1);
|
|
|
|
|
//HOperatorSet.openwi
|
|
|
|
|
string filepath = @"C:\Users\Administrator\MVS\Data\22.bmp";
|
|
|
|
|
if(File.Exists(filepath))
|
|
|
|
|
{
|
|
|
|
|
HOperatorSet.ReadImage(out HObject image, filepath);
|
|
|
|
|
hwin_vac1.HobjectToHimage(image);
|
|
|
|
|
//hSmartWindowControl1.HalconWindow.SetDraw("margin");
|
|
|
|
|
}
|
|
|
|
|
trayEmpty1.ItemName = "Empty1";
|
|
|
|
|
//trayEmpty1.Init();
|
|
|
|
|
trayInput.ItemName = "Input";
|
|
|
|
|
//trayInput.Init();
|
|
|
|
|
trayOk.ItemName = "Ok";
|
|
|
|
|
//trayOk.Init();
|
|
|
|
|
trayNg.ItemName = "Ng";
|
|
|
|
|
//trayNg.Init();
|
|
|
|
|
|
|
|
|
|
//okTray1.ItemName = "料盘5";
|
|
|
|
|
//okTray1.Init();
|
|
|
|
|
//okTray2.ItemName = "料盘6";
|
|
|
|
|
//okTray2.Init();
|
|
|
|
|
//okTray3.ItemName = "料盘7";
|
|
|
|
|
//okTray3.Init();
|
|
|
|
|
//ngTray.ItemName = "料盘8";
|
|
|
|
|
//ngTray.Init();
|
|
|
|
|
|
|
|
|
|
GlobalTray.Empty1Tray = trayEmpty1;
|
|
|
|
|
GlobalTray.InputTray = trayInput;
|
|
|
|
|
GlobalTray.OkTary= trayOk;
|
|
|
|
|
GlobalTray.NgTray= trayNg;
|
|
|
|
|
GlobalTray.MultiTray = trayMulti;
|
|
|
|
|
GlobalTray.Empty2Tray = trayEmpty2;
|
|
|
|
|
GlobalTray.TurnoverTray = trayTurnover;
|
|
|
|
|
tabControlEx1.TabPages.RemoveAt(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnWholeHome_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (MachineManage.Instance.MachineStatus == EMachineStatus.Homed
|
|
|
|
|
|| MachineManage.Instance.MachineStatus == EMachineStatus.NotInit
|
|
|
|
|
|| MachineManage.Instance.MachineStatus == EMachineStatus.NotHomed
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
HomeFlow.Instance.StartGoHome();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MessageQueue.Instance.Warn($"device state {MachineManage.Instance.MachineStatus} cann't home!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
MachineManage.Instance.RunState = ERunState.Waiting;
|
|
|
|
|
WorkFlow.Instance.Start();
|
|
|
|
|
TurnoverFlow.Instance.Start();
|
|
|
|
|
TakeTrayFlow.Instance.Start();
|
|
|
|
|
|
|
|
|
|
//TakeTrayFlow.Instance.Start();
|
|
|
|
|
//StockManager.Instance.Start();
|
|
|
|
|
//WorkEnvironment.Instance.Ready();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TakeDumpTest.Instance.Start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnStop_BtnClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
WorkFlow.Instance.Stop();
|
|
|
|
|
TurnoverFlow.Instance.Stop();
|
|
|
|
|
TakeTrayFlow.Instance.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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|