using ChoiceTech.Halcon.Control; using HalconDotNet; using Rs.Camera; using Rs.Controls; using Rs.Framework; using Rs.Motion; using Rs.Motion.GugaoEcat; using Rs.MotionPlat.Commom; using Rs.MotionPlat.Flow; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using static System.Net.Mime.MediaTypeNames; namespace Rs.MotionPlat.SysConfig { public partial class LookCamera : BaseFormHeader { public LookCamera() { InitializeComponent(); } private void btnUpCameraGrab_Click(object sender, EventArgs e) { Task.Run(() => { btnUpCameraGrab.Invoke(new Action(() => { btnUpCameraGrab.Enabled = false; })); do { try { ImageProcess.ClearManualTrigger(); HikCamera.Instance.SetExposure("upCamera", float.Parse(txtUpCameraExposureTime.Text)); HikCamera.Instance.SetGain("upCamera", float.Parse(txtUpCameraGain.Text)); HikCamera.Instance.SetTrigger("upCamera", ETriggerMode.Manual, ETriggerSource.Software); //AxisControl.LoadX.ComparePulse(2, false); Ops.On("上相机光源"); Thread.Sleep(500); HikCamera.Instance.Grab("upCamera"); HObject image = null; Stopwatch timer = new Stopwatch(); timer.Start(); while (image == null && timer.ElapsedMilliseconds < 3000) { image = ImageProcess.GetManualImage(); if (image != null && image.IsInitialized()) { HOperatorSet.RotateImage(image, out image, SysConfigParam.GetValue("UpCameraRotate"), "constant"); himgNozzle8.Invoke(new Action(() => { himgNozzle8.HobjectToHimage(image); HOperatorSet.GetImageSize(image, out HTuple imgWidth, out HTuple imgHeight); HOperatorSet.GenCrossContourXld(out HObject camCenter, imgHeight / 2, imgWidth / 2, Math.Max(imgHeight, imgWidth), 0); himgNozzle8.DispObj(camCenter); })); break; } } Ops.Off("上相机光源"); Thread.Sleep(500); } catch (Exception) { } } while (checkBox1.Checked); btnUpCameraGrab.Invoke(new Action(() => { btnUpCameraGrab.Enabled = true; })); }); } private void btnDownCameraGrab_Click(object sender, EventArgs e) { Task.Run(() => { btnDownCameraGrab.Invoke(new Action(() => { btnDownCameraGrab.Enabled = false; })); do { ImageProcess.ClearManualTrigger(); HikCamera.Instance.SetExposure("locationCamera", GlobalVar.FlyGrabExposureTime); HikCamera.Instance.SetGain("locationCamera", GlobalVar.FlyGrabGain); HikCamera.Instance.SetTrigger("locationCamera", ETriggerMode.Manual, ETriggerSource.Software); Ops.On("下相机光源"); Thread.Sleep(500); HikCamera.Instance.Grab("locationCamera"); //AxisControl.LoadX.ComparePulse(1, false); HObject image = null; Stopwatch timer = new Stopwatch(); timer.Start(); while (image == null && timer.ElapsedMilliseconds<3000) { image = ImageProcess.GetManualImage(); if (image != null && image.IsInitialized()) { HOperatorSet.RotateImage(image, out image, SysConfigParam.GetValue("DownLocationCameraRotate"), "constant"); himgNozzle8.Invoke(new Action(() => { himgNozzle8.HobjectToHimage(image); HOperatorSet.GetImageSize(image, out HTuple imgWidth, out HTuple imgHeight); HOperatorSet.GenCrossContourXld(out HObject camCenter, imgHeight / 2, imgWidth / 2, Math.Max(imgHeight, imgWidth), 0); himgNozzle8.DispObj(camCenter); })); break; } } Ops.Off("下相机光源"); Thread.Sleep(500); } while (checkBox1.Checked); btnDownCameraGrab.Invoke(new Action(() => { btnDownCameraGrab.Enabled = true; })); }); } private void button1_Click(object sender, EventArgs e) { //Task.Run(() => { // SlotPoint sp1 = TrayPointManager.GetSlotPoint("Default", "Turnover", 1, EPointType.RUN); // SlotPoint sp2 = TrayPointManager.GetSlotPoint("Default", "Turnover", 8, EPointType.RUN); // int speed = 20; // AxisControl.LoadX.MovePos(sp1.X - 50, speed); // AxisControl.LoadY.MovePos(sp1.Y, speed); // while (true) // { // if (Ops.IsStop(AxisControl.LoadX, AxisControl.LoadY)) // { // break; // } // } // ImageProcess.ClearAutoTrigger(); // HikCamera.Instance.SetExposure("upCamera", GlobalVar.FlyGrabExposureTime); // HikCamera.Instance.SetGain("upCamera", 15); // HikCamera.Instance.SetTrigger("upCamera", ETriggerMode.Auto); // double[] targetPos = new double[8]; // for (int i = 0; i < 8; i++) // { // targetPos[i] = sp1.X + (i * 45); // } // AxisControl.LoadX.SetPosCompare(2, targetPos); // AxisControl.LoadX.MovePos(sp2.X + 50, speed); // //AxisControl.LoadY.MovePos(sp2.Y, 4); // while (true) // { // if (Ops.IsStop(AxisControl.LoadX, AxisControl.LoadY)) // { // break; // } // } // HObject[] images = new HObject[8]; // while (true) // { // images = ImageProcess.GetAutoImage(); // if (images.Length == 8) // break; // // break; // } // int ix = 0; // foreach (HObject image in images) // { // HOperatorSet.RotateImage(image, out HObject imagex, SysConfigParam.GetValue("UpCameraRotate"), "constant"); // HOperatorSet.WriteImage(imagex, "bmp", 0, $"d://images//{ix}"); // ix++; // } //}); } private void button2_Click(object sender, EventArgs e) { Task.Run(() => { AxisControl.LoadX.ClearCompare(2); AxisControl.LoadX.MovePos(SysConfigParam.GetValue($"Nozzle8CenterX") - 100, GlobalVar.WholeSpeed); AxisControl.LoadY.MovePos(SysConfigParam.GetValue($"Nozzle8CenterY"), GlobalVar.WholeSpeed); while (true) { if (Ops.IsStop("LoadX", "LoadY") || GlobalVar.VirtualAxis) { break; } } ImageProcess.ClearAutoTrigger(); HikCamera.Instance.SetTrigger("locationCamera", ETriggerMode.Auto); HikCamera.Instance.SetGain("locationCamera", 0); List grabPoints = new List(); for (int i = 8; i >0; i--) { grabPoints.Add(SysConfigParam.GetValue($"Nozzle{i}CenterX")); } AxisControl.LoadX.SetPosCompare(1, grabPoints.ToArray()); AxisControl.LoadX.MovePos(SysConfigParam.GetValue($"Nozzle1CenterX") + 30, GlobalVar.FlyCameraSpeed); while (true) { if (Ops.IsStop("LoadX") || GlobalVar.VirtualAxis) { break; } } HObject[] images = new HObject[8]; while (true) { images = ImageProcess.GetAutoImage(); if (images.Length == 8) break; // break; } int ix = 0; foreach (HObject image in images) { HOperatorSet.RotateImage(image, out HObject imagex, SysConfigParam.GetValue("UpCameraRotate"), "constant"); HOperatorSet.WriteImage(imagex, "bmp", 0, $"d://images//a{ix}"); ix++; } }); } private void LookCamera_Load(object sender, EventArgs e) { //获取屏幕的宽度 int tWidth = Screen.PrimaryScreen.WorkingArea.Width; int tHeight = Screen.PrimaryScreen.WorkingArea.Height; this.Opacity = 1; this.Location = new Point(tWidth - Width, tHeight - Height); } private void txtUpCameraExposureTime_KeyUp(object sender, KeyEventArgs e) { if(e.KeyCode== Keys.Enter) { HikCamera.Instance.SetExposure("upCamera", float.Parse(txtUpCameraExposureTime.Text)); } } private void txtUpCameraGain_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { HikCamera.Instance.SetGain("upCamera", float.Parse(txtUpCameraGain.Text)); } } private void txtDownCameraExposureTime_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { HikCamera.Instance.SetExposure("locationCamera", float.Parse(txtDownCameraExposureTime.Text)); } } private void txtDownCameraGain_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { HikCamera.Instance.SetGain("locationCamera", float.Parse(txtDownCameraGain.Text)); } } } }