2043 lines
73 KiB
C#
2043 lines
73 KiB
C#
|
using DVPCameraType;
|
|||
|
using Microsoft.VisualBasic.Logging;
|
|||
|
using OpenCvSharp;
|
|||
|
using OpenCvSharp.Dnn;
|
|||
|
using OpenCvSharp.Extensions;
|
|||
|
using OpenCvSharp.XFeatures2D;
|
|||
|
using System.Data;
|
|||
|
using System.Diagnostics;
|
|||
|
using System.Drawing;
|
|||
|
using System.Drawing.Drawing2D;
|
|||
|
using System.Net;
|
|||
|
using System.Numerics;
|
|||
|
using System.Text.RegularExpressions;
|
|||
|
using System.Windows.Forms;
|
|||
|
using XKRS.Device.SimboVision.SimboHelper;
|
|||
|
using static HisenceYoloDetection.MainForm;
|
|||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|||
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
|||
|
|
|||
|
|
|||
|
namespace HisenceYoloDetection
|
|||
|
{
|
|||
|
public partial class MainForm : Form
|
|||
|
{
|
|||
|
public MainForm()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
}
|
|||
|
MGSCameraDriver Cam1 = new MGSCameraDriver();
|
|||
|
MGSCameraDriver Cam2 = new MGSCameraDriver();
|
|||
|
SQLiteHelper sqlhelper = new SQLiteHelper();
|
|||
|
TCPClienDriver Scanner = new TCPClienDriver();
|
|||
|
MelsecPLCTCPDriver melsecPLCTCPDriver = new MelsecPLCTCPDriver();
|
|||
|
SimboObjectDetection simboObjectDetection = new SimboObjectDetection();
|
|||
|
PaddleOcrModel paddleOcrModel = new PaddleOcrModel();
|
|||
|
PaddleOcrModelCountry paddleOcrModelCountry = new PaddleOcrModelCountry();
|
|||
|
List<XKHisence> xKHisences = new List<XKHisence>();
|
|||
|
|
|||
|
static AutoResetEvent myResetEvent = new AutoResetEvent(false);
|
|||
|
bool PLC545 = false;
|
|||
|
|
|||
|
bool PLC548 = false;
|
|||
|
string m_sKEYENCEBar;
|
|||
|
string IfChangeLanguage = "";//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ϴ<EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD>ͺ<EFBFBD>
|
|||
|
bool bTriger = true;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool bBarTriger = false;//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
bool bBar = false;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool IfCam1OneTriger = false;//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool IfCam1TwoTriger = false;//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool IfCam2Triger = false;//<2F><><EFBFBD><EFBFBD>2<EFBFBD><32>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
Mat Cam1ImgOne = new Mat();//ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>Ƭ
|
|||
|
Mat Cam1ImgTwo = new Mat();//ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>Ƭ
|
|||
|
Mat Cam2ImgShowBar = new Mat();//ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>Ƭ <20><><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
XKHisence xKNow;//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>е<EFBFBD>ϴ<EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool bOn = false;
|
|||
|
////////////////////////////
|
|||
|
public static int m_CamCount = 0;
|
|||
|
public int m_n_dev_count = 0;
|
|||
|
public static dvpCameraInfo[] m_info = new dvpCameraInfo[16];
|
|||
|
bool ifXZeroValue = false;
|
|||
|
bool ifYZeroValue = false;
|
|||
|
bool ifZZeroValue = false;
|
|||
|
|
|||
|
bool ifXForward = false;
|
|||
|
bool ifYForward = false;
|
|||
|
bool ifZForward = false;
|
|||
|
|
|||
|
bool ifXBackward = false;
|
|||
|
bool ifYBackward = false;
|
|||
|
bool ifZBackward = false;
|
|||
|
//¼<><C2BC><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
string BarPath = "";
|
|||
|
string Cam1OnePath = "";
|
|||
|
string Cam1TwoPath = "";
|
|||
|
string ModelChangePath = "";
|
|||
|
/// <summary>
|
|||
|
/// <20>鿴<EFBFBD><E9BFB4><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public void InitDevList()
|
|||
|
{
|
|||
|
dvpStatus status;
|
|||
|
uint i, n = 0;
|
|||
|
dvpCameraInfo dev_info = new dvpCameraInfo();
|
|||
|
|
|||
|
// "n" represents the number of cameras that is enumerated successfully, the drop-down list contains each camera's FriendlyName.
|
|||
|
DevNameCombo.Items.Clear();
|
|||
|
|
|||
|
// Get the number of cameras that has been connected to a computer.
|
|||
|
status = DVPCamera.dvpRefresh(ref n);
|
|||
|
Debug.Assert(status == dvpStatus.DVP_STATUS_OK);
|
|||
|
m_n_dev_count = (int)n;
|
|||
|
if (status == dvpStatus.DVP_STATUS_OK)
|
|||
|
{
|
|||
|
m_CamCount = 0;
|
|||
|
|
|||
|
for (i = 0; i < n; i++)
|
|||
|
{
|
|||
|
// Acquire each camera's information one by one.
|
|||
|
status = DVPCamera.dvpEnum(i, ref dev_info);
|
|||
|
Debug.Assert(status == dvpStatus.DVP_STATUS_OK);
|
|||
|
if (status == dvpStatus.DVP_STATUS_OK)
|
|||
|
{
|
|||
|
m_info[m_CamCount] = dev_info;
|
|||
|
|
|||
|
int item = -1;
|
|||
|
|
|||
|
// add User Define Name
|
|||
|
item = DevNameCombo.Items.Add(dev_info.UserID);
|
|||
|
|
|||
|
if (item == 0)
|
|||
|
{
|
|||
|
DevNameCombo.SelectedIndex = item;
|
|||
|
}
|
|||
|
m_CamCount++;
|
|||
|
|
|||
|
if (item == 0)
|
|||
|
{
|
|||
|
DevNameCombo.SelectedIndex = item;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
System.Timers.Timer SpeedTimer = new System.Timers.Timer();
|
|||
|
System.Timers.Timer PostionTimer = new System.Timers.Timer();
|
|||
|
|
|||
|
public delegate void MyDelegateUI(); //<2F><><EFBFBD><EFBFBD>ί<EFBFBD><CEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
MyDelegateUI myDelegateUI; //<2F><><EFBFBD><EFBFBD>ί<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
|||
|
public delegate void MyPosDelegateUI(); //<2F><><EFBFBD><EFBFBD>ί<EFBFBD><CEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
MyPosDelegateUI myPosDelegateUI; //<2F><><EFBFBD><EFBFBD>ί<EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
|
|||
|
public delegate void MyLogDelegateUI(); //<2F><><EFBFBD><EFBFBD>ί<EFBFBD><CEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
MyLogDelegateUI myLogDelegateUI; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ί<D6BE>ж<EFBFBD><D0B6><EFBFBD>
|
|||
|
private void Application_ThreadException(Exception e)
|
|||
|
{
|
|||
|
string msg = e.Message;
|
|||
|
|
|||
|
using (StreamWriter sw = new StreamWriter("D://ThreadException.log", true))
|
|||
|
{
|
|||
|
sw.WriteLine("================================");
|
|||
|
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|||
|
sw.WriteLine(msg);
|
|||
|
sw.Flush();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void MainForm_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
string vBarPath = "D:\\Hisence\\202452915589671.jpg";
|
|||
|
string vCam1OnePath = "D:\\Hisence\\4\\202452915596701.jpg";
|
|||
|
string vCam1TwoPath = "D:\\Hisence\\4\\202452915599711.jpg";
|
|||
|
string vModelChangePath = "D:\\Hisence\\config\\chinese.json";
|
|||
|
if (File.Exists(vBarPath) && File.Exists(vCam1OnePath) && File.Exists(vCam1TwoPath) && File.Exists(vModelChangePath))
|
|||
|
{
|
|||
|
BarPath = vBarPath;
|
|||
|
Cam1OnePath = vCam1OnePath;
|
|||
|
Cam1TwoPath = vCam1TwoPath;
|
|||
|
ModelChangePath = vModelChangePath;
|
|||
|
}
|
|||
|
ifXZeroValue = XZerorbx.Checked;
|
|||
|
ifYZeroValue = YZerorbx.Checked;
|
|||
|
InitDevList();
|
|||
|
this.WindowState = FormWindowState.Maximized;
|
|||
|
|
|||
|
string Dectionstr = "D:\\Hisence\\best.onnx";
|
|||
|
string CountryStr = "D:\\Hisence\\config\\chinese.json";
|
|||
|
if (File.Exists(Dectionstr) && File.Exists(CountryStr))
|
|||
|
{
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MessageBox.Show("<22><><EFBFBD><EFBFBD>" + Dectionstr + " " + CountryStr + "ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return;
|
|||
|
}
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
simboObjectDetection.Load(Dectionstr, "CPU", "images", 640, 640);
|
|||
|
paddleOcrModelCountry.Load(CountryStr, "CPU");
|
|||
|
paddleOcrModel.Load(CountryStr, "CPU");
|
|||
|
IfChangeLanguage = CountryStr;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
StartDecBtn.Enabled = false;
|
|||
|
|
|||
|
//myThread = new Thread(doWork);
|
|||
|
myDelegateUI = new MyDelegateUI(initAll);//<2F><><EFBFBD><EFBFBD>ί<EFBFBD><CEAF>
|
|||
|
|
|||
|
|
|||
|
myPosDelegateUI = new MyPosDelegateUI(initAll2);//<2F><><EFBFBD><EFBFBD>ί<EFBFBD><CEAF>
|
|||
|
|
|||
|
myLogDelegateUI = new MyLogDelegateUI(initAll3);//<2F><><EFBFBD><EFBFBD>ί<EFBFBD><CEAF>
|
|||
|
|
|||
|
//<2F><>ʼ<EFBFBD><CABC>PLC
|
|||
|
melsecPLCTCPDriver.Start();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//bool ismatch = IsMatchOcrText("WF3S7021BB", strMatListListOne);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
|
|||
|
|
|||
|
melsecPLCTCPDriver.Heartbeat -= PLcHeratAdress;
|
|||
|
melsecPLCTCPDriver.Heartbeat += PLcHeratAdress;
|
|||
|
|
|||
|
OnSpeedShow();//<2F>߳̿<DFB3><CCBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>ʾ<EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
OnPostionShow();//<2F>߳̿<DFB3><CCBF><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ʾ<EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
private void initAll() //<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
//richTextBox1.AppendText("TEST line \r");
|
|||
|
if (HspeedList.Count == 33)
|
|||
|
{
|
|||
|
|
|||
|
lnEditmiXHS.Text = HspeedList[1].ToString();
|
|||
|
lnEditmiYHS.Text = HspeedList[6].ToString();
|
|||
|
lnEditmiZHS.Text = HspeedList[11].ToString();
|
|||
|
//<2F><>λ<EFBFBD>ٶ<EFBFBD>
|
|||
|
lnEditmiXS.Text = HspeedList[0].ToString();
|
|||
|
lnEditmiYS.Text = HspeedList[5].ToString();
|
|||
|
lnEditmiZS.Text = HspeedList[10].ToString();
|
|||
|
}
|
|||
|
if (disShow != 0)
|
|||
|
{
|
|||
|
//TODOʵʱ<CAB5><CAB1>ʽ ֪<><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
double disreal = disShow * (-0.54054) + 1324.3232;
|
|||
|
DistanceShow.Text = Math.Ceiling(disreal).ToString();
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һԪһ<D4AA><D2BB><EFBFBD><EFBFBD>
|
|||
|
//y = -0.54054x + 1324.3232
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
private void initAll2() //<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
if (relPosStrList.Count == 31)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
// XPostion.Text = "";
|
|||
|
XPostion.Text = relPosStrList[0].ToString();
|
|||
|
//YPostion.Text = "";
|
|||
|
YPostion.Text = relPosStrList[5].ToString();
|
|||
|
// ZPostion.Text = "";
|
|||
|
ZPostion.Text = relPosStrList[10].ToString();
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
string Logtxt = "";
|
|||
|
private void initAll3() //<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
richTextBox1.AppendText(Logtxt);
|
|||
|
AllDSum.Text = AllDsums.ToString();
|
|||
|
OKDNum.Text = OKDsums.ToString();
|
|||
|
NGDNum.Text = NGDsums.ToString();
|
|||
|
using (StreamWriter stream = new StreamWriter("D://information.log", true))
|
|||
|
{
|
|||
|
stream.WriteLine(Logtxt);
|
|||
|
stream.Flush();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OnSpeedShow()
|
|||
|
{
|
|||
|
Task.Run(() =>
|
|||
|
{
|
|||
|
while (true)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
UpDatePlcValue(600, 2);
|
|||
|
//<2F><>404 <20><>ַ <20><>33<33><33><EFBFBD><EFBFBD>ַ
|
|||
|
UpDatePlcValue(404, 33);
|
|||
|
if (HspeedList.Count == 33)
|
|||
|
{
|
|||
|
|
|||
|
//<2F>ֶ<EFBFBD><D6B6>ٶ<EFBFBD>
|
|||
|
|
|||
|
this.Invoke(myDelegateUI); //richTextBox1.AppendText("TEST line \r");
|
|||
|
Application.DoEvents();
|
|||
|
}
|
|||
|
if (disShow != 0)
|
|||
|
{
|
|||
|
this.Invoke(myDelegateUI); //richTextBox1.AppendText("TEST line \r");
|
|||
|
Application.DoEvents();
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
Thread.Sleep(200);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
private void OnPostionShow()
|
|||
|
{
|
|||
|
Task.Run(() =>
|
|||
|
{
|
|||
|
while (true)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
UpDatePlcValue(102, 31);
|
|||
|
if (relPosStrList.Count == 31)
|
|||
|
{
|
|||
|
this.Invoke(myPosDelegateUI); //richTextBox1.AppendText("TEST line \r");
|
|||
|
Application.DoEvents();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
Thread.Sleep(200);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void CamOpenBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
Cam1.Start("Cam1");
|
|||
|
|
|||
|
bnGetParam.Enabled = true;
|
|||
|
SetCtrlWhenOpen();
|
|||
|
Cam1OpenBtn.BackColor = Color.Green;
|
|||
|
|
|||
|
}
|
|||
|
private void SetCtrlWhenOpen()
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
tbExposure.Enabled = true;
|
|||
|
tbGain.Enabled = true;
|
|||
|
// tbFrameRate.Enabled = true;
|
|||
|
bnGetParam.Enabled = true;
|
|||
|
bnSetParam.Enabled = true;
|
|||
|
}
|
|||
|
private void bnGetParam_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
tbExposure.Text = Cam1.dvpGetExposure().ToString();
|
|||
|
tbGain.Text = Cam1.dvpGetAnalogGain().ToString();
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void bnGetParam2_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
//tbExposure2.Text = Cam1.dvpGetExposure().ToString();
|
|||
|
//tbGain2.Text = Cam1.dvpGetAnalogGain().ToString();
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void Cam2OpenBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
// Cam2.Start("Cam2");
|
|||
|
// bnGetParam2.Enabled = true;
|
|||
|
// Cam2OpenBtn.BackColor = Color.Green;
|
|||
|
}
|
|||
|
|
|||
|
private void button2_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Cam1.Stop();
|
|||
|
SetCtrlWhenClose();
|
|||
|
}
|
|||
|
private void SetCtrlWhenClose()
|
|||
|
{
|
|||
|
|
|||
|
tbExposure.Enabled = false;
|
|||
|
tbGain.Enabled = false;
|
|||
|
// tbFrameRate.Enabled = false;
|
|||
|
bnGetParam.Enabled = false;
|
|||
|
bnSetParam.Enabled = false;
|
|||
|
}
|
|||
|
private void button3_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Cam2.Stop();
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void SnapshotCam1_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Cam1.Snapshot();
|
|||
|
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void SnapshotCam2_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
//Cam2.Snapshot();
|
|||
|
}
|
|||
|
int TimesCalled = 0;
|
|||
|
Bitmap OKbitmap = new Bitmap("OK.jpg");
|
|||
|
Bitmap NGbitmap = new Bitmap("NG.jpg");
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>̵߳<DFB3><CCB5><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void InitMachine_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
DataSet dataSet = SQLiteHelper.Query("select * from XK_HisenceDet");
|
|||
|
dataGridView1.DataSource = dataSet.Tables[0];
|
|||
|
|
|||
|
// xKNow = GetModeFromBar("VWJ070633V0WW80F0120356");//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
//string sql = "insert into XK_HisenceDet VALUES('" + xKNow.Type + "','" + xKNow.OcrBar + "'," + xKNow.MoveX + "," + xKNow.MoveY + "," +
|
|||
|
// xKNow.MoveZ + ",'" + "123" + "',null," + xKNow.MoveTwoZ + "," + xKNow.MoveTwoY + "," + xKNow.MoveTwoZ + ", '" + DateTime.Now + "'," + 1 + ")";
|
|||
|
//SQLiteHelper.ExecuteSql(sql);
|
|||
|
Cam1.Start("Cam1");
|
|||
|
if (Cam1.IfSuccess)
|
|||
|
{
|
|||
|
myLog("Cam1<6D><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
Cam2.Start("Cam2");
|
|||
|
if (Cam2.IfSuccess)
|
|||
|
{
|
|||
|
myLog("Cam2<6D><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
Cam1.OnHImageOutput -= OnCameraMatOutPut;
|
|||
|
Cam1.OnHImageOutput += OnCameraMatOutPut;
|
|||
|
Cam2.OnHImageOutput -= OnCameraMatOutPut2;
|
|||
|
Cam2.OnHImageOutput += OnCameraMatOutPut2;
|
|||
|
|
|||
|
OKOrNGShow.Image = OKbitmap;
|
|||
|
//<2F><>ʼ<EFBFBD><CABC>ɨ<EFBFBD><C9A8>ǹ
|
|||
|
//Scanner.Strart();
|
|||
|
//Scanner.OnClientDataReceived -= OnDataReceived;
|
|||
|
//Scanner.OnClientDataReceived += OnDataReceived;
|
|||
|
//Scanner.btnSendMsg("LON\r");//<2F><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
//myLog("<22><><EFBFBD>Ͷ<EFBFBD>ʿɨ<CABF><C9A8>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>", DateTime.Now);
|
|||
|
|
|||
|
//PLCʹ<43>ܿ<EFBFBD><DCBF><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("581", 0);//<2F><>λ<EFBFBD>ɿ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("504", 0);//<2F><>λ<EFBFBD>ɿ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("514", 0);//<2F><>λ<EFBFBD>ɿ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("524", 0);//<2F><>λ<EFBFBD>ɿ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("406", 60000); //д<><D0B4><EFBFBD>ֶ<EFBFBD><D6B6>ٶ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("416", 8000);
|
|||
|
melsecPLCTCPDriver.WriteInt("426", 8000);
|
|||
|
melsecPLCTCPDriver.WriteInt("404", 100000); //д<>붨λ<EBB6A8>ٶ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("414", 8000);
|
|||
|
melsecPLCTCPDriver.WriteInt("424", 8000);
|
|||
|
|
|||
|
|
|||
|
melsecPLCTCPDriver.WriteInt("500", 0);
|
|||
|
|
|||
|
melsecPLCTCPDriver.WriteInt("500", 1);
|
|||
|
Thread.Sleep(200);
|
|||
|
|
|||
|
bOn = true;
|
|||
|
melsecPLCTCPDriver.WriteInt("580", 0);//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("580", 1);//<2F><><EFBFBD><EFBFBD>
|
|||
|
Thread.Sleep(200);
|
|||
|
melsecPLCTCPDriver.WriteInt("580", 0);
|
|||
|
Thread.Sleep(200);
|
|||
|
while (true)
|
|||
|
{
|
|||
|
int IfXZeros = melsecPLCTCPDriver.ReadInt("102");
|
|||
|
int IfYZeros = melsecPLCTCPDriver.ReadInt("112");
|
|||
|
int IfZZeros = melsecPLCTCPDriver.ReadInt("122");
|
|||
|
if (IfXZeros <= 40 && IfYZeros <= 140 && IfZZeros <= 40)
|
|||
|
{
|
|||
|
StartDecBtn.Enabled = true;
|
|||
|
break;
|
|||
|
}
|
|||
|
Thread.Sleep(10);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
myLog("<22>豸ȫ<E8B1B8><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
Application_ThreadException(ex);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// ȫͼϴ<CDBC>»<EFBFBD> <20>ü<EFBFBD>֮<EFBFBD><D6AE> OCRʶ<52><CAB6><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="currentMatC"></param>
|
|||
|
/// <param name="cam1TwoML"></param>
|
|||
|
/// <param name="strMatListList"></param>
|
|||
|
private void InsertSqlRunData(ref Mat currentMatC, MLResult cam1TwoML, ref List<string> strMatListList, ref PaddleOcrModel IOcrModel)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#if false
|
|||
|
try
|
|||
|
{
|
|||
|
List<Mat> mats = new List<Mat>();
|
|||
|
|
|||
|
Mat mResultCut = currentMatC.Clone();
|
|||
|
string OcrTextinsert = "";
|
|||
|
for (int i = 0; i < cam1TwoML.ResultDetails.Count; i++)
|
|||
|
{
|
|||
|
Mat mResultCuti = mResultCut.Clone();
|
|||
|
int rectsx = cam1TwoML.ResultDetails[i].Rect.X;
|
|||
|
int rectsy = cam1TwoML.ResultDetails[i].Rect.Y;
|
|||
|
int rectsWidth = cam1TwoML.ResultDetails[i].Rect.Width;
|
|||
|
int rectsHeight = cam1TwoML.ResultDetails[i].Rect.Height;
|
|||
|
Rect area = new Rect(rectsx, rectsy, rectsWidth, rectsHeight);
|
|||
|
Mat matroi = new Mat(mResultCuti, area);
|
|||
|
mats.Add(matroi);
|
|||
|
//OCRʶ<52><CAB6><EFBFBD>ü<EFBFBD>ͼƬ
|
|||
|
MLRequest reqcut = new MLRequest();
|
|||
|
reqcut.currentMat = matroi.Clone();
|
|||
|
MLResultModel mLcut = IOcrModel.RunInferenceFixed(reqcut);
|
|||
|
|
|||
|
|
|||
|
for (int j = 0; j < mLcut.ResultDetails.Count; j++)
|
|||
|
{
|
|||
|
string jdetial = mLcut.ResultDetails[j].LabelDisplay;
|
|||
|
strMatListList.Add(jdetial);
|
|||
|
OcrTextinsert += jdetial + "##";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>OCR<43>ı<EFBFBD><C4B1>Ƿ<EFBFBD><C7B7><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="WashBar"></param>
|
|||
|
/// <param name="DetMatstrList"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private bool IsMatchOcrText(string WashBar, List<string> DetMatstrList)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
xKNow = GetModeFromBar(WashBar);//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
List<string> strMatListListB = new List<string>();
|
|||
|
if (xKNow.OcrText.Contains("##"))
|
|||
|
{
|
|||
|
|
|||
|
string[] sArray = Regex.Split(xKNow.OcrText, "##", RegexOptions.IgnoreCase);
|
|||
|
|
|||
|
|
|||
|
for (int i = 0; i < sArray.Count(); i++)
|
|||
|
{
|
|||
|
if (sArray[i] != "")
|
|||
|
{
|
|||
|
strMatListListB.Add(sArray[i]);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
var firstNotSecond = DetMatstrList.Except(strMatListListB, StringComparer.OrdinalIgnoreCase).ToList();
|
|||
|
var secondNotFirst = strMatListListB.Except(DetMatstrList, StringComparer.OrdinalIgnoreCase).ToList();
|
|||
|
if (firstNotSecond.Count() == 0 && secondNotFirst.Count() == 0)
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// ʵʱ<CAB5>ƶ<EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
/// </summary>
|
|||
|
public void MoveToP(int currentXP, int currentYP, int currentZP)
|
|||
|
{
|
|||
|
|
|||
|
melsecPLCTCPDriver.WriteInt("581", 0);
|
|||
|
melsecPLCTCPDriver.WriteInt("402", currentXP);
|
|||
|
melsecPLCTCPDriver.WriteInt("412", currentYP);
|
|||
|
melsecPLCTCPDriver.WriteInt("422", currentZP);
|
|||
|
melsecPLCTCPDriver.WriteInt("581", 1);
|
|||
|
Thread.Sleep(200);
|
|||
|
melsecPLCTCPDriver.WriteInt("581", 0);
|
|||
|
while (true)
|
|||
|
{
|
|||
|
int IfXZeros = melsecPLCTCPDriver.ReadInt("102");
|
|||
|
int IfYZeros = melsecPLCTCPDriver.ReadInt("112");
|
|||
|
int IfZZeros = melsecPLCTCPDriver.ReadInt("122");
|
|||
|
if ((IfXZeros < currentXP + 20) && (IfXZeros > currentXP - 20) && (IfYZeros <= currentYP + 20) && (IfYZeros >= currentYP - 20) && (IfZZeros <= currentZP + 20) && (IfZZeros >= currentZP - 20))//TODO:<3A><><EFBFBD>õ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
{
|
|||
|
|
|||
|
break;
|
|||
|
}
|
|||
|
Thread.Sleep(10);
|
|||
|
}
|
|||
|
}
|
|||
|
public int disShow = new int();
|
|||
|
public List<int> MonitorValues { get; set; } = new List<int>();
|
|||
|
public List<int> relPosStrList { get; set; } = new List<int>();
|
|||
|
public List<int> HspeedList { get; set; } = new List<int>();
|
|||
|
/// <summary>
|
|||
|
/// ʵʱˢ<CAB1><CBA2>PLC<4C><43>ַ<EFBFBD><D6B7>ֵ
|
|||
|
/// </summary>
|
|||
|
///
|
|||
|
public void UpDatePlcValue(int Address, int length)
|
|||
|
{
|
|||
|
//Task.Run(() =>
|
|||
|
//{
|
|||
|
// while (true)
|
|||
|
// {
|
|||
|
try
|
|||
|
{
|
|||
|
//ʵʱˢ<CAB1>»<EFBFBD>е<EFBFBD>ֵ<EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
List<int> newValues = melsecPLCTCPDriver.GetMonitorValues(Address, length);
|
|||
|
if (newValues == null || newValues.Count == 0)
|
|||
|
return;
|
|||
|
|
|||
|
Stopwatch sw = new Stopwatch();
|
|||
|
sw.Start();
|
|||
|
if (Address == 600)
|
|||
|
{
|
|||
|
disShow = melsecPLCTCPDriver.ReadInt(Convert.ToString(Address));
|
|||
|
}
|
|||
|
if (Address == 102) //<2F><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַΪ102
|
|||
|
{
|
|||
|
if (relPosStrList.Count == newValues.Count)
|
|||
|
{
|
|||
|
var tempNew = new List<int>(newValues);
|
|||
|
var tempOld = new List<int>(relPosStrList);
|
|||
|
//MonitorCheckAndInvoke(tempNew, tempOld);
|
|||
|
}
|
|||
|
relPosStrList = new List<int>(newValues);
|
|||
|
// relPosStrList = MonitorValues;
|
|||
|
//ʵʱ<CAB5><CAB1>ʾ<EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
if (Address == 404)
|
|||
|
{
|
|||
|
if (HspeedList.Count == newValues.Count)
|
|||
|
{
|
|||
|
var tempNew = new List<int>(newValues);
|
|||
|
var tempOld = new List<int>(HspeedList);
|
|||
|
//MonitorCheckAndInvoke(tempNew, tempOld);
|
|||
|
}
|
|||
|
HspeedList = new List<int>(newValues);
|
|||
|
//HspeedList = MonitorValues;
|
|||
|
//ʵʱ<CAB5><CAB1>ʾ<EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
sw.Stop();
|
|||
|
|
|||
|
if (sw.ElapsedMilliseconds > 20)
|
|||
|
{
|
|||
|
//LogAsync(DateTime.Now, LogLevel.Detail, $"{this.Name}<7D><>ѯʱ<D1AF>䣺{sw.ElapsedMilliseconds}");
|
|||
|
}
|
|||
|
Thread.Sleep(20);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
// }
|
|||
|
//});
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>ϴ<EFBFBD>»<EFBFBD>545<34>Ƿ<C7B7><F1B4A5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䴫<EFBFBD><E4B4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public void TrigerCamera1()
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̼߳<DFB3><CCBC><EFBFBD>PLC<4C><43>ֵ
|
|||
|
Task.Run(() =>
|
|||
|
{
|
|||
|
int iNum1 = 0;
|
|||
|
int iNum0 = 0;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
// myResetEvent.Set();
|
|||
|
PLC545 = true;
|
|||
|
int m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
|
|||
|
////int m_iCureent545 = CMPLC.SLMPReadD(545);
|
|||
|
if (m_iCureent545 != 1)
|
|||
|
{
|
|||
|
iNum0++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
iNum0 = 0;
|
|||
|
}
|
|||
|
if (iNum0 >= 5)
|
|||
|
{
|
|||
|
while (true)
|
|||
|
{
|
|||
|
m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
|
|||
|
if (m_iCureent545 == 1)
|
|||
|
{
|
|||
|
iNum1++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
iNum1 = 0;
|
|||
|
}
|
|||
|
if (iNum1 >= 5)
|
|||
|
{
|
|||
|
//Console.WriteLine("<22>ڶ<EFBFBD><DAB6>βɼ<CEB2>ͼ<EFBFBD><CDBC>");
|
|||
|
//Cam1.Snapshot();
|
|||
|
//Cam2.Snapshot();
|
|||
|
//IfCam1Triger = false;
|
|||
|
//IfCam2Triger = false;
|
|||
|
|
|||
|
iNum0 = 0;
|
|||
|
iNum1 = 0;
|
|||
|
break;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
Thread.Sleep(100);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public void OnGetBar()
|
|||
|
{
|
|||
|
Task.Run(() =>
|
|||
|
{
|
|||
|
int iNum0 = 0;
|
|||
|
int iNum1 = 0;
|
|||
|
|
|||
|
// const char pCR[4] = { 0x4C, 0x4F, 0x4E, 0x0D };<3B><><EFBFBD><EFBFBD>
|
|||
|
//const char pOFF[5] = { 0x4C, 0x4F, 0x46, 0x46, 0x0D };<3B>ر<EFBFBD>
|
|||
|
Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
//545<34><35><EFBFBD><EFBFBD>ʱΪ0
|
|||
|
// myResetEvent.Set();
|
|||
|
PLC545 = true;
|
|||
|
int m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
|
|||
|
|
|||
|
if (m_iCureent545 != 1)
|
|||
|
{
|
|||
|
iNum0++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
iNum0 = 0;
|
|||
|
}
|
|||
|
if (iNum0 >= 1)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
while (true)
|
|||
|
{
|
|||
|
bTriger = false;
|
|||
|
//<2F><><EFBFBD><EFBFBD>544һֱ<D2BB><D6B1>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s <20><><EFBFBD><EFBFBD>
|
|||
|
m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
|
|||
|
if (m_iCureent545 == 1)
|
|||
|
{
|
|||
|
iNum1++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
iNum1 = 0;
|
|||
|
}
|
|||
|
if (iNum1 >= 2)
|
|||
|
{
|
|||
|
if (bBar)
|
|||
|
{
|
|||
|
bBarTriger = true;//<2F>ij<DEB8><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>ȡ<EFBFBD>ͺ<EFBFBD>
|
|||
|
Cam2.SnapshotCount = 0;
|
|||
|
Cam2.Snapshot();
|
|||
|
|
|||
|
xKNow = GetModeFromBar("VWJ070633V0WW80F0120356");//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
//xKNow = GetModeFromBar(m_sKEYENCEBar);//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
if (Regex.IsMatch(xKNow.MoveX.ToString(), @"^[0-9]+$") && Regex.IsMatch(xKNow.MoveY.ToString(), @"^[0-9]+$") && Regex.IsMatch(xKNow.MoveZ.ToString(), @"^[0-9]+$"))
|
|||
|
{
|
|||
|
myLog("<22>ͺ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ɹ<EFBFBD>" + m_sKEYENCEBar, DateTime.Now);
|
|||
|
bBarTriger = true;
|
|||
|
//MoveToP(xKNow.MoveX, xKNow.MoveY, xKNow.MoveZ);// PLC<4C><43><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
break;
|
|||
|
}
|
|||
|
Thread.Sleep(2);
|
|||
|
bBar = false;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
Thread.Sleep(10);
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>ϴ<EFBFBD>»<EFBFBD>544<34>Ƿ<C7B7><F1B4A5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䴫<EFBFBD><E4B4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
public void TriggerCameral2()
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̼߳<DFB3><CCBC><EFBFBD>PLC<4C><43>ֵ
|
|||
|
Task.Run(() =>
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
int iNum1 = 0;
|
|||
|
int iNum0 = 0;
|
|||
|
Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
// myResetEvent.Set();
|
|||
|
PLC548 = true;
|
|||
|
int m_iCureent548 = melsecPLCTCPDriver.ReadInt("548");
|
|||
|
|
|||
|
if (m_iCureent548 != 0)
|
|||
|
{
|
|||
|
iNum0++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
iNum0 = 0;
|
|||
|
}
|
|||
|
if (iNum0 >= 1)
|
|||
|
{
|
|||
|
while (true)
|
|||
|
{
|
|||
|
|
|||
|
bTriger = false;
|
|||
|
//<2F><><EFBFBD><EFBFBD>544һֱ<D2BB><D6B1>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s <20><><EFBFBD><EFBFBD>
|
|||
|
m_iCureent548 = melsecPLCTCPDriver.ReadInt("548");
|
|||
|
if (m_iCureent548 == 0)
|
|||
|
{
|
|||
|
iNum1++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
iNum1 = 0;
|
|||
|
}
|
|||
|
if (iNum1 >= 2)
|
|||
|
{
|
|||
|
//if (bBarTriger)
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
myLog("<22><>һ<EFBFBD>βɼ<CEB2>ͼ<EFBFBD><CDBC>", DateTime.Now);
|
|||
|
//<2F>ƶ<EFBFBD>ģ<EFBFBD><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ǰ<EFBFBD>ƶ<EFBFBD>
|
|||
|
List<int> DisList = new List<int>();
|
|||
|
for (int i = 0; i < 5; i++)
|
|||
|
{
|
|||
|
int m600 = melsecPLCTCPDriver.ReadInt("600");
|
|||
|
DisList.Add(m600);
|
|||
|
}
|
|||
|
DisList.Remove(DisList.Max());
|
|||
|
DisList.Remove(DisList.Min());
|
|||
|
// <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>ֵ<EFBFBD><D6B5>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
|
|||
|
double average = DisList.Average();
|
|||
|
double disreal = average * (-0.54054) + 1324.3232;
|
|||
|
|
|||
|
|
|||
|
MoveToP(8974, 0, (int)(disreal));
|
|||
|
Thread.Sleep(500);
|
|||
|
Cam1.SnapshotCount = 0;
|
|||
|
Cam1.Snapshot();
|
|||
|
Cam2.SnapshotCount = 0;
|
|||
|
Cam2.Snapshot();
|
|||
|
// myLog("<22>ڶ<EFBFBD><DAB6>βɼ<CEB2>ͼ<EFBFBD><CDBC>", DateTime.Now);
|
|||
|
//if (xKNow != null)
|
|||
|
//{
|
|||
|
// MoveToP(xKNow.MoveTwoX, xKNow.MoveTwoY, xKNow.MoveTwoZ);
|
|||
|
//}
|
|||
|
// currentXP = 54964;
|
|||
|
MoveToP(54964, 0, (int)(disreal));
|
|||
|
//Thread.Sleep(3000);
|
|||
|
Cam1.Snapshot();
|
|||
|
MoveToP(8974, 0, 0);
|
|||
|
//if (xKNow != null)
|
|||
|
//{
|
|||
|
// MoveToP(xKNow.MoveX, xKNow.MoveY, xKNow.MoveZ);
|
|||
|
//}
|
|||
|
myLog("<22>ɼ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ɹ<EFBFBD>", DateTime.Now);
|
|||
|
//ģ<>鸴λ
|
|||
|
|
|||
|
bTriger = true;//<2F><><EFBFBD>Խ<EFBFBD><D4BD>м<EFBFBD><D0BC><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
|
|||
|
bBarTriger = false;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
iNum0 = 0;
|
|||
|
iNum1 = 0;
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
Thread.Sleep(10);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception e)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
});
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// PLC<4C><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="ifPlcHeart"></param>
|
|||
|
public void PLcHeratAdress(int ifPlcHeart)
|
|||
|
{
|
|||
|
if (ifPlcHeart == 1)
|
|||
|
{
|
|||
|
myLog("PLC<4C><43><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>", DateTime.Now);
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB>
|
|||
|
/// </summary>
|
|||
|
/// <param name="dt"></param>
|
|||
|
/// <param name="cameraMat"></param>
|
|||
|
/// <param name="SnapshotCount"></param>
|
|||
|
public void OnCameraMatOutPut(DateTime dt, Mat cameraMat, int SnapshotCount)
|
|||
|
{
|
|||
|
string fitImageFolder = "D://cam1//";
|
|||
|
if (!Directory.Exists(fitImageFolder))
|
|||
|
{
|
|||
|
Directory.CreateDirectory(fitImageFolder);
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (SnapshotCount == 1)
|
|||
|
{
|
|||
|
// Mat mat = Cv2.ImRead("F:\\<5C><><EFBFBD><EFBFBD>ϴ<EFBFBD>»<EFBFBD>\\cam1\\2024517161641.jpg");
|
|||
|
Cam1ImgOne = cameraMat;
|
|||
|
IfCam2Triger = true;
|
|||
|
originMatShow.Image = cameraMat.ToBitmap();
|
|||
|
//pictureBox1.Image = cameraMat.ToBitmap();
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
//<2F>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (SnapshotCount == 2)
|
|||
|
{
|
|||
|
// Mat mat = Cv2.ImRead("F:\\<5C><><EFBFBD><EFBFBD>ϴ<EFBFBD>»<EFBFBD>\\cam1\\2024517164541.jpg");
|
|||
|
Cam1ImgTwo = cameraMat;
|
|||
|
|
|||
|
IfCam1TwoTriger = true;
|
|||
|
originMatShow2.Image = cameraMat.ToBitmap();
|
|||
|
//pictureBox1.Image = cameraMat.ToBitmap();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
pictureBox1.Image = cameraMat.ToBitmap();
|
|||
|
cameraMat.ImWrite(fitImageFolder + dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Millisecond.ToString() + "1.jpg");
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="dt"></param>
|
|||
|
/// <param name="cameraMat"></param>
|
|||
|
/// <param name="SnapshotCount"></param>
|
|||
|
public void OnCameraMatOutPut2(DateTime dt, Mat cameraMat, int SnapshotCount)
|
|||
|
{
|
|||
|
string fitImageFolder = "D://cam2//";
|
|||
|
if (!Directory.Exists(fitImageFolder))
|
|||
|
{
|
|||
|
Directory.CreateDirectory(fitImageFolder);
|
|||
|
}
|
|||
|
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (SnapshotCount == 1)
|
|||
|
{
|
|||
|
// Mat mat = Cv2.ImRead("F:\\<5C><><EFBFBD><EFBFBD>ϴ<EFBFBD>»<EFBFBD>\\cam1\\2024517161641.jpg");
|
|||
|
Cam2ImgShowBar = cameraMat;
|
|||
|
IfCam2Triger = true;
|
|||
|
originMat2Show.Image = cameraMat.ToBitmap();
|
|||
|
//pictureBox1.Image = cameraMat.ToBitmap();
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
pictureBox2.Image = cameraMat.ToBitmap();
|
|||
|
cameraMat.ImWrite(fitImageFolder + dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Millisecond.ToString() + "1.jpg");
|
|||
|
|
|||
|
}
|
|||
|
public volatile int AllDsums = 0;
|
|||
|
public volatile int NGDsums = 0;
|
|||
|
public volatile int OKDsums = 0;
|
|||
|
/// <summary>
|
|||
|
/// <20><>ʼʶ<CABC><CAB6>
|
|||
|
/// </summary>
|
|||
|
public void ReadyDetect()
|
|||
|
{
|
|||
|
Task.Run(() =>
|
|||
|
{
|
|||
|
Thread.CurrentThread.Priority = ThreadPriority.Highest;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>2<EFBFBD><32>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (IfCam2Triger)
|
|||
|
{
|
|||
|
|
|||
|
//OCRʶ<52><CAB6>
|
|||
|
MLRequest req = new MLRequest();
|
|||
|
req.currentMat = Cam2ImgShowBar;
|
|||
|
//req.currentMat = Cv2.ImRead("D:\\Hisence\\202452414231.jpg");
|
|||
|
MLResultModel mL = paddleOcrModelCountry.RunInferenceFixed(req);
|
|||
|
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>ȶ<EFBFBD>
|
|||
|
xKNow = GetModeFromBar(mL.WashMachineBar);//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
if (xKNow.OcrBar == null)
|
|||
|
{
|
|||
|
myLog("δƥ<CEB4><C6A5><EFBFBD>ɹ<EFBFBD>" + IfChangeLanguage, DateTime.Now);
|
|||
|
break;
|
|||
|
}
|
|||
|
if (xKNow.OcrText != "" && xKNow.Detect != "")
|
|||
|
{
|
|||
|
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>е<EFBFBD>ϴ<EFBFBD>»<EFBFBD><C2BB>Ǻ<EFBFBD>֮ǰһ<C7B0><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
if (IfChangeLanguage == mL.WashMachineBar)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OCR.josn<73><6E><EFBFBD><EFBFBD>
|
|||
|
if (File.Exists(xKNow.OcrParm))
|
|||
|
{
|
|||
|
paddleOcrModel.Load(xKNow.OcrParm, "CPU");
|
|||
|
|
|||
|
IfChangeLanguage = mL.WashMachineBar;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
myLog("<22>ͺ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ɹ<EFBFBD>" + IfChangeLanguage, DateTime.Now);
|
|||
|
bBarTriger = true;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD><C5BF>Խ<EFBFBD><D4BD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ƶ<EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺź<CDBA><C5BA>ϴε<CFB4><CEB5>ͺ<EFBFBD>һ<EFBFBD><D2BB> <20>Ͳ<EFBFBD><CDB2>û<EFBFBD>ʶ<EFBFBD><CAB6>ģ<EFBFBD><C4A3>ll
|
|||
|
|
|||
|
IfCam2Triger = false;
|
|||
|
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>1<EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (IfCam1TwoTriger && bBarTriger)
|
|||
|
{
|
|||
|
AllDsums++;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
MLRequest req = new MLRequest();
|
|||
|
req.currentMat = Cam1ImgOne;
|
|||
|
req.ResizeWidth = 640;
|
|||
|
req.ResizeHeight = 640;
|
|||
|
req.Score = 0.3f;
|
|||
|
req.in_lable_path = "D:\\Hisence\\ClassName.txt";//<2F><>ǩ·<C7A9><C2B7>
|
|||
|
req.confThreshold = 0.3f;//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD>
|
|||
|
req.iouThreshold = 0.4f;//<2F><><EFBFBD><EFBFBD>IOU
|
|||
|
req.out_node_name = "output";
|
|||
|
MLResult mL = simboObjectDetection.RunInferenceFixed(req);
|
|||
|
DateTime dt = DateTime.Now;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>еĿ<D0B5><C4BF>ü<EFBFBD> ʶ<><CAB6><EFBFBD>ַ<EFBFBD><D6B7>Ա<EFBFBD><D4B1>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
List<string> strMatListListOne = new List<string>();
|
|||
|
Mat mResultCut = req.currentMat.Clone();
|
|||
|
|
|||
|
InsertSqlRunData(ref mResultCut, mL, ref strMatListListOne, ref paddleOcrModel);
|
|||
|
|
|||
|
|
|||
|
mL.ResultMap.Save("D://cam1//" + dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Millisecond.ToString() + "1result.jpg");
|
|||
|
ResultMatShow.Image = mL.ResultMap;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
MLRequest req2 = new MLRequest();
|
|||
|
req2.currentMat = Cam1ImgTwo;
|
|||
|
req2.ResizeWidth = 640;
|
|||
|
req2.ResizeHeight = 640;
|
|||
|
req2.Score = 0.3f;
|
|||
|
req2.in_lable_path = "D:\\Hisence\\ClassName.txt";//<2F><>ǩ·<C7A9><C2B7>
|
|||
|
req2.confThreshold = 0.3f;//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD>
|
|||
|
req2.iouThreshold = 0.4f;//<2F><><EFBFBD><EFBFBD>IOU
|
|||
|
req2.out_node_name = "output";
|
|||
|
MLResult mL2 = simboObjectDetection.RunInferenceFixed(req2);
|
|||
|
List<string> strMatListListTwo = new List<string>();
|
|||
|
Mat mResultCut2 = req2.currentMat.Clone();
|
|||
|
|
|||
|
InsertSqlRunData(ref mResultCut2, mL2, ref strMatListListTwo, ref paddleOcrModel);
|
|||
|
mL2.ResultMap.Save("D://cam1//" + dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Millisecond.ToString() + "2result.jpg");
|
|||
|
ResultMatShow2.Image = mL2.ResultMap;
|
|||
|
|
|||
|
//ִ<>бȶ<D0B1> <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>2<EFBFBD><32>3һ<33><D2BB>
|
|||
|
string[] listLabels = xKNow.Detect.Split(",");
|
|||
|
|
|||
|
MLResult MLsum = mL;
|
|||
|
for (int i = 0; i < mL2.ResultDetails.Count; i++)
|
|||
|
{
|
|||
|
MLsum.ResultDetails.Add(mL2.ResultDetails[i]);
|
|||
|
}
|
|||
|
string[] RealLabels = new string[MLsum.ResultDetails.Count];
|
|||
|
string detstr = "";
|
|||
|
for (int i = 0; i < MLsum.ResultDetails.Count; i++)
|
|||
|
{
|
|||
|
RealLabels[i] = MLsum.ResultDetails[i].LabelName;
|
|||
|
if (i < MLsum.ResultDetails.Count - 1)
|
|||
|
{
|
|||
|
detstr += RealLabels[i] + ",";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
detstr += RealLabels[i];
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
IfCam1TwoTriger = false;
|
|||
|
bBarTriger = false;
|
|||
|
bool isMatch = false;
|
|||
|
string OcrTextinsert = "";
|
|||
|
List<string> bingji = strMatListListOne.Union(strMatListListTwo).ToList();//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
|
|||
|
for (int j = 0; j < bingji.Count; j++)
|
|||
|
{
|
|||
|
string jdetial = bingji[j];
|
|||
|
OcrTextinsert += jdetial + "##";
|
|||
|
}
|
|||
|
|
|||
|
bool ismatch = IsMatchOcrText(xKNow.OcrBar, bingji);
|
|||
|
|
|||
|
// <20><><EFBFBD>
|
|||
|
//var except = listLabels.Except(RealLabels);
|
|||
|
//Console.WriteLine("<22><><EFBFBD><EFBFBD><EFBFBD>IJ:");
|
|||
|
//if (except.Count() == 0)
|
|||
|
//{
|
|||
|
// // isMatch = true;
|
|||
|
//}
|
|||
|
//foreach (var num in except)
|
|||
|
//{
|
|||
|
// if ((num == "2" || num == "3") && except.Count() == 1)
|
|||
|
// {
|
|||
|
// // isMatch = true;
|
|||
|
// break;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// // isMatch = false;
|
|||
|
// break;
|
|||
|
// }
|
|||
|
//}
|
|||
|
if (isMatch)
|
|||
|
{
|
|||
|
OKDsums++;
|
|||
|
myLog("ƥ<><C6A5><EFBFBD>ɹ<EFBFBD>", DateTime.Now);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
string sql = "insert into XK_HisenceDet VALUES('" + xKNow.Type + "','" + xKNow.OcrBar + "'," + xKNow.MoveX + "," + xKNow.MoveY + "," +
|
|||
|
xKNow.MoveZ + ",'" + detstr + "','" + OcrTextinsert + "'," + xKNow.MoveTwoX + "," + xKNow.MoveTwoY + "," + xKNow.MoveTwoZ + ", '" + DateTime.Now + "'," + 1 + ")";
|
|||
|
SQLiteHelper.ExecuteSql(sql);
|
|||
|
OKOrNGShow.Image = OKbitmap;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
NGDsums++;
|
|||
|
myLog("ƥ<><C6A5>ʧ<EFBFBD><CAA7>", DateTime.Now);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
string sql = "insert into XK_HisenceDet VALUES('" + xKNow.Type + "','" + xKNow.OcrBar + "'," + xKNow.MoveX + "," + xKNow.MoveY + "," +
|
|||
|
xKNow.MoveZ + ",'" + detstr + "','" + OcrTextinsert + "'," + xKNow.MoveTwoX + "," + xKNow.MoveTwoY + "," + xKNow.MoveTwoZ + ", '" + DateTime.Now + "'," + 0 + ")";
|
|||
|
SQLiteHelper.ExecuteSql(sql);
|
|||
|
OKOrNGShow.Image = NGbitmap;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception e)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
finally
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Thread.Sleep(10);
|
|||
|
}
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>л<EFBFBD>ȡ<EFBFBD>ͺ<EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="SkBar"></param>
|
|||
|
/// <returns></returns>
|
|||
|
public XKHisence GetModeFromBar(string SkBar)
|
|||
|
{
|
|||
|
//<2F><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
DataSet ds = SQLiteHelper.Query($"select * from XK_Hisence where OCRBar='{SkBar}' ");
|
|||
|
XKHisence XK_hisence = new XKHisence();
|
|||
|
|
|||
|
//cbx.DataSource = ds;
|
|||
|
DataTableReader rdr = ds.CreateDataReader();
|
|||
|
//cbx.Rows.Clear();
|
|||
|
while (rdr.Read())//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
{
|
|||
|
|
|||
|
// xKOCROfficeWord.ID = (int)rdr["ID"];
|
|||
|
XK_hisence.Type = (string)rdr["Type"];
|
|||
|
XK_hisence.OcrBar = (string)rdr["OcrBar"];
|
|||
|
XK_hisence.MoveX = (int)rdr["MoveX"];
|
|||
|
XK_hisence.MoveY = (int)rdr["MoveY"];
|
|||
|
XK_hisence.MoveZ = (int)rdr["MoveZ"];
|
|||
|
XK_hisence.Detect = (string)rdr["Detect"];
|
|||
|
XK_hisence.OcrText = (string)rdr["OcrText"];
|
|||
|
XK_hisence.MoveTwoX = (int)rdr["MoveTwoX"];
|
|||
|
XK_hisence.MoveTwoY = (int)rdr["MoveTwoY"];
|
|||
|
XK_hisence.MoveTwoZ = (int)rdr["MoveTwoZ"];
|
|||
|
XK_hisence.OcrParm = (string)rdr["OcrParm"];
|
|||
|
XK_hisence.Language = (string)rdr["Language"];
|
|||
|
//xKHisences.Add(XK_hisence);
|
|||
|
return XK_hisence;
|
|||
|
//additem(XK_hisence);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
return XK_hisence;
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
/// </summary>
|
|||
|
/// <param name="data"></param>
|
|||
|
public void OnDataReceived(byte[] data)
|
|||
|
{
|
|||
|
//
|
|||
|
if (data.Length > 10)
|
|||
|
{
|
|||
|
m_sKEYENCEBar = System.Text.Encoding.UTF8.GetString(data);
|
|||
|
// myLog("<22>ͺ<EFBFBD>Ocr" + m_sKEYENCEBar, DateTime.Now);
|
|||
|
|
|||
|
bBar = true;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// PLC<4C>ij<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
/// </summary>
|
|||
|
/// <param name="sender"></param>
|
|||
|
/// <param name="e"></param>
|
|||
|
private void button4_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
melsecPLCTCPDriver.Start();
|
|||
|
myLog("<22><><EFBFBD><EFBFBD>PLC<4C>ɹ<EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
/// <20><>־
|
|||
|
/// </summary>
|
|||
|
/// <param name="txt"></param>
|
|||
|
/// <param name="date"></param>
|
|||
|
private void myLog(string txt, DateTime date)
|
|||
|
{
|
|||
|
Logtxt = txt + " ʱ<>䣺" + date.ToString() + "\n";
|
|||
|
this.Invoke(myLogDelegateUI); //richTextBox1.AppendText("TEST line \r");
|
|||
|
Application.DoEvents();
|
|||
|
}
|
|||
|
private void readAdress_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (Regex.IsMatch(readPLc.Text.ToString(), @"^[0-9]+$"))
|
|||
|
{
|
|||
|
int m_iCureent545 = melsecPLCTCPDriver.ReadInt(readPLc.Text.ToString());
|
|||
|
showPLC.Text = m_iCureent545.ToString();
|
|||
|
myLog("<22><>ȡ" + readPLc.Text.ToString() + "<22><><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void wirteAdress_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (Regex.IsMatch(WriteAdress.Text.ToString(), @"^[0-9]+$") && Regex.IsMatch(PLCValue.Text.ToString(), @"^[0-9]+$"))
|
|||
|
{
|
|||
|
melsecPLCTCPDriver.WriteInt(WriteAdress.Text.ToString(), Convert.ToInt16(PLCValue.Text));
|
|||
|
myLog("д" + WriteAdress.Text.ToString() + "<22><><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception ex) { }
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void ScanDevList_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
InitDevList();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void PLCPowerON_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (bOn == true)
|
|||
|
{
|
|||
|
melsecPLCTCPDriver.WriteInt("500", 0);
|
|||
|
// PLCcontrol->WritePlc(500, 0);
|
|||
|
bOn = false;
|
|||
|
PLCPowerON.Text = "ʹ<><CAB9>On";
|
|||
|
myLog("ʹ<><CAB9>On<4F><6E><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
melsecPLCTCPDriver.WriteInt("500", 1);
|
|||
|
bOn = true;
|
|||
|
PLCPowerON.Text = "ʹ<><CAB9>Off";
|
|||
|
myLog("ʹ<><CAB9>Off", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
bool IfPLCDiskZero = false;
|
|||
|
bool IfPLCPostion = false;
|
|||
|
private void PLCDiskZero_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
//if (!IfPLCDiskZero)
|
|||
|
//{
|
|||
|
melsecPLCTCPDriver.WriteInt("580", 0);
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("580", 1);
|
|||
|
|
|||
|
Thread.Sleep(200);
|
|||
|
melsecPLCTCPDriver.WriteInt("580", 0);
|
|||
|
IfPLCDiskZero = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("580<38><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
//}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// melsecPLCTCPDriver.WriteInt("580", 0);
|
|||
|
// IfPLCDiskZero = false;
|
|||
|
// this.txtSetValue.Text = "0";
|
|||
|
// myLog("580ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
//}
|
|||
|
}
|
|||
|
|
|||
|
private void PLCPostion_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
//if (!IfPLCPostion)
|
|||
|
//{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
if (Regex.IsMatch(lnEditmiXOP.Text.ToString(), @"^[0-9]+$") && Regex.IsMatch(lnEditmiYOP.Text.ToString(), @"^[0-9]+$") && Regex.IsMatch(lnEditmiZOP.Text.ToString(), @"^[0-9]+$"))
|
|||
|
{
|
|||
|
if (lnEditmiXOP.Text != "" && lnEditmiYOP.Text != "" && lnEditmiZOP.Text != "")
|
|||
|
{
|
|||
|
//ͨ<><CDA8><EFBFBD><EFBFBD>ȡ<EFBFBD>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ <20><>ΪĿ<CEAA><C4BF>λ<EFBFBD><CEBB>
|
|||
|
int iXTPosition = Convert.ToInt16(lnEditmiXOP.Text); //<2F><>λX<CEBB><58>λ<EFBFBD><CEBB>
|
|||
|
int iYTPosition = Convert.ToInt16(lnEditmiYOP.Text);
|
|||
|
int iZTPosition = Convert.ToInt16(lnEditmiZOP.Text);
|
|||
|
|
|||
|
//<2F><>Ҫ<EFBFBD><D2AA>λ<EFBFBD><CEBB>λ<EFBFBD><CEBB>д<EFBFBD><D0B4>
|
|||
|
melsecPLCTCPDriver.WriteInt("402", iXTPosition);
|
|||
|
melsecPLCTCPDriver.WriteInt("412", iYTPosition);
|
|||
|
melsecPLCTCPDriver.WriteInt("422", iZTPosition);
|
|||
|
|
|||
|
string logs = "д<>붨λλ<CEBB><CEBB> X" + iXTPosition + "Y:" + iYTPosition + "Z:" + iZTPosition + " ";
|
|||
|
myLog(logs, DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
melsecPLCTCPDriver.WriteInt("581", 1);
|
|||
|
Thread.Sleep(1000);
|
|||
|
melsecPLCTCPDriver.WriteInt("581", 0);
|
|||
|
IfPLCPostion = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("XYZ<59><5A>ʼ<EFBFBD><CABC>λ581", DateTime.Now);
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// melsecPLCTCPDriver.WriteInt("581", 0);
|
|||
|
// IfPLCPostion = false;
|
|||
|
// this.txtSetValue.Text = "0";
|
|||
|
// myLog("XYZֹͣ581", DateTime.Now);
|
|||
|
//}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
private void StartDecBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
//OnGetBar();
|
|||
|
TriggerCameral2();
|
|||
|
ReadyDetect();
|
|||
|
myLog("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳ɹ<CCB3>", DateTime.Now);
|
|||
|
}
|
|||
|
|
|||
|
private void InsertSqlBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
InsertSqlFrm insertSqlFrm = new InsertSqlFrm();
|
|||
|
// insertSqlFrm.
|
|||
|
//insertSqlFrm.Parent = this;
|
|||
|
insertSqlFrm.ShowDialog();
|
|||
|
}
|
|||
|
|
|||
|
private void RefeshData_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
DataSet dataSet = SQLiteHelper.Query("select * from XK_HisenceDet");
|
|||
|
dataGridView1.DataSource = dataSet.Tables[0];
|
|||
|
}
|
|||
|
|
|||
|
private void panel8_Paint(object sender, PaintEventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void SetHandleSpeed_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (Regex.IsMatch(lnEditmiXHS.Text.ToString(), @"^[0-9]+$") && Regex.IsMatch(lnEditmiYHS.Text.ToString(), @"^[0-9]+$") && Regex.IsMatch(lnEditmiZHS.Text.ToString(), @"^[0-9]+$"))
|
|||
|
{
|
|||
|
if (SetlnEditmiXH.Text != "" && SetlnEditmiYH.Text != "" && SetlnEditmiZH.Text != "")
|
|||
|
{
|
|||
|
int XHspeed = Convert.ToInt32(SetlnEditmiXH.Text); //X<><58><EFBFBD>ֶ<EFBFBD><D6B6>ٶ<EFBFBD>
|
|||
|
int YHspeed = Convert.ToInt32(SetlnEditmiYH.Text); //Y<><59><EFBFBD>ֶ<EFBFBD><D6B6>ٶ<EFBFBD>
|
|||
|
int ZHspeed = Convert.ToInt32(SetlnEditmiZH.Text); //Z<><5A><EFBFBD>ֶ<EFBFBD><D6B6>ٶ<EFBFBD>
|
|||
|
|
|||
|
melsecPLCTCPDriver.WriteInt("406", XHspeed); //д<><D0B4><EFBFBD>ֶ<EFBFBD><D6B6>ٶ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("416", YHspeed);
|
|||
|
melsecPLCTCPDriver.WriteInt("426", ZHspeed);
|
|||
|
string logs = "д<><D0B4><EFBFBD>ֶ<EFBFBD><D6B6>ٶ<EFBFBD> X" + XHspeed + "Y:" + YHspeed + "Z:" + ZHspeed + " ";
|
|||
|
myLog(logs, DateTime.Now);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void SetAutoSpeed_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (Regex.IsMatch(lnEditmiXS.Text.ToString(), @"^[0-9]+$") && Regex.IsMatch(lnEditmiYS.Text.ToString(), @"^[0-9]+$") && Regex.IsMatch(lnEditmiZS.Text.ToString(), @"^[0-9]+$"))
|
|||
|
{
|
|||
|
if (SetlnEditmiXOP.Text != "" && SetlnEditmiYOP.Text != "" && SetlnEditmiZOP.Text != "")
|
|||
|
{
|
|||
|
int Xspeed = Convert.ToInt32(SetlnEditmiXOP.Text); //X<>ᶨλ<E1B6A8>ٶ<EFBFBD>
|
|||
|
int Yspeed = Convert.ToInt32(SetlnEditmiYOP.Text); //Y<>ᶨλ<E1B6A8>ٶ<EFBFBD>
|
|||
|
int Zspeed = Convert.ToInt32(SetlnEditmiZOP.Text); //Z<>ᶨλ<E1B6A8>ٶ<EFBFBD>
|
|||
|
|
|||
|
melsecPLCTCPDriver.WriteInt("404", Xspeed); //д<>붨λ<EBB6A8>ٶ<EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("414", Yspeed);
|
|||
|
melsecPLCTCPDriver.WriteInt("424", Zspeed);
|
|||
|
|
|||
|
string logs = "д<>붨λ<EBB6A8>ٶ<EFBFBD> X" + Xspeed + "Y:" + Yspeed + "Z:" + Zspeed + " ";
|
|||
|
myLog(logs, DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʶ
|
|||
|
private bool m_btnState;
|
|||
|
private void radioButton1_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
if (!ifXZeroValue)
|
|||
|
{
|
|||
|
this.XZerorbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("503", 1);
|
|||
|
ifXZeroValue = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("X<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.XZerorbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("503", 0);
|
|||
|
ifXZeroValue = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("X<><58>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void YZerorbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifYZeroValue)
|
|||
|
{
|
|||
|
this.YZerorbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("513", 1);
|
|||
|
ifYZeroValue = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("Y<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.YZerorbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("513", 0);
|
|||
|
ifYZeroValue = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("Y<><59>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void ZZerorbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifZZeroValue)
|
|||
|
{
|
|||
|
this.ZZerorbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("523", 1);
|
|||
|
ifZZeroValue = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("Z<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.ZZerorbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("523", 0);
|
|||
|
ifZZeroValue = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("Z<><5A>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void XForwardrbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifXForward)
|
|||
|
{
|
|||
|
this.XForwardrbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("502", 1);
|
|||
|
ifXForward = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("X<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.XForwardrbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("502", 0);
|
|||
|
ifXForward = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("X<><58>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void YForwardrbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifYForward)
|
|||
|
{
|
|||
|
this.YForwardrbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("512", 1);
|
|||
|
ifYForward = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("Y<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.YForwardrbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("512", 0);
|
|||
|
ifYForward = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("Y<><59>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void ZForwardrbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifZForward)
|
|||
|
{
|
|||
|
this.ZForwardrbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("522", 1);
|
|||
|
ifZForward = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("Z<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.ZForwardrbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("522", 0);
|
|||
|
ifZForward = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("Z<><5A>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void XBackwardrbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifXBackward)
|
|||
|
{
|
|||
|
this.XBackwardrbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("501", 1);
|
|||
|
ifXBackward = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("X<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.XBackwardrbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("501", 0);
|
|||
|
ifXBackward = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("X<><58>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void YBackwardrbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifYBackward)
|
|||
|
{
|
|||
|
this.YBackwardrbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("511", 1);
|
|||
|
ifYBackward = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("Y<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.YBackwardrbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("511", 0);
|
|||
|
ifYBackward = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("Y<><59>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void ZBackwardrbx_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!ifZBackward)
|
|||
|
{
|
|||
|
this.ZBackwardrbx.Checked = true;
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
melsecPLCTCPDriver.WriteInt("521", 1);
|
|||
|
ifZBackward = true;
|
|||
|
this.txtSetValue.Text = "1";
|
|||
|
myLog("Z<>Ὺʼ<E1BFAA><CABC><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.ZBackwardrbx.Checked = false;
|
|||
|
melsecPLCTCPDriver.WriteInt("521", 0);
|
|||
|
ifZBackward = false;
|
|||
|
this.txtSetValue.Text = "0";
|
|||
|
myLog("Z<><5A>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>", DateTime.Now);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void button1_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
string ss = "BB0VA5E0000BCQ5L0114";
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
private void Cam2OpenBtn_Click_1(object sender, EventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
Cam2.Start("Cam2");
|
|||
|
|
|||
|
bnGetParam2.Enabled = true;
|
|||
|
//SetCtrlWhenOpen();
|
|||
|
Cam2OpenBtn.BackColor = Color.Green;
|
|||
|
}
|
|||
|
|
|||
|
private void button4_Click_1(object sender, EventArgs e)
|
|||
|
{
|
|||
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|||
|
openFileDialog.Title = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ";
|
|||
|
|
|||
|
|
|||
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
string fName = openFileDialog.FileName;
|
|||
|
//File fileOpen = new File(fName);
|
|||
|
//isFileHaveName = true;
|
|||
|
//richTextBox1.Text = fileOpen.ReadFile();
|
|||
|
//richTextBox1.AppendText("");
|
|||
|
DetectBArMatbox.Text = fName;
|
|||
|
BarPath = fName;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void InsertBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string type = TypeBox.Text;
|
|||
|
string OcrBar = OcrBarBox.Text;
|
|||
|
string moveX = moveXbox.Text;
|
|||
|
string moveY = moveYbox.Text;
|
|||
|
string moveZ = moveZbox.Text;
|
|||
|
string Detect = DetectBArMatbox.Text;
|
|||
|
string movetwoX = moveTwoXbox.Text;
|
|||
|
string movetwoY = moveTwoYbox.Text;
|
|||
|
string movetwoZ = moveTwoZbox.Text;
|
|||
|
|
|||
|
if (!Regex.IsMatch(moveX, @"^[0-9]+$"))
|
|||
|
{
|
|||
|
MessageBox.Show("<22><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>Xֻ<58><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!Regex.IsMatch(moveY, @"^[0-9]+$"))
|
|||
|
{
|
|||
|
MessageBox.Show("<22><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>Yֻ<59><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!Regex.IsMatch(moveZ, @"^[0-9]+$"))
|
|||
|
{
|
|||
|
MessageBox.Show("<22><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>Zֻ<5A><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!Regex.IsMatch(movetwoX, @"^[0-9]+$"))
|
|||
|
{
|
|||
|
MessageBox.Show("<22>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>Xֻ<58><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!Regex.IsMatch(movetwoY, @"^[0-9]+$"))
|
|||
|
{
|
|||
|
MessageBox.Show("<22>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>Yֻ<59><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!Regex.IsMatch(movetwoZ, @"^[0-9]+$"))
|
|||
|
{
|
|||
|
MessageBox.Show("<22>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>Zֻ<5A><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (OcrBar != "" && Detect != "" && BarPath != "" && Cam1OnePath != "" && Cam1TwoPath != "" && ModelChangePath != "")
|
|||
|
{
|
|||
|
int HmoveX = (int)Convert.ToInt64(moveX);
|
|||
|
int HmoveY = (int)Convert.ToInt64(moveY);
|
|||
|
int HmoveZ = (int)Convert.ToInt64(moveZ);
|
|||
|
int HmovetwoX = (int)Convert.ToInt64(movetwoX);
|
|||
|
int HmovetwoY = (int)Convert.ToInt64(movetwoY);
|
|||
|
int HmovetwoZ = (int)Convert.ToInt64(movetwoZ);
|
|||
|
InsertXK_Hisence(HmoveX, HmoveY, HmoveZ, HmovetwoX, HmovetwoY, HmovetwoZ);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
MessageBox.Show("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ΪNULL");
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception es)
|
|||
|
{
|
|||
|
}
|
|||
|
}
|
|||
|
public void InsertXK_Hisence(int MoveX, int MoveY, int MoveZ, int MoveTwoX, int MoveTwoY, int MoveTwoZ)
|
|||
|
{
|
|||
|
PaddleOcrModel IpaddleOcrModel = new PaddleOcrModel();
|
|||
|
IpaddleOcrModel.Load(ModelChangePath, "CPU");
|
|||
|
MLRequest OcrBari = new MLRequest();
|
|||
|
OcrBari.currentMat = Cv2.ImRead(BarPath);
|
|||
|
MLResultModel mL2 = IpaddleOcrModel.RunInferenceFixed(OcrBari);
|
|||
|
string IOcrBAr = "";
|
|||
|
for (int v = 0; v < mL2.ResultDetails.Count(); v++)
|
|||
|
{
|
|||
|
string iv = mL2.ResultDetails[v].LabelDisplay;
|
|||
|
IOcrBAr += iv;
|
|||
|
}
|
|||
|
using (StreamWriter sw = new StreamWriter("D://123.log", true))
|
|||
|
{
|
|||
|
sw.WriteLine("\n");
|
|||
|
sw.WriteLine(IOcrBAr);
|
|||
|
sw.Flush();
|
|||
|
}
|
|||
|
MLRequest CamOneI = new MLRequest();
|
|||
|
CamOneI.currentMat = Cv2.ImRead(Cam1OnePath);
|
|||
|
CamOneI.ResizeWidth = 640;
|
|||
|
CamOneI.ResizeHeight = 640;
|
|||
|
CamOneI.Score = 0.3f;
|
|||
|
CamOneI.in_lable_path = "D:\\Hisence\\ClassName.txt";//<2F><>ǩ·<C7A9><C2B7>
|
|||
|
CamOneI.confThreshold = 0.3f;//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD>
|
|||
|
CamOneI.iouThreshold = 0.4f;//<2F><><EFBFBD><EFBFBD>IOU
|
|||
|
CamOneI.out_node_name = "output";
|
|||
|
MLResult mL3 = simboObjectDetection.RunInferenceFixed(CamOneI);
|
|||
|
if (mL3.IsSuccess)
|
|||
|
{
|
|||
|
DateTime dt = DateTime.Now;
|
|||
|
mL3.ResultMap.Save("D:\\Hisence\\detImages\\" + dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Millisecond.ToString() + "1result.jpg");
|
|||
|
|
|||
|
}
|
|||
|
List<string> strMatListListOne = new List<string>();
|
|||
|
Mat mResultCut = CamOneI.currentMat.Clone();
|
|||
|
|
|||
|
InsertSqlRunData(ref mResultCut, mL3, ref strMatListListOne, ref IpaddleOcrModel);
|
|||
|
|
|||
|
MLRequest CamTwoI = new MLRequest();
|
|||
|
CamTwoI.currentMat = Cv2.ImRead(Cam1TwoPath);
|
|||
|
CamTwoI.ResizeWidth = 640;
|
|||
|
CamTwoI.ResizeHeight = 640;
|
|||
|
CamTwoI.Score = 0.3f;
|
|||
|
CamTwoI.in_lable_path = "D:\\Hisence\\ClassName.txt";//<2F><>ǩ·<C7A9><C2B7>
|
|||
|
CamTwoI.confThreshold = 0.3f;//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD>
|
|||
|
CamTwoI.iouThreshold = 0.4f;//<2F><><EFBFBD><EFBFBD>IOU
|
|||
|
CamTwoI.out_node_name = "output";
|
|||
|
MLResult mL4 = simboObjectDetection.RunInferenceFixed(CamTwoI);
|
|||
|
if (mL4.IsSuccess)
|
|||
|
{
|
|||
|
DateTime dt = DateTime.Now;
|
|||
|
mL4.ResultMap.Save("D:\\Hisence\\detImages\\" + dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Millisecond.ToString() + "2result.jpg");
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
List<string> strMatListListTwo = new List<string>();
|
|||
|
Mat mResultCut2 = CamTwoI.currentMat.Clone();
|
|||
|
|
|||
|
InsertSqlRunData(ref mResultCut2, mL4, ref strMatListListTwo, ref IpaddleOcrModel);
|
|||
|
//<2F>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string OcrTextinsert = "";
|
|||
|
List<string> bingji = strMatListListOne.Union(strMatListListTwo).ToList();//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
|
|||
|
for (int j = 0; j < bingji.Count; j++)
|
|||
|
{
|
|||
|
string jdetial = bingji[j];
|
|||
|
OcrTextinsert += jdetial + "##";
|
|||
|
}
|
|||
|
string detstr = "";
|
|||
|
|
|||
|
//<2F>ҵ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
MLResult MLsum = mL3;
|
|||
|
for (int v = 0; v < mL4.ResultDetails.Count; v++)
|
|||
|
{
|
|||
|
MLsum.ResultDetails.Add(mL4.ResultDetails[v]);
|
|||
|
}
|
|||
|
for (int v = 0; v < MLsum.ResultDetails.Count; v++)
|
|||
|
{
|
|||
|
|
|||
|
if (v < MLsum.ResultDetails.Count - 1)
|
|||
|
{
|
|||
|
detstr += MLsum.ResultDetails[v].LabelName + ",";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
detstr += MLsum.ResultDetails[v].LabelName ;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
XKHisence xK = new XKHisence("1", IOcrBAr, MoveX, MoveY, MoveZ, detstr, OcrTextinsert, MoveTwoX, MoveTwoY, MoveTwoZ, ModelChangePath, "");
|
|||
|
|
|||
|
|
|||
|
//IpaddleOcrModel.FreeModel();
|
|||
|
|
|||
|
string sql = "insert into XK_Hisence VALUES('" + xK.Type + "','" + xK.OcrBar + "'," + xK.MoveX + "," + xK.MoveY + "," + xK.MoveZ + ",'" + xK.Detect + "','" + xK.OcrText + "'," + xK.MoveTwoX + "," + xK.MoveTwoY + "," + xK.MoveTwoZ + ",'" + xK.OcrParm + "','" + xK.Language + "')";
|
|||
|
int i = SQLiteHelper.ExecuteSql(sql);
|
|||
|
if (i == 1)
|
|||
|
{
|
|||
|
MessageBox.Show("<22><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
//bool ismatch = IsMatchOcrText("WF3S7021BB", strMatListListOne);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
|
|||
|
}
|
|||
|
private void queryALLBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
DataSet dataSet = SQLiteHelper.Query("select * from XK_Hisence");
|
|||
|
InsertDataDgv.DataSource = dataSet.Tables[0];
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception es)
|
|||
|
{
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void QueryoneBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string type = TypeBox.Text;
|
|||
|
string OcrBar = OcrBarBox.Text;
|
|||
|
string moveX = moveXbox.Text;
|
|||
|
string moveY = moveYbox.Text;
|
|||
|
string moveZ = moveZbox.Text;
|
|||
|
string Detect = DetectBArMatbox.Text;
|
|||
|
string movetwoX = moveTwoXbox.Text;
|
|||
|
string movetwoY = moveTwoYbox.Text;
|
|||
|
string movetwoZ = moveTwoZbox.Text;
|
|||
|
|
|||
|
|
|||
|
string sql = "select * from XK_Hisence where type='" + type + "' or OcrBar='" + OcrBar + "'";
|
|||
|
DataSet dataSet = SQLiteHelper.Query(sql);
|
|||
|
InsertDataDgv.DataSource = dataSet.Tables[0];
|
|||
|
|
|||
|
}
|
|||
|
catch (Exception es)
|
|||
|
{
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OpenDirBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|||
|
openFileDialog.Title = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ";
|
|||
|
|
|||
|
|
|||
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
string fName = openFileDialog.FileName;
|
|||
|
//File fileOpen = new File(fName);
|
|||
|
//isFileHaveName = true;
|
|||
|
//richTextBox1.Text = fileOpen.ReadFile();
|
|||
|
//richTextBox1.AppendText("");
|
|||
|
Cam1MatCbx.Text = fName;
|
|||
|
Cam1OnePath = fName;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void OpenTwoDirBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|||
|
openFileDialog.Title = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ";
|
|||
|
|
|||
|
|
|||
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
string fName = openFileDialog.FileName;
|
|||
|
//File fileOpen = new File(fName);
|
|||
|
//isFileHaveName = true;
|
|||
|
//richTextBox1.Text = fileOpen.ReadFile();
|
|||
|
//richTextBox1.AppendText("");
|
|||
|
Cam2MatCbx.Text = fName;
|
|||
|
Cam1TwoPath = fName;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void openModelBtn_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
OpenFileDialog openFileDialog = new OpenFileDialog();
|
|||
|
openFileDialog.Title = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>json";
|
|||
|
|
|||
|
|
|||
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
string fName = openFileDialog.FileName;
|
|||
|
//File fileOpen = new File(fName);
|
|||
|
//isFileHaveName = true;
|
|||
|
//richTextBox1.Text = fileOpen.ReadFile();
|
|||
|
//richTextBox1.AppendText("");
|
|||
|
modelChangeCbx.Text = fName;
|
|||
|
ModelChangePath = fName;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void SnapshotCam2_Click_1(object sender, EventArgs e)
|
|||
|
{
|
|||
|
Cam2.Snapshot();
|
|||
|
}
|
|||
|
|
|||
|
private void bnGetParam2_Click_1(object sender, EventArgs e)
|
|||
|
{
|
|||
|
tbExposure2.Text = Cam2.dvpGetExposure().ToString();
|
|||
|
tbGain2.Text = Cam2.dvpGetAnalogGain().ToString();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|