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.

157 lines
5.9 KiB
C#

11 months ago
using Rs.Controls;
using Rs.DataAccess;
using Rs.Framework;
using Rs.MotionPlat.Commom;
using Rs.MotionPlat.Flow;
using Rs.MotionPlat.Flow.Camera;
using Rs.MotionPlat.Flow.SubFlow;
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.Recipe
{
/// <summary>
/// 周转盘产品定位
/// </summary>
public partial class TurnoverTrayProductLocate : BaseForm
{
private TraySlot selectedSlot;
private string m_trayName = ETrayType.Turnover.ToString();
DataTable dt = new DataTable();
SqliteHelper db = new SqliteHelper();
public TurnoverTrayProductLocate()
{
InitializeComponent();
cameraTemplate1.ItemName = "周转盘产品定位";
cameraTemplate1.CustomDefineGrabEvent += () => {
AxisControl.LoadX.ComparePulse(2, false);
};
//cameraTemplate1.SetFindShapeMode(EFindShapeMode.SelfDefine);
//cameraTemplate1.FindShapeEvent += CameraTemplate1_FindShapeEvent;
}
private void CameraTemplate1_FindShapeEvent(ChoiceTech.Halcon.Control.HWindow_Final arg1, HalconDotNet.HObject arg2)
{
string sn = BarCodeManager.FindCode(arg2);
//throw new NotImplementedException();
}
private void BindPoints()
{
string querySql = $"select * from TrayPoints where trayname='{m_trayName}' and recipename='{GlobalVar.CurRecipe}' order by slotindex";
DataTable dtBasePoints = db.GetDataTable(querySql);
if (ObjectHelper.IsNotNullorEmpty(dtBasePoints))
{
dgvBasePoints.DataSource = dtBasePoints;
}
}
private void rsTray1_SlotClickEvent(TraySlot arg1, MouseEventArgs arg2)
{
selectedSlot = arg1;
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}
private void goToolStripMenuItem_Click(object sender, EventArgs e)
{
if (selectedSlot != null)
{
int nozzleIndex = 0;
string querySql = $"select * from TrayPoints where trayname='{m_trayName}' and slotindex={selectedSlot.Index}";
DataTable dtGoPosition = db.GetDataTable(querySql);
if (ObjectHelper.IsNotNullorEmpty(dtGoPosition))
{
double targetX = double.Parse(dtGoPosition.Rows[0]["X"].ToString());
double targetY = double.Parse(dtGoPosition.Rows[0]["Y"].ToString());
ToolStripMenuItem subMenu = sender as ToolStripMenuItem;
ToolStripMenuItem parentMenu = (ToolStripMenuItem)subMenu.OwnerItem;
if (parentMenu.Text.IndexOf("Nozzle") >= 0)
{
nozzleIndex = int.Parse(parentMenu.Text.Replace("Nozzle", "").Replace("GO", ""));
SlotPoint dist = TrayPointManager.GetDistToNozzle1(nozzleIndex);
targetX += dist.X;
targetY += dist.Y;
}
DialogResult dr = Msg.ShowQuestion($"Are you sure to move loadx to {targetX},loady to {targetY}?");
if (dr == DialogResult.OK)
{
Motion.ErrorCode errCode = AxisControl.GetAxis("LoadX").MovePos(targetX, 4);
if (errCode > Motion.ErrorCode.Ok)
{
Msg.ShowError($"axis loadx move fail,ret={errCode}");
return;
}
errCode = AxisControl.GetAxis("LoadY").MovePos(targetY, 4);
if (errCode > Motion.ErrorCode.Ok)
{
Msg.ShowError($"axis loady move fail,ret={errCode}");
return;
}
}
}
}
}
private void TurnoverTrayProductLocate_Load(object sender, EventArgs e)
{
dgvBasePoints.AutoGenerateColumns = false;
BindPoints();
PositionHelper.BindSinglePosition(txtTurnoverTrayLocateXRange);
PositionHelper.BindSinglePosition(txtTurnoverTrayLocateYRange);
PositionHelper.BindSinglePosition(txtTurnoverTrayLocateRRange);
}
private void btnLocateCheck_Click(object sender, EventArgs e)
{
Task.Run(() =>
{
Invoke(new Action(() => {
btnLocateCheck.Enabled = false;
}));
VisionResult vr = UpCameraScanBarCodeFlow.Instance.ScanSingle(1,false,true,false);
//VisionResult vr= UpCameraScanBarCodeFlow.Instance.WaitSingle();
if(vr != null)
{
bool result = UpCameraScanBarCodeFlow.Instance.CheckResult(vr);
if(result) {
Invoke(new Action(() =>
{
lblResult.BackColor = Color.Lime;
lblResult.Text = "OK";
}));
}
else
{
Invoke(new Action(() =>
{
lblResult.BackColor = Color.Red;
lblResult.Text = "NG";
}));
}
}
Invoke(new Action(() =>
{
btnLocateCheck.Enabled = true;
}));
});
}
private void txtTurnoverTrayLocateRange_KeyUp(object sender, KeyEventArgs e)
{
TextBox txt = (TextBox)sender;
UpdateSysParam(txt);
}
}
}