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;
using CommonMethods;
using ChoiceTech.Halcon.Control;
using HalconDotNet;
using ViewROI;
namespace CaliperTool
{
public partial class FormCaliper : Form
{
public Caliper myCaliper = null;
public IToolInfo myToolInfo = null;
public HWindowTool_Smart myHwindow = new HWindowTool_Smart();
private static FormCaliper _instance;
public FormCaliper(ref object caliper)
{
InitializeComponent();
_instance = this;
if (caliper.GetType().FullName != "System.Object")
{
myToolInfo = (IToolInfo)caliper;
myCaliper = (Caliper)myToolInfo.tool;
myCaliper.DispImage();
}
}
public static FormCaliper Instance
{
get
{
if (_instance != null)
{
lock (_instance)
{
if (_instance == null)
{
object calib = new object();
_instance = new FormCaliper(ref calib);
}
return _instance;
}
}
else
{
object line = new object();
_instance = new FormCaliper(ref line);
return _instance;
}
}
}
private void FormCaliper_Load(object sender, EventArgs e)
{
this.panel1.Controls.Add(myHwindow);
myHwindow.Dock = DockStyle.Fill;
InitTool();
}
private void InitTool()
{
this.Text = myToolInfo.toolName;
Application.DoEvents();
// 预期参数
tbx_caliperLength1.Text = myCaliper.length1.ToString();
tbx_caliperLength2.Text = myCaliper.length2.ToString();
cbx_edgeSelect.Text = myCaliper.edgeSelect;
cbx_polarity.Text = myCaliper.polarity == "positive" ? "从暗到明" : "从明到暗";
tbx_threshold.Text = myCaliper.threshold.ToString();
tbx_Sigma.Text = myCaliper.sigma.ToString();
// 显示
chBDispRec.Checked = myCaliper.dispRec;
chBDispCross.Checked = myCaliper.dispCross;
chBDispCaliperROI.Checked = myCaliper.LineDisp;
}
private void btn_moveCliperRegion_Click(object sender, EventArgs e)
{
myCaliper.UpdateImage();
myCaliper.DrawExpectLine(myHwindow.DispHWindow);
}
private void btn_runCaliperool_Click(object sender, EventArgs e)
{
// 运行参数
myCaliper.threshold = Convert.ToInt16(tbx_threshold.Text.Trim());
myCaliper.length1 = Convert.ToDouble(tbx_caliperLength1.Text.Trim());
myCaliper.length2 = Convert.ToDouble(tbx_caliperLength2.Text.Trim());
myCaliper.polarity = cbx_polarity.SelectedItem.ToString() == "从明到暗" ? "negative" : "positive";
myCaliper.edgeSelect = cbx_edgeSelect.SelectedItem.ToString();
myCaliper.sigma = Convert.ToDouble(tbx_Sigma.Text.Trim());
myCaliper.Run(SoftwareRunState.Debug);
}
///
/// 设定工具运行状态
///
/// 运行中的信息
/// 运行状态
public void SetToolStatus(string msg, ToolRunStatu status)
{
if (myCaliper != null)
{
myCaliper.runMessage = msg;
myCaliper.toolRunStatu = status;
lb_RunStatus.Text = myCaliper.toolRunStatu == ToolRunStatu.Succeed ? "工具运行成功!" : $"工具运行异常, 异常原因:{myCaliper.runMessage}";
lb_RunTime.Text = myCaliper.runTime;
if (myCaliper.toolRunStatu == ToolRunStatu.Succeed)
{
statusStrip.BackColor = Color.LimeGreen;
}
else
{
statusStrip.BackColor = Color.Red;
}
}
}
private void tsbtRunTool_Click(object sender, EventArgs e)
{
}
}
}