using HalconDotNet; using Rs.Controls; using Rs.Framework; using Rs.Motion.Base.Config; using Rs.MotionPlat.Commom; using Rs.MotionPlat.Flow; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Rs.MotionPlat { public partial class TrayLocationConfig : BaseForm { string m_trayname = ""; public TrayLocationConfig(string trayname) { InitializeComponent(); m_trayname = trayname; cameraTemplate1.ItemName = m_trayname; //cameraTemplate1.SetFindShapeMode( EFindShapeMode.SelfDefine ); // cameraTemplate1.FindShapeEvent += CameraTemplate1_FindShapeEvent; } private void CameraTemplate1_FindShapeEvent(ChoiceTech.Halcon.Control.HWindow_Final arg1, HalconDotNet.HObject arg2) { /* gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) reduce_domain (Image21212121, Rectangle, ImageReduced) threshold (ImageReduced, Region, 0, 100) connection (Region, ConnectedRegions) select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 3000, 4000) select_shape (SelectedRegions, SelectedRegions1, 'circularity', 'and', 0.8, 1) smallest_circle (SelectedRegions1, Row, Column, Radius) gen_circle (Circle, Row, Column, Radius) */ HOperatorSet.GenRectangle1(out HObject rectSearch, 502, 291, 982, 785); HOperatorSet.ReduceDomain(arg2, rectSearch, out HObject imageReduced); HOperatorSet.Threshold(imageReduced, out HObject region, 0, 100); HOperatorSet.Connection(region, out HObject connectRegion); if(connectRegion.IsInitialized()&&connectRegion.CountObj()>0) { HOperatorSet.SelectShape(connectRegion, out HObject select1Regions, "area","and", 3000, 4000); HOperatorSet.SelectShape(select1Regions, out HObject select2Regions, "circularity", "and", 0.8, 1); HOperatorSet.SmallestCircle(select2Regions,out HTuple circleRow,out HTuple circleColumn,out HTuple circleRadius); if(circleRadius.Length>0 && circleRadius.DArr.Length==1) { HOperatorSet.GenCrossContourXld(out HObject cross, circleRow, circleColumn, 20, 0); arg1.DispObj(cross, "green"); } } } public TrayLocationConfig() { InitializeComponent(); } private void TrayLocationRecipe_Load(object sender, EventArgs e) { PositionHelper.BindPosition(groupBox5); PositionHelper.BindPosition(groupBox1); PositionHelper.BindPosition(groupBox2); PositionHelper.BindPosition(groupBox3); PositionHelper.BindPosition(groupBox4); PositionHelper.BindPosition(groupBox6); //txtTrayEmpty1CenterX.Text = SysConfigParam.GetValue("Tray"+ m_trayname + txtTrayEmpty1CenterX.Name.Replace("txt", "")); //txtTrayEmpty1CenterY.Text = SysConfigParam.GetValue("Tray" + m_trayname + txtTrayEmpty1CenterY.Name.Replace("txt", "")); } private void BtnTeach_Click(object sender, EventArgs e) { PositionHelper.Teach(this, sender); //Button btnTeach = (Button)sender; //string name = btnTeach.Name.Replace("btnTeach", ""); //string txtname = "txt" + name; //string varName =name; //Control txt = ControlManager.FindControl(this, txtname); //if(txt != null) //{ // string axisName=txt.Tag.ToString(); // double targetPos = Ops.GetCurPosition(axisName); // txt.Text = targetPos.ToString("0.000"); // SysConfigParam.Update(varName, targetPos.ToString()); //} } private void btnMove_Click(object sender, EventArgs e) { PositionHelper.Move2This(this, sender); //Button btnTeach = (Button)sender; //string name = btnTeach.Name.Replace("btnMove", ""); //string txtname = "txt" + name; //string varName = name; //Control txt = ControlManager.FindControl(this, txtname); //if (txt != null) //{ // string axisName = txt.Tag.ToString(); // AxisControl.GetAxis(axisName).MovePos(double.Parse(txt.Text), 4); // //double targetPos = Ops.GetCurPosition(axisName); // //txt.Text = targetPos.ToString("0.000"); // //SysConfigParam.Update(varName, targetPos.ToString()); //} } public void txtSysParam_KeyUp(object sender, KeyEventArgs e) { UpdateSysParam((TextBox)sender); } } }