Files
ATV_STDLabelAttach/QRValidation/Project/Dialog/fTeach.cs
atvstdla dc66158497 Add QRValidation project to repository
- Added QRValidation vision control system
- Includes CapCleaningControl UI components
- WebSocket-based barcode validation system
- Support for Crevis PLC integration
- Test projects for PLC emulator, motion, IO panel, and Modbus

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-02 11:38:38 +09:00

253 lines
8.4 KiB
C#

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 AR;
#if V22
using Euresys.Open_eVision_22_12;
#else
using Euresys.Open_eVision_2_11;
#endif
namespace Project
{
public partial class fTeach : Form
{
EImageBW8 img = null;
private arCtl.ImageBoxEvision iv1;
public fTeach(EBaseROI img_ = null)
{
InitializeComponent();
this.iv1 = new arCtl.ImageBoxEvision();
this.iv1.BackColor = Color.Black;
this.iv1.Dock = DockStyle.Fill;
this.panel2.Controls.Add(iv1);
iv1.Dock = DockStyle.Fill;
if (img_ != null)
{
img = new EImageBW8();
img.SetSize(img_);
img_.CopyTo(this.img);
//EasyImage.Copy(img_, img);
this.iv1.Image = img;
this.iv1.Invalidate();
this.iv1.ZoomFit();
}
this.FormClosed += FTeach_FormClosed;
}
private void FTeach_FormClosed(object sender, FormClosedEventArgs e)
{
if (this.img != null) img.Dispose();
runtest = false;
}
private void fTeach_Load(object sender, EventArgs e)
{
this.tbErode.Text = PUB.setting.erodevaluestr;
this.tbGainOff.Text = PUB.setting.GainOffsetListStr;
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
//open file
OpenFileDialog od = new OpenFileDialog();
if (od.ShowDialog() == DialogResult.OK)
{
if (this.img != null) this.img.Dispose();
img = new EImageBW8();
img.Load(od.FileName);
this.iv1.Image = img;
this.iv1.Invalidate();
this.iv1.ZoomFit();
}
}
private void btFineEvision_Click(object sender, EventArgs e)
{
string resultMessage;
iv1.Shapes.Clear();
//using (EImageBW8 img = new EImageBW8(this.img.Width, this.img.Height))
{
//img.SetImagePtr(this.img.Width, this.img.Height, this.img.MIplImage.ImageData);
var pccnt = 0;
var qrrlt = Util_Vision.DetectQR(img, this.iv1, pccnt++,
out resultMessage,
tbErode.Text,
tbGainOff.Text,
PUB.setting.blob_area_min,
PUB.setting.blob_area_max,
PUB.setting.blob_sigmaxy,
PUB.setting.blob_sigmayy,
PUB.setting.blob_sigmaxx,
PUB.setting.blob_minw,
PUB.setting.blob_maxw,
PUB.setting.blob_minh,
PUB.setting.blob_maxh);
var list = qrrlt.Item1;
//PUB.ProcessTime[ECalibrationMode]
this.tbBarcodeList.Text = string.Join(",", list.Select(t => t.data).ToArray());
//
foreach (var item in list.OrderByDescending(t => t.sid))
{
Console.WriteLine("sid:" + item.sid);
}
}
this.iv1.ZoomFit();
}
Boolean runtest = false;
int runcount = 0;
private void toolStripButton3_Click(object sender, EventArgs e)
{
if (runtest)
{
runtest = false;
PUB.log_[0].Add($"Test completed({runcount})");
}
else
{
string resultMessage;
iv1.Shapes.Clear();
runcount = 0;
runtest = true;
PUB.log_[0].Add("Test Evision Start");
Task.Run(() =>
{
while (runtest)
{
Util_Vision.DetectQR(img, this.iv1, runcount++,
out resultMessage,
tbErode.Text,
tbGainOff.Text,
PUB.setting.blob_area_min,
PUB.setting.blob_area_max,
PUB.setting.blob_sigmaxy,
PUB.setting.blob_sigmayy,
PUB.setting.blob_sigmaxx,
PUB.setting.blob_minw,
PUB.setting.blob_maxw,
PUB.setting.blob_minh,
PUB.setting.blob_maxh);
}
});
}
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
if (this.iv1.Image == null)
{
UTIL.MsgE("No image");
return;
}
var sd = new SaveFileDialog();
sd.FileName = "saveimage.bmp";
if (sd.ShowDialog() == DialogResult.OK)
this.iv1.Image.Save(sd.FileName);
}
private void button1_Click(object sender, EventArgs e)
{
PUB.setting.erodevaluestr = tbErode.Text;
PUB.setting.GainOffsetListStr = tbGainOff.Text;
PUB.setting.Save();
}
private void toolStripButton13_Click(object sender, EventArgs e)
{
this.iv1.DebugMode = !this.iv1.DebugMode;
this.iv1.Invalidate();
}
//private void toolStripButton6_Click(object sender, EventArgs e)
//{
// string resultMessage;
// iv1.ClearShape();
// using (EImageBW8 img = new EImageBW8(this.img.Width, this.img.Height))
// {
// img.SetImagePtr(this.img.Width, this.img.Height, this.img.MIplImage.ImageData);
// var pccnt = 0;
// var list = Util_Vision.DetectQR(img, this.iv1, pccnt++,
// out resultMessage,
// tbErode.Text,
// tbGainOff.Text,
// Pub.setting.blob_area_min,
// Pub.setting.blob_area_max,
// Pub.setting.blob_sigmaxy,
// Pub.setting.blob_sigmayy,
// Pub.setting.blob_sigmaxx,
// Pub.setting.blob_minw,
// Pub.setting.blob_maxw,
// Pub.setting.blob_minh,
// Pub.setting.blob_maxh,
// true);
// //
// foreach (var item in list.OrderByDescending(t => t.sid))
// {
// Console.WriteLine("sid:" + item.sid);
// }
// }
// this.iv1.ZoomFit();
//}
//private void toolStripButton5_Click(object sender, EventArgs e)
//{
// if (runtest)
// {
// runtest = false;
// Pub.log.Add($"테스트 종료({runcount})");
// }
// else
// {
// Pub.log.Add("Test Evision+Softtek Start");
// string resultMessage;
// iv1.ClearShape();
// runcount = 0;
// runtest = true;
// Task.Run(() =>
// {
// using (EImageBW8 img = new EImageBW8(this.img.Width, this.img.Height))
// {
// img.SetImagePtr(this.img.Width, this.img.Height, this.img.MIplImage.ImageData);
// while (runtest)
// {
// Util_Vision.DetectQR(img, this.iv1, runcount++,
// out resultMessage,
// tbErode.Text,
// tbGainOff.Text,
// Pub.setting.blob_area_min,
// Pub.setting.blob_area_max,
// Pub.setting.blob_sigmaxy,
// Pub.setting.blob_sigmayy,
// Pub.setting.blob_sigmaxx,
// Pub.setting.blob_minw,
// Pub.setting.blob_maxw,
// Pub.setting.blob_minh,
// Pub.setting.blob_maxh,
// true);
// }
// }
// });
// }
//}
}
}