diff --git a/halftoneproject-master.rar b/halftoneproject-master.rar
deleted file mode 100644
index 489ac17..0000000
Binary files a/halftoneproject-master.rar and /dev/null differ
diff --git a/halftoneproject-master/AssistClient/DevContainer.cs b/halftoneproject-master/AssistClient/DevContainer.cs
index 91d669a..d00d5c4 100644
--- a/halftoneproject-master/AssistClient/DevContainer.cs
+++ b/halftoneproject-master/AssistClient/DevContainer.cs
@@ -61,6 +61,7 @@ namespace AssistClient
{
try
{
+ //WarningEvent( WarningEnum.Normal, "启动1");
devAxis = new AxisDev();
devAxis.WarningEvent = WarningEvent;
devAxis.axisPosEvent = axisPosEvent;//位置POS
@@ -77,11 +78,14 @@ namespace AssistClient
devLight = new LightDev();
devLight.WarningEvent = WarningEvent;
devScannerCC = new ScannerDev(ScannerDev.ScannerType.CC);
- devScannerCC.WarningEvent = WarningEvent;
+ devScannerCC.WarningEvent = WarningEvent;
+ //WarningEvent(WarningEnum.Normal, "启动2");
libSize = new SizeLib();
+ //WarningEvent(WarningEnum.Normal, "启动2.5");
libSize.WarningEvent = WarningEvent;
libFor = new ForLib();
libIF = new IFLib();
+ //WarningEvent(WarningEnum.Normal, "启动3");
//启动
if (!devAxis.start(Config.Axis_PulseOutMode)) throw new Exception("运动板卡初始化失败!");
//if (!devCodeScanner.start()) throw new Exception("扫码枪初始化失败!");
@@ -91,8 +95,9 @@ namespace AssistClient
if (!Config.SkipScannerCC && !devScannerCC.open()) throw new Exception("相机初始化失败!");
if (!Config.SkipScannerCC && !devScannerCC.start(this.preView2, Config.SizeBmp_Path)) throw new Exception("相机打开失败!");
+ //WarningEvent(WarningEnum.Normal, "启动4");
if (!libSize.start(Config.SizeEnginePath)) throw new Exception("尺寸库初始化失败!");
-
+ //WarningEvent(WarningEnum.Normal, "启动5");
//
state = true;
StateChange?.Invoke(true, "成功");
diff --git a/halftoneproject-master/AssistClient/FrmMain.cs b/halftoneproject-master/AssistClient/FrmMain.cs
index 1b63d5c..1759aa5 100644
--- a/halftoneproject-master/AssistClient/FrmMain.cs
+++ b/halftoneproject-master/AssistClient/FrmMain.cs
@@ -106,7 +106,8 @@ namespace AssistClient
}
private void FrmMain_Load(object sender, EventArgs e)
{
- this.tsbtnPause.Left = this.tsbtnGoDownPT.Left = this.gpbZAxis.Right + 10;
+ this.tsbtnPause.Left = this.tsbtnGoDownPT.Left = this.gpbZAxis.Right + 10;
+
}
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
@@ -200,9 +201,10 @@ namespace AssistClient
this.pictureBox1.Image = bmp;//del
pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
- pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
- pictureBox1.MouseMove += pictureBox1_MouseMove;
- pictureBox1.MouseDown += pictureBox1_MouseDown;
+ //2023-12-22 之前工程师写的,存在bug,屏蔽
+ //pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
+ //pictureBox1.MouseMove += pictureBox1_MouseMove;
+ //pictureBox1.MouseDown += pictureBox1_MouseDown;
this.ActiveControl = this.pictureBox1; // 设置焦点
pic_size = this.pnlPic.ClientSize;
@@ -243,8 +245,8 @@ namespace AssistClient
private void changePictureBoxSize(Point location, double ratio)
{
var picSize = pictureBox1.Size;
- picSize.Width = Convert.ToInt32(pic_size.Width * ratio);
- picSize.Height = Convert.ToInt32(pic_size.Height * ratio);
+ picSize.Width = Convert.ToInt32(picSize.Width * ratio);
+ picSize.Height = Convert.ToInt32(picSize.Height * ratio);
pictureBox1.Size = picSize;
if (location.X > 0) location.X = 0;
@@ -1844,6 +1846,7 @@ namespace AssistClient
if (level == WarningEnum.High)
warning(level, true);
};
+ AddTextEvent("设备启动", "启动");
devContainer.start(IntPtr.Zero, IntPtr.Zero);
}
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
diff --git a/halftoneproject-master/Code/Config.cs b/halftoneproject-master/Code/Config.cs
index 738ca42..674f5ec 100644
--- a/halftoneproject-master/Code/Config.cs
+++ b/halftoneproject-master/Code/Config.cs
@@ -6,6 +6,7 @@ using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using System.Windows.Forms;
using Newtonsoft.Json.Linq;
using ProductionControl.Utils;
@@ -27,6 +28,9 @@ namespace ProductionControl
public static bool OpenMarkErrorStop;
//启用缺陷分布功能
public static bool OpenFlawDistribution;
+ //启用X轴校准 2023-12-20
+ public static bool OpenAxisXCalibration;
+
//DEV
public static int[] Axis_PulseOutMode=new int[4];
public static int[] Axis_MM2PulseNum = new int[4] { 5000, 5000, 5000, 1000};//1mm对应脉冲数
@@ -106,19 +110,19 @@ namespace ProductionControl
//
if (Defect_SavePath_AutoClear >= 0)
- DeleteFiles(Config.Defect_SavePath, Defect_SavePath_AutoClear, false);
+ DeleteFiles(Config.Defect_SavePath, Defect_SavePath_AutoClear, true);
if (Defect_Compress_SavePath_AutoClear >= 0)
- DeleteFiles(Config.Defect_Compress_SavePath, Defect_Compress_SavePath_AutoClear, false);
+ DeleteFiles(Config.Defect_Compress_SavePath, Defect_Compress_SavePath_AutoClear, true);
if (Defect_Small_SavePath_AutoClear >= 0)
- DeleteFiles(Config.Defect_Small_SavePath, Defect_Small_SavePath_AutoClear, false);
+ DeleteFiles(Config.Defect_Small_SavePath, Defect_Small_SavePath_AutoClear, true);
//
if (SizeBmp_SavePath_AutoClear >= 0)
- DeleteFiles(Config.SizeBmp_SavePath, SizeBmp_SavePath_AutoClear, false);
+ DeleteFiles(Config.SizeBmp_SavePath, SizeBmp_SavePath_AutoClear, true);
if (SizeBmp_Compare_SavePath_AutoClear >= 0)
- DeleteFiles(Config.SizeBmp_Compare_SavePath, SizeBmp_Compare_SavePath_AutoClear, false);
+ DeleteFiles(Config.SizeBmp_Compare_SavePath, SizeBmp_Compare_SavePath_AutoClear, true);
if (SizeBmp_Zoom_Image_SavePath_AutoClear >= 0)
- DeleteFiles(Config.SizeBmp_Zoom_Image_SavePath, SizeBmp_Zoom_Image_SavePath_AutoClear, false);
+ DeleteFiles(Config.SizeBmp_Zoom_Image_SavePath, SizeBmp_Zoom_Image_SavePath_AutoClear, true);
});
}
@@ -198,6 +202,7 @@ namespace ProductionControl
OpenMarkErrorStop = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1";
OpenFlawDistribution = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1";
+ OpenAxisXCalibration = Util.ReadIniValue(configPath, "SKIP", "OpenAxisXCalibration") == "1";
//DEV
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[0] = Convert.ToInt32(lsTmp);
@@ -343,32 +348,62 @@ namespace ProductionControl
///
///
/// 把日期文件夹也按days进行删除,格式:yyyyMMdd
- private static void DeleteFiles(string dirPath,double days=0,bool delDir=false)
+ private static void DeleteFiles(string dirPath, double days = 0, bool delDir = false)
{
- if (!Directory.Exists(dirPath)) return;
+ if (!Directory.Exists(dirPath)) return;
DateTime delDate = DateTime.Now.AddDays(-days);
API.OutputDebugString($"清除{delDate.ToString("yyyyMMdd")}前记录:{dirPath}。");
- string[] file_list = Directory.GetFiles(dirPath);
- if(days>0)
- file_list = file_list.Select(file => new FileInfo(file))
- .Where(f=>f.CreationTime<= delDate)
+
+ //删除dirPath中的过期文件
+ string[] files_list = Directory.GetFiles(dirPath);
+ if (days > 0)
+ files_list = files_list.Select(file => new FileInfo(file))
+ .Where(f => f.CreationTime <= delDate)
.Select(x => x.FullName)
.ToArray();
- foreach (string file in file_list)
+ foreach (string file in files_list)
{
- try {
+ try
+ {
API.OutputDebugString($"清除文件:{file}...");
File.Delete(file);
- } catch(Exception ex) {
+ }
+ catch (Exception ex)
+ {
API.OutputDebugString($"Ex1:{ex.Message}");
}
}
+ string[] dirsList = Directory.GetDirectories(dirPath, "20*");
+ foreach (string dir in dirsList)
+ {
+ string[] file_list = Directory.GetFiles(dir);
+ if (days > 0)
+ file_list = file_list.Select(file => new FileInfo(file))
+ .Where(f => f.CreationTime <= delDate)
+ .Select(x => x.FullName)
+ .ToArray();
+
+ foreach (string file in file_list)
+ {
+ try {
+ API.OutputDebugString($"清除文件:{file}...");
+ File.Delete(file);
+ } catch (Exception ex) {
+ API.OutputDebugString($"Ex1:{ex.Message}");
+ }
+ }
+ }
//
if (delDir)
{
- int dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd"));
+ int dateNum = 0;
+ if (days > 1)
+ dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd"));
+ else if (days > 0)
+ dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd")) - 1;
+
string floderName;
string[] dirList = Directory.GetDirectories(dirPath,"20*");
foreach (string dir in dirList)
@@ -391,5 +426,41 @@ namespace ProductionControl
}
}
+
+ public static long GetHardDiskSpace(string str_HardDiskName)
+ {
+ long result = 0L;
+ try
+ {
+ str_HardDiskName += ":\\";
+ DriveInfo[] drives = DriveInfo.GetDrives();
+ DriveInfo[] array = drives;
+ foreach (DriveInfo driveInfo in array)
+ {
+ if (driveInfo.Name == str_HardDiskName)
+ {
+ result = driveInfo.TotalFreeSpace / 1073741824;
+ }
+ }
+ }
+ catch {
+ result = 0;
+ }
+ return result;
+ }
+
+ public static bool CheckDisk(int max = 10)
+ {
+ string path = Config.Defect_SavePath;
+ string volume = path.Substring(0, path.IndexOf(':'));
+ long freespace = GetHardDiskSpace(volume);
+ if (freespace < max)
+ {
+ string tip = $"当前{volume}硬盘容量:{freespace}GB,小于{max}GB。注意清理!!";
+ MessageBox.Show(tip, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return false;
+ }
+ return true;
+ }
}
}
diff --git a/halftoneproject-master/Code/Enums.cs b/halftoneproject-master/Code/Enums.cs
index 26c82fd..826e962 100644
--- a/halftoneproject-master/Code/Enums.cs
+++ b/halftoneproject-master/Code/Enums.cs
@@ -176,6 +176,9 @@ namespace ProductionControl
Y轴复位输出 = 40,
Y轴复位完成输入 = 41,
+
+ X1轴复位输出 = 50,
+ X2轴复位输出 = 51,
}
//---
diff --git a/halftoneproject-master/Code/FrmLogin.Designer.cs b/halftoneproject-master/Code/FrmLogin.Designer.cs
index 2e501f5..647de32 100644
--- a/halftoneproject-master/Code/FrmLogin.Designer.cs
+++ b/halftoneproject-master/Code/FrmLogin.Designer.cs
@@ -159,7 +159,7 @@
this.Name = "FrmLogin";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "自动化视觉检测系统 - v1.2.1";
+ this.Text = "自动化视觉检测系统 - v1.2.3";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmLogin_FormClosed);
this.Load += new System.EventHandler(this.FrmLogin_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
diff --git a/halftoneproject-master/Code/FrmMain.Designer.cs b/halftoneproject-master/Code/FrmMain.Designer.cs
index 8aa8941..9fae6bc 100644
--- a/halftoneproject-master/Code/FrmMain.Designer.cs
+++ b/halftoneproject-master/Code/FrmMain.Designer.cs
@@ -1552,7 +1552,7 @@
this.splitContainer2.Panel2.Controls.Add(this.gboxDefectList);
this.splitContainer2.Panel2MinSize = 400;
this.splitContainer2.Size = new System.Drawing.Size(463, 523);
- this.splitContainer2.SplitterDistance = 26;
+ this.splitContainer2.SplitterDistance = 28;
this.splitContainer2.SplitterWidth = 3;
this.splitContainer2.TabIndex = 10;
//
@@ -1572,7 +1572,7 @@
// splitContainer3.Panel2
//
this.splitContainer3.Panel2.Controls.Add(this.picScanner2);
- this.splitContainer3.Size = new System.Drawing.Size(26, 523);
+ this.splitContainer3.Size = new System.Drawing.Size(28, 523);
this.splitContainer3.SplitterDistance = 226;
this.splitContainer3.SplitterWidth = 3;
this.splitContainer3.TabIndex = 11;
@@ -1586,7 +1586,7 @@
this.picScanner1.Location = new System.Drawing.Point(0, 0);
this.picScanner1.Margin = new System.Windows.Forms.Padding(2);
this.picScanner1.Name = "picScanner1";
- this.picScanner1.Size = new System.Drawing.Size(26, 226);
+ this.picScanner1.Size = new System.Drawing.Size(28, 226);
this.picScanner1.TabIndex = 7;
this.picScanner1.TabStop = false;
//
@@ -1598,7 +1598,7 @@
this.picScanner2.Location = new System.Drawing.Point(0, 0);
this.picScanner2.Margin = new System.Windows.Forms.Padding(2);
this.picScanner2.Name = "picScanner2";
- this.picScanner2.Size = new System.Drawing.Size(26, 294);
+ this.picScanner2.Size = new System.Drawing.Size(28, 294);
this.picScanner2.TabIndex = 9;
this.picScanner2.TabStop = false;
//
@@ -1612,7 +1612,7 @@
this.gboxDefectList.Margin = new System.Windows.Forms.Padding(2);
this.gboxDefectList.Name = "gboxDefectList";
this.gboxDefectList.Padding = new System.Windows.Forms.Padding(2);
- this.gboxDefectList.Size = new System.Drawing.Size(434, 523);
+ this.gboxDefectList.Size = new System.Drawing.Size(432, 523);
this.gboxDefectList.TabIndex = 3;
this.gboxDefectList.TabStop = false;
this.gboxDefectList.Tag = "0";
@@ -1624,7 +1624,7 @@
this.lblDefectAddTag.AutoSize = true;
this.lblDefectAddTag.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblDefectAddTag.ForeColor = System.Drawing.Color.Blue;
- this.lblDefectAddTag.Location = new System.Drawing.Point(283, 2);
+ this.lblDefectAddTag.Location = new System.Drawing.Point(281, 2);
this.lblDefectAddTag.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDefectAddTag.Name = "lblDefectAddTag";
this.lblDefectAddTag.Size = new System.Drawing.Size(0, 12);
@@ -1639,7 +1639,7 @@
this.pnlBmpList.Location = new System.Drawing.Point(2, 16);
this.pnlBmpList.Margin = new System.Windows.Forms.Padding(2);
this.pnlBmpList.Name = "pnlBmpList";
- this.pnlBmpList.Size = new System.Drawing.Size(430, 505);
+ this.pnlBmpList.Size = new System.Drawing.Size(428, 505);
this.pnlBmpList.TabIndex = 0;
//
// chkBuzzer
@@ -1727,7 +1727,7 @@
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "FrmMain";
this.ShowIcon = false;
- this.Text = "自动化视觉检测系统 - v1.2.1";
+ this.Text = "自动化视觉检测系统 - v1.2.3";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMian_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmMian_FormClosed);
diff --git a/halftoneproject-master/Code/FrmMain.cs b/halftoneproject-master/Code/FrmMain.cs
index effb96b..0d4afd6 100644
--- a/halftoneproject-master/Code/FrmMain.cs
+++ b/halftoneproject-master/Code/FrmMain.cs
@@ -152,6 +152,9 @@ namespace ProductionControl
webService.LogEvent = null;
};
webService.start();
+
+ //读取硬盘剩余空间
+ Config.CheckDisk();
}
private void loadProductCodeList()
{
@@ -188,6 +191,49 @@ namespace ProductionControl
// runStep();
//}
}
+ ///
+ /// 删除修复台重复sn图片
+ ///
+ private void DeleteRepairImage(string sn)
+ {
+ List imagePath = new List
+ {
+ Config.Defect_SavePath,
+ Config.Defect_Small_SavePath,
+ Config.Defect_Compress_SavePath,
+ Config.SizeBmp_Zoom_Image_SavePath,
+ Config.SizeBmp_SavePath,
+ Config.SizeBmp_Compare_SavePath
+ };
+ //删除文件
+ //Task.Factory.StartNew(() =>
+ //{
+ for (int i = 0; i < imagePath.Count; i++)
+ {
+ string dirPath = Util.createSubDir(imagePath[i],
+ new List { DateTime.Now.ToString("yyyyMMdd"), sn });
+ if (!Directory.Exists(dirPath))
+ {
+ return;
+ }
+ string[] array = Directory.GetFiles(dirPath);
+ foreach (string text in array)
+ {
+ try
+ {
+ API.OutputDebugString("清除文件:" + text + "...");
+ File.Delete(text);
+ }
+ catch (Exception ex)
+ {
+ API.OutputDebugString("Ex1:" + ex.Message);
+ }
+ }
+ }
+
+ //});
+ }
+
//后台线程运行
///
/// 中断工序运行
@@ -212,6 +258,12 @@ namespace ProductionControl
AddTextEvent("扫码枪", "扫码枪初始化失败!");
return;
}
+ //2023-12-06 无输入料号防呆
+ if(string.IsNullOrEmpty(this.txtProductCode.Text))
+ {
+ AddTextEvent("料号", "未选择料号!");
+ return;
+ }
//2023-10-20 不使用扫码枪事件处理
//devContainer.devCodeScanner.ScanerEvent = (code) =>
string code = this.txtProductCode.Text;
@@ -265,6 +317,10 @@ namespace ProductionControl
devContainer.devCodeScanner.stop();
devContainer.devCodeScanner = null;
errStep = 5;
+ //删除重复sn用于修复台的图片
+ AddTextEvent("扫码枪", $"删除{sn}重复用于修复台的图片...");
+ DeleteRepairImage(sn);
+
//判断SN数量是否达到批次上限
//创建表达式
if (!string.IsNullOrWhiteSpace(model.BatchId) && model.TargetCount > 0)
@@ -788,10 +844,10 @@ namespace ProductionControl
{
AddTextEvent($"{stepIndex + 1}-{processName}", $"相机采集照片完成。");
//----缺陷队列
- bool cloneUse = false;
+ //bool cloneUse = false;
if (AIEngineLib == AIEngineLibEnum.缺陷库 || AIEngineLib == AIEngineLibEnum.缺陷与测量库)
{
- cloneUse = true;
+ //cloneUse = true;
var mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(bmpout);
scannerGBmpQueue.Enqueue(new scannerGBmpLoc(mat,
devContainer.devAxis.getActualPos_mm(1),
@@ -800,8 +856,13 @@ namespace ProductionControl
}
if (AIEngineLib == AIEngineLibEnum.测量库 || AIEngineLib == AIEngineLibEnum.缺陷与测量库)
{
+ //v1.2.2. 修改传图
+ //scannerCBmpQueue.Enqueue(new scannerCBmpLoc(
+ // cloneUse?(Bitmap)bmpout.Clone(): bmpout,
+ // devContainer.devAxis.getActualPos_mm(1),
+ // devContainer.devAxis.getActualPos_mm(2)));//Dequeue
scannerCBmpQueue.Enqueue(new scannerCBmpLoc(
- cloneUse?(Bitmap)bmpout.Clone(): bmpout,
+ (Bitmap)bmpout.Clone(),
devContainer.devAxis.getActualPos_mm(1),
devContainer.devAxis.getActualPos_mm(2)));//Dequeue
AddTextEvent($"{stepIndex + 1}-{processName}", $"添加尺寸图像队列,X:{devContainer.devAxis.getActualPos_mm(1)},y:{devContainer.devAxis.getActualPos_mm(2)},数量: {scannerCBmpQueue.Count}");
@@ -983,7 +1044,7 @@ namespace ProductionControl
processName = processName,
sizeTag = sizeTag,
engineName = processParam.Value("EngineName"),
- bmp = bmpCBmpQueue.BMP,//bmp/file_path二选一,优先bmp
+ bmp = bmpCBmpQueue.BMP == null ? bmpCBmpQueue.BMP : (Bitmap)bmpCBmpQueue.BMP.Clone(),//bmp/file_path二选一,优先bmp
file_path = bmpCBmpQueue.Path,
drawingPagePath = gbxBmpPath,
posX= bmpCBmpQueue.PosX,
@@ -1056,6 +1117,10 @@ namespace ProductionControl
}
else
{
+ //2023-12-29 加入比对失败当作NG处理
+ order.CompareResult = 2;
+ updateCompareResult(false);//更新比对看板
+
//warning(WarningEnum.Low);//暂停
setDgvContentCol(liStatocStepIndex, $"index:{res.index},图像比对失败!");
AddTextEvent($"{res.stepIndex + 1}-{res.processName}", $"图像比对失败,index:{res.index}-{compBmpIndex}.", WarningEnum.Low);
@@ -2283,10 +2348,17 @@ namespace ProductionControl
e.DrawBackground();
if (e.Index < 0) return;
- string str = lstLog.Items[e.Index].ToString();
- e.Graphics.DrawString(str.Substring(1), e.Font,
- new SolidBrush(str[0] == 'R' ? Color.Red : (str[0] == 'Y' ? Color.Orange : Color.Black)),
- e.Bounds);
+ try
+ {
+ string str = lstLog.Items[e.Index].ToString();
+ e.Graphics.DrawString(str.Substring(1), e.Font,
+ new SolidBrush(str[0] == 'R' ? Color.Red : (str[0] == 'Y' ? Color.Orange : Color.Black)),
+ e.Bounds);
+ }
+ catch
+ {
+ ;
+ }
}
private void writeLog(DateTime now, WarningEnum level, string text)
{
@@ -2708,7 +2780,14 @@ namespace ProductionControl
//
if (devContainer.devAxis.isError())
- throw new Exception("轴回原点失败!");
+ throw new Exception("轴回原点失败!");
+
+ if (Config.OpenAxisXCalibration)
+ {
+ //2023-11-29 加入X1X2回原之后启动补偿
+ devContainer.io_output(CMDName.X1轴复位输出, false, true, 300);
+ devContainer.io_output(CMDName.X2轴复位输出, false, true, 300);
+ }
//
//goto InitPT
diff --git a/halftoneproject-master/Code/FrmMain.resx b/halftoneproject-master/Code/FrmMain.resx
index 4613102..e8713cf 100644
--- a/halftoneproject-master/Code/FrmMain.resx
+++ b/halftoneproject-master/Code/FrmMain.resx
@@ -643,20 +643,20 @@
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
- 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
+ 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
@@ -665,11 +665,11 @@
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG9SURBVFhHYxgS4F+GuvqvFGVjKJf24KW9KM+nEJnk3+kq
x/7nqf//l632H+iA/1+i5f6/DpC89MJVpOiRhQwnVDl1wbH6wmUPAjT/fwyV+Q90wH90B7wLkPr/wlX0
/0MbgRv3THjVodqoBx6Y8f1/7iRC0AFPbAT/3zfl+nzflCcQqhUveOkm2gtl4gekOOChOf9/kPpHFgIz
- gdEmATUCBfzLUlb5Fiu/EeiA/1Ah/IAsB1gK/L/vwPX5pbvo3vfBUu1f4xXSfqcpN/7NUVv3Jlftz7dY
+ gdEmATUCBfzLUlb5Fiu/EeiA/1Ah/IAsB1gK/L/vwPX5pbvo3vfBUu1f4xXSfqcpN/7NUVv3Klftz7dY
hf80d8AzB+H/rz3F/38Ilv7/LU4BrPdfrhoYjzpg1AGjDhh1wNB3wM9s1ee/UhSv0s0BT92k/l8uDfkP
LM89/tdrsUGlGP6HarG9CZAxA7YHJgMd8JMmDrgU7/Z/44o1/+es34NXwxMrfoOH5tz3qO6A9QdO/1+x
8yhBB4DAXWNB/vumvDMJOeBLrDyopoyFasMPSHEADDyyEPR4Ziv8BN0BH5LVvv3NUZ32PUZOEaqUMCDH
- ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAIoH3zw7A9x2
+ ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAHCV3zql/rK2
AAAAAElFTkSuQmCC
@@ -677,61 +677,61 @@
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALjSURBVFhH7ZbpS1RRHIZvTU0mQgRFEPSHBAUVbVhkm1pp
- mWZmOjrjMs64t0JfIooyx9z3ZVxzGTUbTdOEchlnXx0N+tRXIRDezj3Mhekyls7cSYheeL6dw/Ne7uF3
+ mWZm4zLjMs64t0JfIooyx9z3ZVxzGTUbTdOEchlnXx0N+tRXIRDezj3Mhekyls7cSYheeL6dw/Ne7uF3
DvPPpGj6AAqn96Pg0z7kT+1B3tRu5E7ugvJjGJQToVBMhCBnfAeyx8QqzxbhQuQr65HLP4hJgW3wbBMm
G5VnjYqEK+CPPFO7VZgC/sozhCgg0e79sZZcMR7aVqxlwor1jFg+Ji7hy2XvtwRW4Hdy8uWrrNyzlGFL
ZGlF373lspEACvxBDoUmZCWylRF5ltMQ+VdvufQd418Bvnxk+Ynvfz62/alnCytX8uXpw34U4MuHlx9j
- eOkRhpYe+jxw0lHRNyJ3+5KnDW2wADntq97ywaUHGHTfh8Z9D5rFYkLhmqfdl1wyuIECfPmAuwgDRNi/
- WIB+Vz4hD32uXPQ5leuWp2rWWYAv71vMQy+R9boU6HXm4K1TTulxZBOy0G3PDJ68xyVHtzObkIluRwa6
- HDJ02aXoZLGlo8OWhnarhCK4vNMpQ6dDig57GoFI7Klot6VAbbsLtTUZbZZktFruUFrMSRTB5GoiU9tT
+ eOkRhpYe+jxw0lHRNyJ3+5KnDW2wADntq97ywaUHGHTfh8Z9D5rFYkLhmqfdlzx1cAMF+PIBdxEGiLB/
+ sQD9rnxCHvpcuehzKtctT9GsswBf3reYh14i63Up0OvMwVunnNLjyCZkodueGTx5j0uObmc2IRPdjgx0
+ OWToskvRyWJLR4ctDe3WVIrg8k6nDJ0OKTrsaQQisaeg3SaB2nYXamsy2izJaLXcobSYkyiCydVEprZL
0GYjImsSWq23KS2WRMItNJsT0GSKpzSyGOMDkv9yn7fYiMiaiGZrApotRGKJQ5M5Do3mG2gwXUeDMRb1
hDoWQwzFbzkbb3mj9SYaLERkjiXEoN58DXWmq0R2BbXGaNQYolCjj0I1oUofiaqFyMDk7Pjk5Nx4rTVF
ExkRGS+jmsVwicguolJ/AZUL51FBKNdFUAKSc2FL8Gd7pSECFfpzlPKFs3ijO0MpI6jmw6GaCxdGzoW9
vfizvUx3GirdKZTOn0Tp3Am8JpTMHqcIKufCluDP9pK5Y3g1exQvWWaOUIIi50IfE7zZ/mLmMJ5/OUQJ
- qpwLfUzwZvuzzwf/jpxLxiSzU5DZHkjYEpsm58KW2DQ5lxTy2Nw0+f8ELwzzE/paGgzH1hR8AAAAAElF
+ qpwLfUzwZvuzzwf/jpxLxiSzU5DZHkjYEpsm58KW2DQ5Fwl5bG6a/H+CF4b5CYMsGgInG2iLAAAAAElF
TkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMBxpyAIWpuCIGiN7NOlwQaLDB1s
- CKxBCw00bJCowWppagoCoTlqyIiCyLSE8uQs64qzD+uyzMPQPE/MQLCeNN6GCk4sDYz7T3fvvc/Lbzi4
- E5REwZF43Z2WFaLb4ke2kxUXfbSKUocxejgBIV0S7jVxuOp/gCOZ73RfTIxirVg52l7Y1k34ItZLQgYA
- fnUUvgIIGQVO8QlYW1wXm437dWiscFmbMXB3nuUE2Ntw2GjCErZWXI5GOTuU+mbRJXf5ALJ7d0RuwDoI
- M6nwV6EjPhUwsLV+VXTNI/UBWuLuZ4BTwLuoxKWStge0sZnoeHooPvkyFTamLNf6SNo/yEDRAYScgktl
- CAJaFpiJNMQnASLGFND6J+ABPIAH8IDSBwR1ydC9Jub9MwAu9cLe2DlkPiISUgFl6JGAVJBlxzKq2Skm
- 5uxtjlRRAJsDLlhZdsHCqo1zYFeE11sbnDcFB6w6DmBpy5kTkG1beFhpE+HmnIABJuHpvlKiMe7yAXyE
- iQlJ5t0IfgewzxnA/K06VoO25u4ngI8oJV19p2F6HifSKnYahAHDa/7/jb8BFCQewAMsDrfpHWCxmdAS
- 339OIHgD1J71QoDsMyIAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMBxpyAIWpuCIGiN7EuXBhssMmyw
+ IbAGLTSwqEEiB6ulqSkIguaoISUKIjszKE/Osq44yw8u0zzsSz2xAuHqyeJtqODE0qC4/3T33vu8/IaD
+ O9GfKDqcqgnrWTG6LX5UC1Xm62E0tPYGZwbTEDM8wKUuBcHeKzhUBk72ZOQo3oyXou2Fbc1MLOLdFGQB
+ ENLG4TOAVNLglB2Drcnl26jfq0FjhcvWiIO77TQnwC4hYL0BT2PNRBca5e1AEZhBl/zlA3jduy11A95K
+ zlOqUAU64kOREbY6pImvehQBQEv8fQ9wAkQ7nfarGXtEn5yOj3MDqYmnyRtjxhIYuuZC/QkoOoDsosGv
+ jkFEz0LCxEFqAuDWmAFm6B4EgAAQAALg7wOihofYpS7p/TUAofDC7tgZZD8ickoFJeiRiFJRJUdKutEp
+ I2ftEkemKICNPhesLLtgwYrxDjikRK2tznlecIB1Zx+WNp05Aa9tiQ/KMSkxnxPQl0h7OoJqNMZfPoD3
+ cBkpz74b0a8A9jELmLvQJqvQ1tx9B/AerWYqw7pE552J07BTII6MPOf/3/gTQEESAALAsuM2vwEsmBkt
+ Cf3nRKIXmuv1PdX+ZZIAAAAASUVORK5CYII=
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
- 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
+ W6vW5qq15bTW1tZlNqgGQzAs5ICQAoHchCH3YwgoIAcMBIEQlLtiCCh3BCVhIhmkxDjn6Xk7H42/6GDH
/vLZvv32+33f+7zP995+shwgSzbYrRI5b5XmOatcglWgT33X77pvjroXjgOyzp7lcQQ5q4CD9wM/3gNk
ewDWFc5ntvyz7NlSpOeN6X+HI0vemc5bNYOjLwAVrwHH3+Lis/x5oHQdYHsaKFoD5D1MARSUKZjJlGm1
MxS3DkfmXVtQQCc1m4DWAKAzAuiOBM7tBE57AQ3vA7WvA9WvAMc2AEfWAjkPAumMBpcjQzYbquUD+2X9
1MEHbqKKTjroeKQYGD8BTNQAlwqAgQSgK5BCPgGatwCn3gWqXgVKnmWaHgFSBb+lyg3lMZTLw3ya50kU
v0hyfzq3Ab/3ALPjwB/DwFQLcKUIGI4Her5lZL4G2j8HmjYzGoyI7TnWByORIphPknpD6TocyfIG0klQ
SrIOhny8zulcMTcJTHcBk8eBsWyK4H5fEHCeKTrLtDQyGpWskcOsjRRPIImp2CcbDbVrsMeLFakUULaR
- +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
+ +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
- h8hfV8RzuqW13GsAAAAASUVORK5CYII=
+ h8hfUyBzuFLSYqkAAAAASUVORK5CYII=
diff --git a/halftoneproject-master/Code/FrmProductInfo.Designer.cs b/halftoneproject-master/Code/FrmProductInfo.Designer.cs
index 5fb8abf..8f1bd80 100644
--- a/halftoneproject-master/Code/FrmProductInfo.Designer.cs
+++ b/halftoneproject-master/Code/FrmProductInfo.Designer.cs
@@ -30,10 +30,10 @@
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProductInfo));
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.groupBox10 = new System.Windows.Forms.GroupBox();
this.panel10 = new System.Windows.Forms.Panel();
this.numTensionDownFloatValue = new System.Windows.Forms.NumericUpDown();
@@ -73,6 +73,7 @@
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnAddFile = new System.Windows.Forms.ToolStripButton();
this.tsbtnNewBatchId = new System.Windows.Forms.ToolStripButton();
+ this.tbtnGetPos = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
@@ -102,6 +103,11 @@
this.label3 = new System.Windows.Forms.Label();
this.txtSpec = new System.Windows.Forms.TextBox();
this.tabPage3 = new System.Windows.Forms.TabPage();
+ this.groupBox7 = new System.Windows.Forms.GroupBox();
+ this.panel6 = new System.Windows.Forms.Panel();
+ this.label24 = new System.Windows.Forms.Label();
+ this.cbMainGrid = new System.Windows.Forms.CheckBox();
+ this.cbMarkDisturb = new System.Windows.Forms.CheckBox();
this.groupBox6 = new System.Windows.Forms.GroupBox();
this.panel5 = new System.Windows.Forms.Panel();
this.label21 = new System.Windows.Forms.Label();
@@ -115,7 +121,6 @@
this.tabPage2 = new System.Windows.Forms.TabPage();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.flpQualifiedPannel = new System.Windows.Forms.FlowLayoutPanel();
- this.tbtnGetPos = new System.Windows.Forms.ToolStripButton();
this.groupBox10.SuspendLayout();
this.panel10.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numTensionDownFloatValue)).BeginInit();
@@ -144,6 +149,8 @@
this.groupBox4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).BeginInit();
this.tabPage3.SuspendLayout();
+ this.groupBox7.SuspendLayout();
+ this.panel6.SuspendLayout();
this.groupBox6.SuspendLayout();
this.panel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numMarkSize)).BeginInit();
@@ -663,6 +670,16 @@
this.tsbtnNewBatchId.Visible = false;
this.tsbtnNewBatchId.Click += new System.EventHandler(this.tsbtnNewBatchId_Click);
//
+ // tbtnGetPos
+ //
+ this.tbtnGetPos.Image = ((System.Drawing.Image)(resources.GetObject("tbtnGetPos.Image")));
+ this.tbtnGetPos.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.tbtnGetPos.Name = "tbtnGetPos";
+ this.tbtnGetPos.Size = new System.Drawing.Size(60, 53);
+ this.tbtnGetPos.Text = "点位抓取";
+ this.tbtnGetPos.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
+ this.tbtnGetPos.Click += new System.EventHandler(this.tbtnGetPos_Click);
+ //
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
@@ -828,46 +845,46 @@
//
this.dgvBatchList.AllowUserToAddRows = false;
this.dgvBatchList.AllowUserToDeleteRows = false;
- dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control;
- dataGridViewCellStyle5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText;
- dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.dgvBatchList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5;
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dgvBatchList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dgvBatchList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvBatchList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colBatchId,
this.colTargetCount,
this.colCompleteCount,
this.colCreateTime});
- dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window;
- dataGridViewCellStyle6.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText;
- dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
- this.dgvBatchList.DefaultCellStyle = dataGridViewCellStyle6;
+ dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
+ dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
+ dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.dgvBatchList.DefaultCellStyle = dataGridViewCellStyle2;
this.dgvBatchList.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvBatchList.Location = new System.Drawing.Point(2, 16);
this.dgvBatchList.Margin = new System.Windows.Forms.Padding(2);
this.dgvBatchList.MultiSelect = false;
this.dgvBatchList.Name = "dgvBatchList";
this.dgvBatchList.ReadOnly = true;
- dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control;
- dataGridViewCellStyle7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText;
- dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.dgvBatchList.RowHeadersDefaultCellStyle = dataGridViewCellStyle7;
+ dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
+ dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
+ dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dgvBatchList.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dgvBatchList.RowHeadersVisible = false;
this.dgvBatchList.RowHeadersWidth = 62;
- dataGridViewCellStyle8.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.dgvBatchList.RowsDefaultCellStyle = dataGridViewCellStyle8;
+ dataGridViewCellStyle4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.dgvBatchList.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.dgvBatchList.RowTemplate.Height = 30;
this.dgvBatchList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvBatchList.Size = new System.Drawing.Size(405, 203);
@@ -993,6 +1010,7 @@
//
// tabPage3
//
+ this.tabPage3.Controls.Add(this.groupBox7);
this.tabPage3.Controls.Add(this.groupBox6);
this.tabPage3.Controls.Add(this.groupBox5);
this.tabPage3.Location = new System.Drawing.Point(4, 22);
@@ -1004,6 +1022,62 @@
this.tabPage3.Text = "图纸资料";
this.tabPage3.UseVisualStyleBackColor = true;
//
+ // groupBox7
+ //
+ this.groupBox7.BackColor = System.Drawing.SystemColors.ActiveCaption;
+ this.groupBox7.Controls.Add(this.panel6);
+ this.groupBox7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.groupBox7.Location = new System.Drawing.Point(2, 218);
+ this.groupBox7.Margin = new System.Windows.Forms.Padding(2);
+ this.groupBox7.Name = "groupBox7";
+ this.groupBox7.Padding = new System.Windows.Forms.Padding(2);
+ this.groupBox7.Size = new System.Drawing.Size(409, 102);
+ this.groupBox7.TabIndex = 34;
+ this.groupBox7.TabStop = false;
+ this.groupBox7.Text = "参数设置";
+ //
+ // panel6
+ //
+ this.panel6.BackColor = System.Drawing.Color.White;
+ this.panel6.Controls.Add(this.label24);
+ this.panel6.Controls.Add(this.cbMainGrid);
+ this.panel6.Controls.Add(this.cbMarkDisturb);
+ this.panel6.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel6.Location = new System.Drawing.Point(2, 16);
+ this.panel6.Margin = new System.Windows.Forms.Padding(2);
+ this.panel6.Name = "panel6";
+ this.panel6.Size = new System.Drawing.Size(405, 84);
+ this.panel6.TabIndex = 0;
+ //
+ // label24
+ //
+ this.label24.AutoSize = true;
+ this.label24.Location = new System.Drawing.Point(30, 18);
+ this.label24.Name = "label24";
+ this.label24.Size = new System.Drawing.Size(161, 12);
+ this.label24.TabIndex = 5;
+ this.label24.Text = "在非[默认Mark]的情况下生效";
+ //
+ // cbMainGrid
+ //
+ this.cbMainGrid.AutoSize = true;
+ this.cbMainGrid.Location = new System.Drawing.Point(199, 47);
+ this.cbMainGrid.Name = "cbMainGrid";
+ this.cbMainGrid.Size = new System.Drawing.Size(72, 16);
+ this.cbMainGrid.TabIndex = 1;
+ this.cbMainGrid.Text = "是否主栅";
+ this.cbMainGrid.UseVisualStyleBackColor = true;
+ //
+ // cbMarkDisturb
+ //
+ this.cbMarkDisturb.AutoSize = true;
+ this.cbMarkDisturb.Location = new System.Drawing.Point(32, 47);
+ this.cbMarkDisturb.Name = "cbMarkDisturb";
+ this.cbMarkDisturb.Size = new System.Drawing.Size(120, 16);
+ this.cbMarkDisturb.TabIndex = 0;
+ this.cbMarkDisturb.Text = "是否存在Mark干扰";
+ this.cbMarkDisturb.UseVisualStyleBackColor = true;
+ //
// groupBox6
//
this.groupBox6.BackColor = System.Drawing.SystemColors.ActiveCaption;
@@ -1071,9 +1145,9 @@
"空心圆",
"实心圆带栅线",
"空心圆带栅线",
- "圆环",
- "半圆环",
- "十字线"});
+ "矩形",
+ "候补1",
+ "候补2"});
this.cbMarkType.Location = new System.Drawing.Point(70, 65);
this.cbMarkType.Margin = new System.Windows.Forms.Padding(2);
this.cbMarkType.Name = "cbMarkType";
@@ -1161,16 +1235,6 @@
this.flpQualifiedPannel.Size = new System.Drawing.Size(416, 326);
this.flpQualifiedPannel.TabIndex = 0;
//
- // tbtnGetPos
- //
- this.tbtnGetPos.Image = ((System.Drawing.Image)(resources.GetObject("tbtnGetPos.Image")));
- this.tbtnGetPos.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.tbtnGetPos.Name = "tbtnGetPos";
- this.tbtnGetPos.Size = new System.Drawing.Size(60, 53);
- this.tbtnGetPos.Text = "点位抓取";
- this.tbtnGetPos.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
- this.tbtnGetPos.Click += new System.EventHandler(this.tbtnGetPos_Click);
- //
// FrmProductInfo
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -1223,6 +1287,9 @@
this.groupBox4.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).EndInit();
this.tabPage3.ResumeLayout(false);
+ this.groupBox7.ResumeLayout(false);
+ this.panel6.ResumeLayout(false);
+ this.panel6.PerformLayout();
this.groupBox6.ResumeLayout(false);
this.panel5.ResumeLayout(false);
this.panel5.PerformLayout();
@@ -1320,5 +1387,10 @@
private System.Windows.Forms.ComboBox cmbDefectModelFile;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.ToolStripButton tbtnGetPos;
+ private System.Windows.Forms.GroupBox groupBox7;
+ private System.Windows.Forms.Panel panel6;
+ private System.Windows.Forms.CheckBox cbMainGrid;
+ private System.Windows.Forms.CheckBox cbMarkDisturb;
+ private System.Windows.Forms.Label label24;
}
}
\ No newline at end of file
diff --git a/halftoneproject-master/Code/FrmProductInfo.cs b/halftoneproject-master/Code/FrmProductInfo.cs
index 1c5d05c..029c84e 100644
--- a/halftoneproject-master/Code/FrmProductInfo.cs
+++ b/halftoneproject-master/Code/FrmProductInfo.cs
@@ -1,82 +1,85 @@
-using OpenCvSharp;
+using OpenCvSharp;
using ProductionControl.UI;
-using ProductionControl.UIExtend;
-using ProductionControl.Utils;
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Diagnostics;
-using System.Drawing;
-using System.Drawing.Imaging;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using ProductionControl.UIExtend;
+using ProductionControl.Utils;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
using System.Web.Configuration;
-using System.Windows.Forms;
-
-namespace ProductionControl
-{
- public partial class FrmProductInfo : Form
- {
- Service.ClassesService svcClasses = new Service.ClassesService();
- Service.ProductService service = new Service.ProductService();
- Models.Product model = new Models.Product();
-
- string MapPath = "";
- public FrmProductInfo(Models.Product m=null)
- {
- InitializeComponent();
- this.dgvBatchList.AutoGenerateColumns = false;
- checkCustomerVer();
- //this.cbMarkType.SelectedIndex = -1;
- if (m!=null)
- {
- model = m;
- this.Text += $" (ID:{m.Id})";
- this.txtCode.Text = m.Code;
- this.txtName.Text = m.Name;
- this.txtSpec.Text = m.Spec;
-
- this.cmbHoleCount.Text = m.HoleCount.ToString();
-
- this.txtBatchId.Text = m.BatchId;
- this.numTargetCount.Value = m.TargetCount;
- this.toolTip1.SetToolTip(this.numTargetCount,"已完成:"+m.CompleteCount);
-
- this.numTensionBaseValue.Value = (decimal)m.TensionBaseValue;
- this.numTensionUpFloatValue.Value = (decimal)m.TensionUpFloatValue;
- this.numTensionDownFloatValue.Value = (decimal)m.TensionDownFloatValue;
- this.numHeightBaseValue.Value = (decimal)m.HeightBaseValue;
- this.numHeightUpFloatValue.Value = (decimal)m.HeightUpFloatValue;
- this.numHeightDownFloatValue.Value = (decimal)m.HeightDownFloatValue;
- this.txtHeightBaseDec.Text = m.HeightBaseDec;
- this.numLineWidthBaseValue.Value = (decimal)m.LineWidthBaseValue;
- this.numLineWidthUpFloatValue.Value = (decimal)m.LineWidthUpFloatValue;
- this.numLineWidthDownFloatValue.Value = (decimal)m.LineWidthDownFloatValue;
- this.numPTBaseValue.Value = (decimal)m.PTBaseValue;
- this.numPTUpFloatValue.Value = (decimal)m.PTUpFloatValue;
- this.numPTDownFloatValue.Value = (decimal)m.PTDownFloatValue;
- //if (m.Type > 0)
- //{
- // this.txtCode.Enabled = false;
- // this.txtName.Width = this.txtCode.Width;
- // this.txtSpec.Enabled = false;
- //}
-
- this.tsbtnAddFile.Enabled = true;
- this.tsbtnNewBatchId.Enabled = true;
- this.dgvBatchList.DataSource = new BindingSource(m.BatchHistoryList, null);
- //2023-11-2 mark
- this.cbMarkType.SelectedIndex = m.MarkType;
- this.numMarkSize.Value = (decimal)m.MarkSize;
-
- Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(x => x.Type == 0);
- if (attachmentFile!=null)
- {
- this.btnOpenFile.Text = attachmentFile.Name;
+using System.Windows.Forms;
+
+namespace ProductionControl
+{
+ public partial class FrmProductInfo : Form
+ {
+ Service.ClassesService svcClasses = new Service.ClassesService();
+ Service.ProductService service = new Service.ProductService();
+ Models.Product model = new Models.Product();
+
+ string MapPath = "";
+ public FrmProductInfo(Models.Product m=null)
+ {
+ InitializeComponent();
+ this.dgvBatchList.AutoGenerateColumns = false;
+ checkCustomerVer();
+ //this.cbMarkType.SelectedIndex = -1;
+ if (m!=null)
+ {
+ model = m;
+ this.Text += $" (ID:{m.Id})";
+ this.txtCode.Text = m.Code;
+ this.txtName.Text = m.Name;
+ this.txtSpec.Text = m.Spec;
+
+ this.cmbHoleCount.Text = m.HoleCount.ToString();
+
+ this.txtBatchId.Text = m.BatchId;
+ this.numTargetCount.Value = m.TargetCount;
+ this.toolTip1.SetToolTip(this.numTargetCount,"已完成:"+m.CompleteCount);
+
+ this.numTensionBaseValue.Value = (decimal)m.TensionBaseValue;
+ this.numTensionUpFloatValue.Value = (decimal)m.TensionUpFloatValue;
+ this.numTensionDownFloatValue.Value = (decimal)m.TensionDownFloatValue;
+ this.numHeightBaseValue.Value = (decimal)m.HeightBaseValue;
+ this.numHeightUpFloatValue.Value = (decimal)m.HeightUpFloatValue;
+ this.numHeightDownFloatValue.Value = (decimal)m.HeightDownFloatValue;
+ this.txtHeightBaseDec.Text = m.HeightBaseDec;
+ this.numLineWidthBaseValue.Value = (decimal)m.LineWidthBaseValue;
+ this.numLineWidthUpFloatValue.Value = (decimal)m.LineWidthUpFloatValue;
+ this.numLineWidthDownFloatValue.Value = (decimal)m.LineWidthDownFloatValue;
+ this.numPTBaseValue.Value = (decimal)m.PTBaseValue;
+ this.numPTUpFloatValue.Value = (decimal)m.PTUpFloatValue;
+ this.numPTDownFloatValue.Value = (decimal)m.PTDownFloatValue;
+ //if (m.Type > 0)
+ //{
+ // this.txtCode.Enabled = false;
+ // this.txtName.Width = this.txtCode.Width;
+ // this.txtSpec.Enabled = false;
+ //}
+
+ this.tsbtnAddFile.Enabled = true;
+ this.tsbtnNewBatchId.Enabled = true;
+ this.dgvBatchList.DataSource = new BindingSource(m.BatchHistoryList, null);
+ //2023-11-2 mark
+ this.cbMarkType.SelectedIndex = m.MarkType;
+ this.numMarkSize.Value = (decimal)m.MarkSize;
+ //2023-12-18 主栅
+ this.cbMarkDisturb.Checked = (m.MarkDisturb == 1);
+ this.cbMainGrid.Checked = (m.MainGrid == 1);
+
+ Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(x => x.Type == 0);
+ if (attachmentFile!=null)
+ {
+ this.btnOpenFile.Text = attachmentFile.Name;
this.btnOpenFile.Visible = true;
//为兼容老版本,发现图纸图片地址为空,检索图片地址
if (string.IsNullOrEmpty(model.MapPath))
@@ -84,351 +87,362 @@ namespace ProductionControl
string targFilePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\";
targFilePath += attachmentFile.Name;
model.MapPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".bmp";
- }
- }
-
- }
-
- initDataView();
- }
- private void FrmProductInfo_Load(object sender, EventArgs e)
- {
- //this.cbMarkType.SelectedIndex = -1;
- }
- private void checkCustomerVer()
- {
- if (Config.CustomerVer != "B")
- {
- tabControl1.TabPages.RemoveAt(3);
- }
- }
- private void initDataView()
- {
- //显示的数据
- this.cmbClasses.DisplayMember = "Name";
- this.cmbClasses.ValueMember = "Id";
- var list = svcClasses.GetListNav(0);
- this.cmbClasses.DataSource = list;
- if (model.ClassesId>0)
- this.cmbClasses.SelectedValue = model.ClassesId;
-
-
- //缺陷项
- var lstDefect = Utils.EnumUtil.GetArrayList();
- foreach(DictionaryEntry item in lstDefect)
- {
- DefectCountOfSizeControl userCon = new DefectCountOfSizeControl();
- userCon.Code = item.Value.ToString();
- userCon.Title = ((DefectNameEnum)(int)item.Key).ToString();
- if (model != null && model.QualifiedCriterionList!=null)
- {
- var qalifiedItem = model.QualifiedCriterionList.FirstOrDefault(m => m.DefectCode == userCon.Code);
- if(qalifiedItem != null)
- {
- userCon.Checked = true;
- userCon.SizeValue = (decimal)qalifiedItem.Size;
- userCon.MaxDefectCount = qalifiedItem.MaxDefectCount;
- }
- }
-
- this.flpQualifiedPannel.Controls.Add(userCon);
- }
-
- //模型文件
- string strDefectModelFile = Application.StartupPath + @"\onnxFiles\";
- if(!Directory.Exists(strDefectModelFile))
- Directory.CreateDirectory(strDefectModelFile);
- string[] onnxFiles=Directory.GetFiles(strDefectModelFile,"*.onnx");
- string onlyName;
- foreach (string onnxFile in onnxFiles)
- {
- onlyName = Path.GetFileName(onnxFile);
- cmbDefectModelFile.Items.Add(onlyName);
- if (!string.IsNullOrWhiteSpace(model.DefectModelFile) && onlyName.ToLower()== model.DefectModelFile.ToLower())
- this.cmbDefectModelFile.SelectedItem = model.DefectModelFile;
- }
- }
- private void btnSave_Click(object sender, EventArgs e)
- {
- try
- {
- string szCode = this.txtCode.Text.Trim();
- string szName = this.txtName.Text.Trim();
- string szSpec = this.txtSpec.Text.Trim();
- string szHoleCount = this.cmbHoleCount.Text.Trim();
- string szBatchId = this.txtBatchId.Text.Trim();
- int liTargetCount = (int)this.numTargetCount.Value;
- string szHeightBaseDec=this.txtHeightBaseDec.Text.Trim().Trim(new char[] { ';', ',' });
- if (szCode == "" || szName == "")
- throw new Exception("请填写料号和名称!");
- if(this.cmbClasses.SelectedIndex<0)
- throw new Exception("请选择产品类型!");
- if (szHoleCount==""||! Util.IsNumber(szHoleCount))
- throw new Exception("请正确填写产品目数!");
- if (this.cmbDefectModelFile.SelectedIndex < 0)
- throw new Exception("请选择检测模型文件!");
-
- if (this.cbMarkType.SelectedIndex < 0)
- throw new Exception("请选择Mark!");
- //if (szBatchId == "")// || liTargetCount < 1
- // throw new Exception("请填写批次号");// 和批次目标数量!");
- if (szHeightBaseDec != "")
- {
- double num;
- string[] szs= szHeightBaseDec.Split(new char[] { ';',','});
- foreach(string s in szs)
- {
- if (!double.TryParse(s, out num))
- throw new Exception(s+" 非数值!");
- }
- }
-
- model.Code = szCode;
- model.Name = szName;
- model.Spec = szSpec;
- model.ClassesId = (int)this.cmbClasses.SelectedValue;
- model.HoleCount = Convert.ToInt32(szHoleCount);
- model.DefectModelFile = this.cmbDefectModelFile.Text.Trim();
-
- model.TensionBaseValue= (double)this.numTensionBaseValue.Value;
- model.TensionUpFloatValue = (double)this.numTensionUpFloatValue.Value;
- model.TensionDownFloatValue = (double)this.numTensionDownFloatValue.Value;
- model.HeightBaseValue = (double)this.numHeightBaseValue.Value;
- model.HeightUpFloatValue = (double)this.numHeightUpFloatValue.Value;
- model.HeightDownFloatValue = (double)this.numHeightDownFloatValue.Value;
- model.HeightBaseDec = szHeightBaseDec;
- model.LineWidthBaseValue = (double)this.numLineWidthBaseValue.Value;
- model.LineWidthUpFloatValue = (double)this.numLineWidthUpFloatValue.Value;
- model.LineWidthDownFloatValue = (double)this.numLineWidthDownFloatValue.Value;
- model.PTBaseValue = (double)this.numPTBaseValue.Value;
- model.PTUpFloatValue = (double)this.numPTUpFloatValue.Value;
- model.PTDownFloatValue = (double)this.numPTDownFloatValue.Value;
- if (model.QualifiedCriterionList == null)
- model.QualifiedCriterionList = new List();
- else
- model.QualifiedCriterionList.Clear();
-
+ }
+ }
+
+ }
+
+ initDataView();
+ }
+ private void FrmProductInfo_Load(object sender, EventArgs e)
+ {
+ //this.cbMarkType.SelectedIndex = -1;
+ }
+ private void checkCustomerVer()
+ {
+ if (Config.CustomerVer != "B")
+ {
+ tabControl1.TabPages.RemoveAt(3);
+ }
+ }
+ private void initDataView()
+ {
+ //显示的数据
+ this.cmbClasses.DisplayMember = "Name";
+ this.cmbClasses.ValueMember = "Id";
+ var list = svcClasses.GetListNav(0);
+ this.cmbClasses.DataSource = list;
+ if (model.ClassesId>0)
+ this.cmbClasses.SelectedValue = model.ClassesId;
+
+
+ //缺陷项
+ var lstDefect = Utils.EnumUtil.GetArrayList();
+ foreach(DictionaryEntry item in lstDefect)
+ {
+ DefectCountOfSizeControl userCon = new DefectCountOfSizeControl();
+ userCon.Code = item.Value.ToString();
+ userCon.Title = ((DefectNameEnum)(int)item.Key).ToString();
+ if (model != null && model.QualifiedCriterionList!=null)
+ {
+ var qalifiedItem = model.QualifiedCriterionList.FirstOrDefault(m => m.DefectCode == userCon.Code);
+ if(qalifiedItem != null)
+ {
+ userCon.Checked = true;
+ userCon.SizeValue = (decimal)qalifiedItem.Size;
+ userCon.MaxDefectCount = qalifiedItem.MaxDefectCount;
+ }
+ }
+
+ this.flpQualifiedPannel.Controls.Add(userCon);
+ }
+
+ //模型文件
+ string strDefectModelFile = Application.StartupPath + @"\onnxFiles\";
+ if(!Directory.Exists(strDefectModelFile))
+ Directory.CreateDirectory(strDefectModelFile);
+ string[] onnxFiles=Directory.GetFiles(strDefectModelFile,"*.onnx");
+ string onlyName;
+ foreach (string onnxFile in onnxFiles)
+ {
+ onlyName = Path.GetFileName(onnxFile);
+ cmbDefectModelFile.Items.Add(onlyName);
+ if (!string.IsNullOrWhiteSpace(model.DefectModelFile) && onlyName.ToLower()== model.DefectModelFile.ToLower())
+ this.cmbDefectModelFile.SelectedItem = model.DefectModelFile;
+ }
+ }
+ private void btnSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ string szCode = this.txtCode.Text.Trim();
+ string szName = this.txtName.Text.Trim();
+ string szSpec = this.txtSpec.Text.Trim();
+ string szHoleCount = this.cmbHoleCount.Text.Trim();
+ string szBatchId = this.txtBatchId.Text.Trim();
+ int liTargetCount = (int)this.numTargetCount.Value;
+ string szHeightBaseDec=this.txtHeightBaseDec.Text.Trim().Trim(new char[] { ';', ',' });
+ if (szCode == "" || szName == "")
+ throw new Exception("请填写料号和名称!");
+ if(this.cmbClasses.SelectedIndex<0)
+ throw new Exception("请选择产品类型!");
+ if (szHoleCount==""||! Util.IsNumber(szHoleCount))
+ throw new Exception("请正确填写产品目数!");
+ if (this.cmbDefectModelFile.SelectedIndex < 0)
+ throw new Exception("请选择检测模型文件!");
+
+ if (this.cbMarkType.SelectedIndex < 0)
+ throw new Exception("请选择Mark!");
+ //if (szBatchId == "")// || liTargetCount < 1
+ // throw new Exception("请填写批次号");// 和批次目标数量!");
+ if (szHeightBaseDec != "")
+ {
+ double num;
+ string[] szs= szHeightBaseDec.Split(new char[] { ';',','});
+ foreach(string s in szs)
+ {
+ if (!double.TryParse(s, out num))
+ throw new Exception(s+" 非数值!");
+ }
+ }
+
+ model.Code = szCode;
+ model.Name = szName;
+ model.Spec = szSpec;
+ model.ClassesId = (int)this.cmbClasses.SelectedValue;
+ model.HoleCount = Convert.ToInt32(szHoleCount);
+ model.DefectModelFile = this.cmbDefectModelFile.Text.Trim();
+
+ model.TensionBaseValue= (double)this.numTensionBaseValue.Value;
+ model.TensionUpFloatValue = (double)this.numTensionUpFloatValue.Value;
+ model.TensionDownFloatValue = (double)this.numTensionDownFloatValue.Value;
+ model.HeightBaseValue = (double)this.numHeightBaseValue.Value;
+ model.HeightUpFloatValue = (double)this.numHeightUpFloatValue.Value;
+ model.HeightDownFloatValue = (double)this.numHeightDownFloatValue.Value;
+ model.HeightBaseDec = szHeightBaseDec;
+ model.LineWidthBaseValue = (double)this.numLineWidthBaseValue.Value;
+ model.LineWidthUpFloatValue = (double)this.numLineWidthUpFloatValue.Value;
+ model.LineWidthDownFloatValue = (double)this.numLineWidthDownFloatValue.Value;
+ model.PTBaseValue = (double)this.numPTBaseValue.Value;
+ model.PTUpFloatValue = (double)this.numPTUpFloatValue.Value;
+ model.PTDownFloatValue = (double)this.numPTDownFloatValue.Value;
+ if (model.QualifiedCriterionList == null)
+ model.QualifiedCriterionList = new List();
+ else
+ model.QualifiedCriterionList.Clear();
+
if (string.IsNullOrEmpty(model.MapPath))
{
model.MapPath = "";
model.GetPointList = "";
- }
-
- foreach (DefectCountOfSizeControl defectControl in this.flpQualifiedPannel.Controls)
- {
- if (defectControl.Checked)
- {
- model.QualifiedCriterionList.Add(
- new Models.QualifiedCriterion()
- {
- DefectCode = defectControl.Code,
- Size = (float)defectControl.SizeValue,
- MaxDefectCount = (int)defectControl.MaxDefectCount,
- ModifyUserCode = Config.loginUser.Code,
- CreateUserCode = Config.loginUser.Code
- });
- }
- }
+ }
+
+ foreach (DefectCountOfSizeControl defectControl in this.flpQualifiedPannel.Controls)
+ {
+ if (defectControl.Checked)
+ {
+ model.QualifiedCriterionList.Add(
+ new Models.QualifiedCriterion()
+ {
+ DefectCode = defectControl.Code,
+ Size = (float)defectControl.SizeValue,
+ MaxDefectCount = (int)defectControl.MaxDefectCount,
+ ModifyUserCode = Config.loginUser.Code,
+ CreateUserCode = Config.loginUser.Code
+ });
+ }
+ }
model.ModifyUserCode = Config.loginUser.Code;
//2023-11-2 mark
- model.MarkType = this.cbMarkType.SelectedIndex;
- model.MarkSize = (double)this.numMarkSize.Value;
-
- bool result;
- if (model.Id == 0)
- {
- model.BatchId = szBatchId;
- model.TargetCount = liTargetCount;
- model.CompleteCount = 0;
- model.CreateUserCode = Config.loginUser.Code;
- result = service.InsertNav(model);
- }
- else
- {
- if (model.BatchId != szBatchId && !string.IsNullOrWhiteSpace(model.BatchId))
- {
- if (model.CompleteCount m.BatchId == szBatchId) != null)
- throw new Exception("当前批次号与历史中所用批次号重复,请重新填写!");
-
- model.BatchHistoryList.Add(new Models.BatchHistory()
- {
- BatchId = model.BatchId,
- TargetCount = model.TargetCount,
- CompleteCount = model.CompleteCount,
- CreateUserCode = Config.loginUser.Code,
- ModifyUserCode = Config.loginUser.Code
- });
- model.CompleteCount = 0;
- }
-
- model.BatchId = szBatchId;
- model.TargetCount = liTargetCount;
- result = service.UpdateNav(model);
- }
- if (!result)
- throw new Exception("保存失败!");
-
- this.tsbtnAddFile.Enabled = true;
- this.tsbtnNewBatchId.Enabled = true;
- MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- this.DialogResult = DialogResult.OK;
- this.Close();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
-
- private void btnCancel_Click(object sender, EventArgs e)
- {
- this.Close();
- }
-
- private void tsbtnNewBatchId_Click(object sender, EventArgs e)
- {
- tabControl1.SelectedIndex = 2;
- Application.DoEvents();
- }
-
- private void btnAddFile_Click(object sender, EventArgs e)
- {
- try
+ model.MarkType = this.cbMarkType.SelectedIndex;
+ model.MarkSize = (double)this.numMarkSize.Value;
+ //2023-12-18 主栅
+ model.MarkDisturb = this.cbMarkDisturb.Checked?1:0;
+ model.MainGrid = this.cbMainGrid.Checked ? 1 : 0;
+
+ bool result;
+ if (model.Id == 0)
+ {
+ model.BatchId = szBatchId;
+ model.TargetCount = liTargetCount;
+ model.CompleteCount = 0;
+ model.CreateUserCode = Config.loginUser.Code;
+ result = service.InsertNav(model);
+ }
+ else
+ {
+ if (model.BatchId != szBatchId && !string.IsNullOrWhiteSpace(model.BatchId))
+ {
+ if (model.CompleteCount m.BatchId == szBatchId) != null)
+ throw new Exception("当前批次号与历史中所用批次号重复,请重新填写!");
+
+ model.BatchHistoryList.Add(new Models.BatchHistory()
+ {
+ BatchId = model.BatchId,
+ TargetCount = model.TargetCount,
+ CompleteCount = model.CompleteCount,
+ CreateUserCode = Config.loginUser.Code,
+ ModifyUserCode = Config.loginUser.Code
+ });
+ model.CompleteCount = 0;
+ }
+
+ model.BatchId = szBatchId;
+ model.TargetCount = liTargetCount;
+ result = service.UpdateNav(model);
+ }
+ if (!result)
+ throw new Exception("保存失败!");
+
+ this.tsbtnAddFile.Enabled = true;
+ this.tsbtnNewBatchId.Enabled = true;
+ MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ this.DialogResult = DialogResult.OK;
+ this.Close();
+ }
+ catch (Exception ex)
{
- if (this.cbMarkType.SelectedIndex < 0)
- throw new Exception("请选择Mark!");
- //.dwg /.dxf /.dws /.dwt
- string filePath = FileUtil.selectFile("gbx,gbr文件|*.gb?");
- if (string.IsNullOrWhiteSpace(filePath))
- return;
-
- string fileName=Path.GetFileName(filePath);
- string fileExtend=Path.GetExtension(filePath);
- string fileOnlyName = fileName.Substring(0, fileName.Length - fileExtend.Length);
-
- //
- string targFilePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\";
- if (!Directory.Exists(targFilePath))
- Directory.CreateDirectory(targFilePath);
- else//删除原文件
- FileUtil.delFilesInFolder(targFilePath);
-
- targFilePath += fileName;
- //File.Copy(res.file_path, defectFileName + ".bmp", true);
- bool result = API.CopyFile(filePath, targFilePath, false);//更快 //false-覆盖
- if (!result)
- throw new Exception("移动文件失败!");
-
- //后台线程转BMP与JPG
- string tempClass = this.cmbClasses.Text;
- int tempIndex = this.cbMarkType.SelectedIndex;
- double tempValue = (double)this.numMarkSize.Value;
- Task.Run(() =>
- {
- Yolo5.Yolo_Class yolo = new Yolo5.Yolo_Class();
+ MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void btnCancel_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ private void tsbtnNewBatchId_Click(object sender, EventArgs e)
+ {
+ tabControl1.SelectedIndex = 2;
+ Application.DoEvents();
+ }
+
+ private void btnAddFile_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (this.cbMarkType.SelectedIndex < 0)
+ throw new Exception("请选择Mark!");
+ //.dwg /.dxf /.dws /.dwt
+ string filePath = FileUtil.selectFile("gbx,gbr文件|*.gb?");
+ if (string.IsNullOrWhiteSpace(filePath))
+ return;
+
+ string fileName=Path.GetFileName(filePath);
+ string fileExtend=Path.GetExtension(filePath);
+ string fileOnlyName = fileName.Substring(0, fileName.Length - fileExtend.Length);
+
+ //
+ string targFilePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\";
+ if (!Directory.Exists(targFilePath))
+ Directory.CreateDirectory(targFilePath);
+ else//删除原文件
+ FileUtil.delFilesInFolder(targFilePath);
+
+ targFilePath += fileName;
+ //File.Copy(res.file_path, defectFileName + ".bmp", true);
+ bool result = API.CopyFile(filePath, targFilePath, false);//更快 //false-覆盖
+ if (!result)
+ throw new Exception("移动文件失败!");
+
+ //后台线程转BMP与JPG
+ string tempClass = this.cmbClasses.Text;
+ int tempIndex = this.cbMarkType.SelectedIndex;
+ double tempValue = (double)this.numMarkSize.Value;
+ //2023-12-18
+ int tMarkDistrub = this.cbMarkDisturb.Checked ? 1 : 0;
+ int tMainGrid = this.cbMainGrid.Checked ? 1 : 0;
+
+ Task.Run(() =>
+ {
+ Yolo5.Yolo_Class yolo = new Yolo5.Yolo_Class();
string bmpPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".bmp";
//2023-11-3 mark
-
- //yolo.gerber2image(targFilePath, bmpPath);
- double[] markParam = new double[4];
- if(tempClass.Contains("乳剂"))
- markParam[0] = 2;
- else if (tempClass.Contains("PI"))
- markParam[0] = 1;
- else
- markParam[0] = 0;
+
+ //yolo.gerber2image(targFilePath, bmpPath);
+ double[] markParam = new double[6];
+ if(tempClass.Contains("乳剂"))
+ markParam[0] = 2;
+ else if (tempClass.Contains("PI"))
+ markParam[0] = 1;
+ else
+ markParam[0] = 0;
if (tempIndex == 0)
{
//默认情况 实心圆,0.5mm
markParam[1] = 2;
markParam[2] = 0.5;
markParam[3] = 1;
- }
+ markParam[4] = 0;
+ markParam[5] = 0;
+ }
else
{
markParam[1] = tempIndex - 1;
markParam[2] = tempValue;
markParam[3] = tempIndex == 1 ? 0 : 1;
- }
- yolo.gerber2image(targFilePath, bmpPath, markParam);
-
- //换背景JPG
- Mat mat = Cv2.ImRead(bmpPath);
- Cv2.CvtColor(mat, mat, ColorConversionCodes.RGB2GRAY);//转灰度图
- for (int i = 0; i < mat.Height; i++)
- {
- for (int j = 0; j < mat.Width; j++)
- {
- if (mat.At(i, j) == 255)//白色
- mat.Set(i, j, 0);
- else
- mat.Set(i, j, 255);
- }
- }
- model.MapPath = bmpPath;
- //灰转彩
- //Cv2.CvtColor(mat, mat, ColorConversionCodes.GRAY2RGB);
- //for (int i = 0; i < mat.Height; i++)
- //{
- // for (int j = 0; j < mat.Width; j++)
- // {
- // if (mat.At(i, j) == 255)//白色
- // mat.Set(i, j, 0); //黄色
- // }
- //}
- bmpPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".jpg";
- //model.MapPath = bmpPath;
- OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat).Save(bmpPath, ImageFormat.Jpeg);
- });//不能加.Start();
-
- Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(m => m.Type == 0);
- if (attachmentFile!=null)
- {
- attachmentFile.Type = 0;//图纸
- attachmentFile.NameTimestamp= $"{model.Id}\\{fileOnlyName}";
- attachmentFile.Name = fileName;
- attachmentFile.ExtendName = fileExtend;
- }
- else
- {
- model.AttachmentList.Add(new Models.Attachment()
- {
- TBName = "product",
- Type = 0,
- NameTimestamp = $"{model.Id}\\{fileOnlyName}",
- Name = fileName,
- ExtendName = fileExtend,
- CreateUserCode = Config.loginUser.Code,
- ModifyUserCode = Config.loginUser.Code
- });
- }
- if (!service.UpdateNav(model))
- throw new Exception("保存文件失败!");
-
- model=service.GetModelNav(model.Code);
- this.btnOpenFile.Text = fileName;
- this.btnOpenFile.Visible = true;
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
-
- }
-
-
- private void btnOpenFile_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
- {
- Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(m => m.Type == 0);
- if (attachmentFile == null )
- MessageBox.Show("还未上传!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
- string filePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\" + attachmentFile.NameTimestamp + attachmentFile.ExtendName;
- if(File.Exists(filePath))
- Process.Start(filePath);
+ markParam[4] = tMarkDistrub;
+ markParam[5] = tMainGrid;
+ }
+ yolo.gerber2image(targFilePath, bmpPath, markParam);
+
+ //换背景JPG
+ Mat mat = Cv2.ImRead(bmpPath);
+ Cv2.CvtColor(mat, mat, ColorConversionCodes.RGB2GRAY);//转灰度图
+ for (int i = 0; i < mat.Height; i++)
+ {
+ for (int j = 0; j < mat.Width; j++)
+ {
+ if (mat.At(i, j) == 255)//白色
+ mat.Set(i, j, 0);
+ else
+ mat.Set(i, j, 255);
+ }
+ }
+ model.MapPath = bmpPath;
+ //灰转彩
+ //Cv2.CvtColor(mat, mat, ColorConversionCodes.GRAY2RGB);
+ //for (int i = 0; i < mat.Height; i++)
+ //{
+ // for (int j = 0; j < mat.Width; j++)
+ // {
+ // if (mat.At(i, j) == 255)//白色
+ // mat.Set(i, j, 0); //黄色
+ // }
+ //}
+ bmpPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".jpg";
+ //model.MapPath = bmpPath;
+ OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat).Save(bmpPath, ImageFormat.Jpeg);
+ });//不能加.Start();
+
+ Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(m => m.Type == 0);
+ if (attachmentFile!=null)
+ {
+ attachmentFile.Type = 0;//图纸
+ attachmentFile.NameTimestamp= $"{model.Id}\\{fileOnlyName}";
+ attachmentFile.Name = fileName;
+ attachmentFile.ExtendName = fileExtend;
+ }
+ else
+ {
+ model.AttachmentList.Add(new Models.Attachment()
+ {
+ TBName = "product",
+ Type = 0,
+ NameTimestamp = $"{model.Id}\\{fileOnlyName}",
+ Name = fileName,
+ ExtendName = fileExtend,
+ CreateUserCode = Config.loginUser.Code,
+ ModifyUserCode = Config.loginUser.Code
+ });
+ }
+ if (!service.UpdateNav(model))
+ throw new Exception("保存文件失败!");
+
+ model=service.GetModelNav(model.Code);
+ this.btnOpenFile.Text = fileName;
+ this.btnOpenFile.Visible = true;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ }
+
+
+ private void btnOpenFile_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(m => m.Type == 0);
+ if (attachmentFile == null )
+ MessageBox.Show("还未上传!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ string filePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\" + attachmentFile.NameTimestamp + attachmentFile.ExtendName;
+ if(File.Exists(filePath))
+ Process.Start(filePath);
}
private void tbtnGetPos_Click(object sender, EventArgs e)
@@ -464,5 +478,5 @@ namespace ProductionControl
model = service.GetModelNav(model.Code);
}
- }
-}
+ }
+}
diff --git a/halftoneproject-master/Code/FrmProductInfo.resx b/halftoneproject-master/Code/FrmProductInfo.resx
index 3551361..ce2b9fd 100644
--- a/halftoneproject-master/Code/FrmProductInfo.resx
+++ b/halftoneproject-master/Code/FrmProductInfo.resx
@@ -127,16 +127,16 @@
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIgSURBVFhH7ZdPaxNBGMbfIBQFpeAXEBV7KfTWFsU/FzER
- es2hlHabnZndeVc9BL+BN2kvLX4Aa4sWCn4Bb9Ieq4Ueeuyt9NwiUcQ/7wyTzY6ZJDubRQj0gR+bzMz7
- 7JPZdzcJXMihCkTJQ6JWGC6rwJNJ4+ehen0MWPwJBP4pBY6vjHNOCZzuMhmex8Y9h7h8kBYyPKZP8A5E
- vOmP3IAQj7TPMp5AFI2bMwxQlNxPA3B8a0aLicvXqZeQO2Z0gLIBhHxvRotJyPWOl/YLzEwfZQMw/GBG
- 84thg3Yu0q85rlkB5vEbhMkNPddTwwRoNq9Q3W9dq8RxNfVqE8Z7NFPR804NEyAMr1HdGdHS77lcSb0s
- 5Es975TVA7hlRvMpSa5Cbe6XrlWymtDio553yg7QZ2EP6dvWNK/ANxmvDn131g6gtvOemfETwymqPc14
- dfAIoFBNdUh8oQfM18HQOo4HEAQ/TX03ngHKZzQDBMF5Idp3RRavAMpEyKfA2PVCxPEd8tm1PP12gBpr
- WAlMLE/PS/CDuvoFiGTWGxbPkF8t/VpuM5pNWCaeAVp0CZaAP5vQDaWOeVHro+guMLlvef7/JpRoeXrv
- gJCLIMRtaOAtffwXNe6CP79J9fQjVz+icwbI/ii1Ud8JfrgeQhq5bc7mkLp1nEVl0i9AEFymRZ+7i0pi
- YeE77XLVnK2H6vVLtPgR9YP7b1dRBD7RfXEhSwB/AekDZZ13nHnPAAAAAElFTkSuQmCC
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIeSURBVFhH7ZfLShxBFIaPCJKAIuQFghHdCO5MSFCzES/Z
+ zyKIduyq6q7TxoXkDdyJbhQfwEswgYAv4E506QVcZJmduE4IJoRcThU1PV2ZmpmunkYQ/OGjZ6rq/P1P
+ 9emeGbiXQx0QJePEdGG4nAKeDBk/D1UqXcDiQxD4txQ4rhjnnBI4UmfSPhPGPYe4HEsLGX6hT7ALIt7z
+ R+5AiJ+1zxu8gijqNWdooSgZTQNw3DajxcTlauol5Ccz2kLZAELum9FiEnKz5qX9AjPTRNkADD+Y0fxi
+ uEA7F+nXHDesAK/xO4TJYz3XUO0EWF5+SHV/dK0Sx/XUq0oYn9BMh553qp0AYdhDdV+JG/2ey7XUy0K+
+ 0/NOWT2A781oPiVJN0y++q1rlawmtDjQ807ZAZosbCB925rmFbiV8arRdGftAGo7X5gZPzEcptrrjFcN
+ jwAK1VSXxBk9YM5bQ+s4XkAQ/DL19XgGKJ+7GSAIvhWieldk8QqgTIScAcYeFSKOB8jn2PL02wFqrHYl
+ MLE8PS/BT+rqJRDJM29Y/JT8ptOv5Sp3swnLxDPADV2CeeCLg7qh1DEvan0UPQcmTy3P229CiZan9w4I
+ OQdC9MMCPtHH/1HjLvjbPqqnH7n6EZ0zQPZHqY36TvDD9RDSyI/mbA6pW8dZVCbNAgTBA1p0VF9UErOz
+ P2iXp8zZGqhS6aTFL6kf3H+7iiJwUvfFvSwB/AOYeWWRyPCtmgAAAABJRU5ErkJggg==
@@ -210,9 +210,6 @@
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
-
- 166, 17
-
True
diff --git a/halftoneproject-master/Code/FrmProductList.Designer.cs b/halftoneproject-master/Code/FrmProductList.Designer.cs
index 68e7dba..c8de0b9 100644
--- a/halftoneproject-master/Code/FrmProductList.Designer.cs
+++ b/halftoneproject-master/Code/FrmProductList.Designer.cs
@@ -44,6 +44,8 @@
this.tsbtnAdd = new System.Windows.Forms.ToolStripButton();
this.tsbtnDel = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.tsbtnClone = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnSetting = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnClasses = new System.Windows.Forms.ToolStripButton();
@@ -67,8 +69,6 @@
this.colReviseStepName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colModifyCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colModifyTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.tsbtnClone = new System.Windows.Forms.ToolStripButton();
- this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.toolStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
@@ -143,6 +143,25 @@
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 56);
//
+ // tsbtnClone
+ //
+ this.tsbtnClone.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClone.Image")));
+ this.tsbtnClone.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+ this.tsbtnClone.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.tsbtnClone.Name = "tsbtnClone";
+ this.tsbtnClone.Size = new System.Drawing.Size(52, 53);
+ this.tsbtnClone.Text = " 克隆 ";
+ this.tsbtnClone.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
+ this.tsbtnClone.ToolTipText = "克隆当前流程";
+ this.tsbtnClone.Visible = false;
+ this.tsbtnClone.Click += new System.EventHandler(this.tsbtnClone_Click);
+ //
+ // toolStripSeparator5
+ //
+ this.toolStripSeparator5.Name = "toolStripSeparator5";
+ this.toolStripSeparator5.Size = new System.Drawing.Size(6, 56);
+ this.toolStripSeparator5.Visible = false;
+ //
// tsbtnSetting
//
this.tsbtnSetting.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSetting.Image")));
@@ -264,7 +283,7 @@
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle8;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(0, 56);
- this.dataGridView1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.dataGridView1.Margin = new System.Windows.Forms.Padding(2);
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
@@ -408,23 +427,6 @@
this.colModifyTime.ReadOnly = true;
this.colModifyTime.Width = 150;
//
- // tsbtnClone
- //
- this.tsbtnClone.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClone.Image")));
- this.tsbtnClone.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
- this.tsbtnClone.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.tsbtnClone.Name = "tsbtnClone";
- this.tsbtnClone.Size = new System.Drawing.Size(52, 53);
- this.tsbtnClone.Text = " 克隆 ";
- this.tsbtnClone.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
- this.tsbtnClone.ToolTipText = "克隆当前流程";
- this.tsbtnClone.Click += new System.EventHandler(this.tsbtnClone_Click);
- //
- // toolStripSeparator5
- //
- this.toolStripSeparator5.Name = "toolStripSeparator5";
- this.toolStripSeparator5.Size = new System.Drawing.Size(6, 56);
- //
// FrmProductList
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -434,7 +436,7 @@
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.toolStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "FrmProductList";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
diff --git a/halftoneproject-master/Code/FrmProductList.cs b/halftoneproject-master/Code/FrmProductList.cs
index af0c2be..5863ee3 100644
--- a/halftoneproject-master/Code/FrmProductList.cs
+++ b/halftoneproject-master/Code/FrmProductList.cs
@@ -1,186 +1,186 @@
-using Models;
-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 ProductionControl
-{
- public partial class FrmProductList : Form
- {
- Service.ProductService service = new Service.ProductService();
- public Models.Product Product { get; private set; }
- public FrmProductList(bool isProductRevise=false)
- {
- InitializeComponent();
- this.tsbtnAdd.Enabled=this.tsbtnDel.Enabled =this.tsbtnSetting.Enabled= !isProductRevise;
- this.tsbtnRevise.Visible=isProductRevise;
- if (isProductRevise)
- {
- this.Text = "产品基准厚度校正";
- }
- #region dataGridView设置
- dataGridView1.AutoGenerateColumns = false;//自动创建列
- dataGridView1.AllowUserToAddRows = dataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
- dataGridView1.AllowUserToResizeRows = true;//用户调整行大小
- //dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
- //显示行号与列宽度自动调整
- dataGridView1.RowHeadersVisible = true;
- dataGridView1.RowHeadersWidth = 50;
- dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
- dataGridView1.RowPostPaint += (sender, e) =>//序号列头
- {
- Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
- };
- dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
- //for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
- // dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
-
- //行列交叉处标题
- //if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
- #endregion
- }
- private void initDataView(int selIndex = -1)
- {
- Product = null;
- var list = service.GetListNav();
- tsslCount.Text = $"共 {list.Count} 条记录";
- int liIndex = 0;
- if (selIndex > 0) liIndex = selIndex;
- else if (this.dataGridView1.CurrentRow!=null)
- liIndex=this.dataGridView1.CurrentRow.Index;
- dataGridView1.DataSource = new BindingSource(list, null);
- if (dataGridView1.Rows.Count > liIndex)
- dataGridView1.CurrentCell = dataGridView1[1, liIndex];
- }
- private void FrmProductList_Load(object sender, EventArgs e)
- {
- initDataView();
- }
- private void tsbtnRefresh_Click(object sender, EventArgs e)
- {
- initDataView();
- }
- private void tsbtnAdd_Click(object sender, EventArgs e)
- {
- FrmProductInfo frm = new FrmProductInfo();
- frm.ShowDialog();
- initDataView();
- }
-
- private void tsbtnDel_Click(object sender, EventArgs e)
- {
- try
- {
- if (this.dataGridView1.CurrentRow == null)
- return;
-
- if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
- {
- var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
- int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
- if (!service.DelNav(list[liIndex]))
- throw new Exception("删除失败!");
- MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- //initDataView();
- this.dataGridView1.Rows.RemoveAt(liIndex);
- if(this.dataGridView1.Rows.Count == 0)
- initDataView();
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
-
- private void tsbtnSetting_Click(object sender, EventArgs e)
- {
- if(this.dataGridView1.CurrentRow == null) return;
-
- var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
- int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
- FrmProductStep frm = new FrmProductStep(list[liIndex]);
- frm.ShowDialog();
- initDataView();
- }
- private void tsbtnRevise_Click(object sender, EventArgs e)
- {
- try
- {
- if (this.dataGridView1.CurrentRow == null)
- throw new Exception("请选择要校正的产品!");
-
- var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
- int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
- if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1)
- throw new Exception("此产品未设置校正流程!");
-
- if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
- {
- Product=list[liIndex];
- this.DialogResult = DialogResult.Yes;
- this.Close();
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- private void tsbtnClose_Click(object sender, EventArgs e)
- {
- this.Close();
- }
-
- private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
- {
- if (!this.tsbtnAdd.Enabled) return;
- var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
- int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
- FrmProductInfo frm = new FrmProductInfo(list[liIndex]);
- frm.ShowDialog(this);
- initDataView();
- }
-
- private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
- {
- var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
- for (int i = 0; i < dataGridView1.Rows.Count; i++)
- {
- if (list[i].ClassesInfo != null)
- dataGridView1.Rows[i].Cells["colClasses"].Value = list[i].ClassesInfo.Name;
- if (list[i].StepInfo != null)
- dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name;
- if (list[i].ReviseStepInfo != null)
- dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name;
-
- }
- }
-
- private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
- {
-
- }
-
- private void tsbtnClasses_Click(object sender, EventArgs e)
- {
- FrmClassesSingle frm = new FrmClassesSingle(0, "产品类型管理");
- if(frm.ShowDialog() == DialogResult.OK)
- {
- this.initDataView();
- }
- }
-
-
- private void tsbtnDefectClasses_Click(object sender, EventArgs e)
- {
-
+using Models;
+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 ProductionControl
+{
+ public partial class FrmProductList : Form
+ {
+ Service.ProductService service = new Service.ProductService();
+ public Models.Product Product { get; private set; }
+ public FrmProductList(bool isProductRevise=false)
+ {
+ InitializeComponent();
+ this.tsbtnAdd.Enabled=this.tsbtnDel.Enabled =this.tsbtnSetting.Enabled= !isProductRevise;
+ this.tsbtnRevise.Visible=isProductRevise;
+ if (isProductRevise)
+ {
+ this.Text = "产品基准厚度校正";
+ }
+ #region dataGridView设置
+ dataGridView1.AutoGenerateColumns = false;//自动创建列
+ dataGridView1.AllowUserToAddRows = dataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
+ dataGridView1.AllowUserToResizeRows = true;//用户调整行大小
+ //dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
+ //显示行号与列宽度自动调整
+ dataGridView1.RowHeadersVisible = true;
+ dataGridView1.RowHeadersWidth = 50;
+ dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
+ dataGridView1.RowPostPaint += (sender, e) =>//序号列头
+ {
+ Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
+ };
+ dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+ //for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
+ // dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+ //行列交叉处标题
+ //if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
+ #endregion
+ }
+ private void initDataView(int selIndex = -1)
+ {
+ Product = null;
+ var list = service.GetListNav();
+ tsslCount.Text = $"共 {list.Count} 条记录";
+ int liIndex = 0;
+ if (selIndex > 0) liIndex = selIndex;
+ else if (this.dataGridView1.CurrentRow!=null)
+ liIndex=this.dataGridView1.CurrentRow.Index;
+ dataGridView1.DataSource = new BindingSource(list, null);
+ if (dataGridView1.Rows.Count > liIndex)
+ dataGridView1.CurrentCell = dataGridView1[1, liIndex];
+ }
+ private void FrmProductList_Load(object sender, EventArgs e)
+ {
+ initDataView();
+ }
+ private void tsbtnRefresh_Click(object sender, EventArgs e)
+ {
+ initDataView();
+ }
+ private void tsbtnAdd_Click(object sender, EventArgs e)
+ {
+ FrmProductInfo frm = new FrmProductInfo();
+ frm.ShowDialog();
+ initDataView();
+ }
+
+ private void tsbtnDel_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (this.dataGridView1.CurrentRow == null)
+ return;
+
+ if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+ {
+ var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
+ int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
+ if (!service.DelNav(list[liIndex]))
+ throw new Exception("删除失败!");
+ MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ //initDataView();
+ this.dataGridView1.Rows.RemoveAt(liIndex);
+ if(this.dataGridView1.Rows.Count == 0)
+ initDataView();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void tsbtnSetting_Click(object sender, EventArgs e)
+ {
+ if(this.dataGridView1.CurrentRow == null) return;
+
+ var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
+ int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
+ FrmProductStep frm = new FrmProductStep(list[liIndex]);
+ frm.ShowDialog();
+ initDataView();
+ }
+ private void tsbtnRevise_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (this.dataGridView1.CurrentRow == null)
+ throw new Exception("请选择要校正的产品!");
+
+ var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
+ int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
+ if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1)
+ throw new Exception("此产品未设置校正流程!");
+
+ if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+ {
+ Product=list[liIndex];
+ this.DialogResult = DialogResult.Yes;
+ this.Close();
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void tsbtnClose_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (!this.tsbtnAdd.Enabled) return;
+ var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
+ int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
+ FrmProductInfo frm = new FrmProductInfo(list[liIndex]);
+ frm.ShowDialog(this);
+ initDataView();
+ }
+
+ private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
+ {
+ var list = ((BindingSource)dataGridView1.DataSource).DataSource as List;
+ for (int i = 0; i < dataGridView1.Rows.Count; i++)
+ {
+ if (list[i].ClassesInfo != null)
+ dataGridView1.Rows[i].Cells["colClasses"].Value = list[i].ClassesInfo.Name;
+ if (list[i].StepInfo != null)
+ dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name;
+ if (list[i].ReviseStepInfo != null)
+ dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name;
+
+ }
+ }
+
+ private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
+ {
+
+ }
+
+ private void tsbtnClasses_Click(object sender, EventArgs e)
+ {
+ FrmClassesSingle frm = new FrmClassesSingle(0, "产品类型管理");
+ if(frm.ShowDialog() == DialogResult.OK)
+ {
+ this.initDataView();
+ }
+ }
+
+
+ private void tsbtnDefectClasses_Click(object sender, EventArgs e)
+ {
+
}
private void tsbtnClone_Click(object sender, EventArgs e)
@@ -234,6 +234,8 @@ namespace ProductionControl
AssistStepInfo = list[liIndex].AssistStepInfo,
ProductAssistProcessList = new List(),
+ MarkType = list[liIndex].MarkType,
+ MarkSize = list[liIndex].MarkSize,
MapPath = "",
GetPointList = "",
//OrderList = new List(),
@@ -347,5 +349,5 @@ namespace ProductionControl
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
- }
-}
+ }
+}
diff --git a/halftoneproject-master/Code/FrmProductList.resx b/halftoneproject-master/Code/FrmProductList.resx
index 94b62ae..bd4f3a9 100644
--- a/halftoneproject-master/Code/FrmProductList.resx
+++ b/halftoneproject-master/Code/FrmProductList.resx
@@ -124,35 +124,35 @@
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMqSURBVFhH7ZdNSFRRHMVPRYug2klBtKisQAhKKRAECapV
- VAtBCHJljjqOg+P4NWZToTBlRuYgY2o5E4YkCIoh2CIIop1tggKhRQVtjIjog7ofHYd/oM5742jOIvDA
- j//7OP97rnfue85gXf+lzCBy7BAKTByFyZrAHrmVPdk4inQcPSqBDzYBuxRe/6QTGDYPcEZaUqSHMCGH
- mYsD5jF4nBOwmaLieMmVqZAhkvp7T04zk7mHUjWA7/Y+m1fJ/DhLzzOSHUQzsWuNDJ9e5i5KbD8bsoBE
- uMv0I1f1cdn72JAFJMZdOoph20uzoHpgFp7/KxLjLBvFYWKXQ0X5yEUxTfrImLrDR9PB54REOUt347bt
- pjEN9IyZbuRIS1KmC1t4fdrJvxRpcZa6iTf2Fo0u6C5MijVFqhNfnXqWIvZUcXm22k6aXFARbswb2Cn2
- RXLyuyEtqTIdyLMRmlzQEUyJdZF4fcLJ78S8V9pSZdpxzHbQ6IJux4BYsyMT5gpcY5gL+qrzCqyZbJh7
- 4ArDXFBh7oGw8x5wE/+o7eY6tiWrHNtH2CS3U6VaMWvbGOiCbsO4WB3FCe41bShkWL65hEPzq8p6kOzn
- ca5pxT56Noo9VboFPTbEsDToEEZNy+L3gK3AZhPCWV6vZy2zLThnmnGK58WsheSoacIR1lxpcZZtRoFt
- YtAyqCa+CRsxpRvQq5swyvMXrNMkxqDLphE1rGWsJaYBp5OTacBxTmiHRLlL12PEBhm0AlQAcyqIGR3E
- BPtjpN0EETT1qGQtY3gpfSf4EtggMe4ydfxvGOCGC3DwDKH/C5klz3QdRnUAMV6PmABCxM8xL7Lulojl
- ZWpx3vo5eIYoP74pH96xzuhaPNE+jLDGtB+dxs+PxIdiGTpzsanV+hiQAQz/QT6S18qL57oGjzmJhyRm
- argp0+38dDLVuKAq+XF4GZQGen6SOfJWVXMVqvBUezHB8FIZavUyHn4r9mDSVjHMBVWFX8qDz6qCH4MH
- rziBhPEiX4ZYG/FZL9IV/F1Qzi8fHgYvgNd+M/g978c44ZPSkj0xZJct5y8ihiVrOQ7IrXWtUMAf5Oh5
- rCbfSUoAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMwSURBVFhH7ZdPSFRRGMVPRYug2klBtKisQAhKKRAECapV
+ VAtBCHKTOv4fHEdHx8wKJdOMzEHGzHImDEkQFEOwRRBEu9oEBUKLEtoYEdEfunPv7Th8gTrvjaM5i8AD
+ P77353z3XO+785zBuv5LmUFk2CHkmAhy4zWKPXIrfbIR5OkIelUUszYKuxRe/6yjGDYPcUZaEqSHMCGH
+ qYsDZjF4nBOwqRKL4DVXplSGiOvvPTlNTeY+CtUAftgHbF4l8+MsPU9JdhCNxK41MnxymbsosANsSAMS
+ 4S4zgEzVz2XvZ0MakBh36RCGbR/NgroDs/D8X5EYZ9kQDhO7HCrEj1wI06SfjHGSs04+JyTKWboHt20P
+ jUmgZ8z0IENa4jLd2MLr007+pUiLs9RNvLO3aHRBd2NSrAlSnfjm1LMUsSeKy7PVdtHkgrrOjdmJnWJf
+ JCe/G9KSKNOOLNtBkwu6A1NiXSRen3DyOzHvlbZEmTYcs+00uqDbcE+s6ZFp5QpcY5gL+qrzCqyZbCv3
+ wBWGuaBauQdanfeAm/hHbTc3sC1e5dg+xia5nSjVjBnbwkAXdAvGxeooTnCvaUEuw7LNJRyaX1XWg2Q/
+ jzNNM/bRs1HsidJN6LVBhiVBBzFqmha/B2wpNpsgzvJ6HWuRbcI504hTPM9nzSVHTQBHWDOlxVm2ETk2
+ wKBlUAG+CRswpevRpwMYjQXwknWahBl02TSgirWItcDU43R8MvU4zgntkCh36TqMWD+DVoDyYS7mxyvt
+ xwT7w6TN+OE3dShjLWJ4IX0n+BLYIDHuMrX8b+jjhvNx8BSh/yuZifnwXNdiVPsQ5vUO40OQeDlmCetu
+ iVhepgbnrZeDp4jy4ruqxoeYl6tQg6e6GiOsYe1Fl/HykVQjX4ZOXWxqttUMSAGG/ySfyNtYJV7oKjzh
+ JB6RsKnipky285PJVOCC8vBxVDIoCfT8InOqDO9jFVyFcjzTlZhgeKEMtXoZD78VezBpyxnmgirHb07g
+ iyrhY/DgDScQNZXIliHWRvys5+lS/i64yC8fHgYvgNcUJ/CR98Oc8ElpSZ8YsssW8xcRw+K1GAfk1rpW
+ KOAP8C15gnutFsIAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHoSURBVFhH3ZfNSwJBGMaFIIgM3R2/gu5B/0OXDp26eiro
- UO6OfRD9S921PyCIopPQKQw6RCvujBqdoy/I5tE3NV0YdxuR+sEDvuO8z/uwustObJi4I1OMizLjt5+M
- y7YZwUuU4U1jgsnyZkY1VEYNjKmCGTRuFJWyhI22Kw/U52WT6noihCjRuCHy1Vl7U75ajn9NK8aBN2Zg
- Fi31yW4151XCN9sVF7RkHHhjBmbRUh8sIh3j/hUt6cm3ZzoaE3hjhrEAzJVnEJVajAdI7IomRKUW81eA
- +x5EpZb/F8Dm8h6iUkvkALnDRtpyxInl+qeDivO7Z2h4HXvRQ+09Igew3cZK9yk2vtBD7T0iBwCJIy+Z
- KtQW03uPuW+xgqxDg2vYg73U9oNfBQhC7X2AqNQyiQBTvg2deg2iUovxAEnutyAqtZi/Atxfg6jUYjxA
- WCIFWDquz6nbK47vwwg96CWbDqED2EWRT3D5wra9D/VweQ8l1YNeeJBd+AApLlctV57bXFxGEXrhQXZ/
- 9D9gktAB7KJcV7/nDXNFNZJULzzILsp/QGzglYtx7ymK0AsPstMHUImn91qOwwJum0kfTDAj8GACcGxS
- Cad0NFNkdlpZtWmih1PMoHHBLOwLhvc608dzeMKbxhCx2BcBm5Yir7kGIwAAAABJRU5ErkJggg==
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHoSURBVFhH3ZdPSwJBGMaFIIgMdUbToHvQd+jSoVNXTwUd
+ yt2xP0Rfqbv2AYIoOgmdwkOHaMWdUaNz9A+yefRNTRfG3UakfvCA7zjv8z6s7rITGybuqDQXssxF9ZML
+ 1bYjeMkyvGlMMFnRXNQNlVEDa6pgBo0bRacsYSNz1aH+vGJTXU+EkCUaN0S+Osu21GvK8W9oxTrwxgzM
+ oqU+2e3mvE74xlx5SUvWgTdmYBYt9cEi0nHhX9OSmXx7pqMxgTdmWAvAXXUOUWnEeoDEnmxCVBqxfwWE
+ 70FUGvl/AZhQ9xCVRiIHyB01MilHnqZc/2xQcXH3DA2vYy96qL1H5ADMbax2n2LjCz3U3iNyAJA49pLp
+ Qm0ps/+Y+xYvqDo0uIY92EttP/hVgCD03geISiOTCDDl29Cp1yAqjVgPkBR+C6LSiP0rIPx1iEoj1gOE
+ JVKA5ZP6nL694vg+jNCDXrLpEDoAK8p8QqgXvuN96IfLeyjpHvTCg+zCB0gLtZZy1QUT8iqK0AsPsvuj
+ /wGbhA7AimpD/5633JXVSNK98CC7KP8BuYlXLi68pyhCLzzIzhxAJ57eazkOC7htJn0wwYzAgwnAsUkn
+ nNLRTLO428rqTRM9nGIGjQtm4UByvNfZPp7DE940hojFvgDhTpYe8U0OzAAAAABJRU5ErkJggg==
@@ -242,16 +242,16 @@
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIlSURBVFhH7dTLSxtRFAbwgCAU/H+sUBBcCAqV0hIxNaWa
- uLKrboqLbtx00yqCVlC0UrEPJokxiVkIgiC0tggirQ0+UTE6jpnQJ4GBgdM55dxwvU5m5ibRhfSDHyS5
- 53z3ruK7NulJ58GLUFofo5XqJZzOF+wuK4XWqhPZyxGtVp7wvF7omddBFq1XlnBKL1igHFRRfkIpzQil
- cmArkYv0KlqdX4HaUPJs1G6GaspLd1IzupNnYG/fxMtp1IePCCa0vDhHx/LpSmiGBRwUrEtraPxfumbV
- rDhHR3J5OHdqWICJb/4pfj4nrg7QirWj9tnN0LH3PIirhgWYaOZ3Ef87cz+eVQOz6qHdGaJabwnGdsxg
- 7AQYZePXBfy5F1Ttns7ottkZPQbm7ZefJfFzbqjeOYHIlhmIZIGZXv/hip8vheqd0zG1aXYoR8C8Wvvu
- Gb8nonrntE9mzPb3h8CMr+al8fsM1TundeKb6X93AMzLT7o0fp+heufce7MPvKEPOWliB6J699yd2QPm
- +fKpNH6foWr34N/nneld4D1bUj0TdxFVew8+ou31DvD6F09ciTuIKuXjVzZqb09tAe/pwlFJ4iyiqvKD
- j2iZyADvSfrgAnEGUUXlwUc0j30F3uPEXpF4hmi1esFHNI2uA+9RbPvcd4ZWqp+bAx9vNA6vgRMavbzg
- I24NrYIdGrn84CMaBj8Dj46uLo0jS3X1L1YA0U//cx3i8/0FltEXQTLsVtkAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIlSURBVFhH7dTLSxtRFAbwgCAU/H9soSC4EFy0SEvE1BQ1
+ caUrN6WLbrrpRi2CVbAVRemLSWJMYhaFglDoC0FEU1+tVjE6jpmgfRAYGDidU84N1+tkZm4SXYgf/CDJ
+ Pee7dxXfpUl3Og9ehNL6GK1UL+F0vmB3WSm0Vp3IXo5otfKE5/RC95wOsmi9soRTesEC5aCK8hNKaUYo
+ lQNbiVykR9Hq/ArUhpJHo3YzVFNeupKa0ZU8AnvbJl5Ooz58RDCh5cU5OpZPZ0IzLOCgYF1aQ+P/0zmj
+ ZsU5OpJLx+yhYQEmvv63+PmUuDpIK9aO+tBuho69535cNSzARFf/FPG/M/fiWTUwo+7anSGq9ZZgbNMM
+ xg6AUTK/z+DPvaBq97RHN8z26D4wr5d/lcTPuaF65wQi62YgkgVmeunEFT9fCtU7p21izWxT9oCZWDz2
+ jN8TUb1zWse/ma1vd4F5vpCXxu8zVO+c5hcZ0/9mB5iRL7o0fp+heufcffUTeEMfc9LEDkT17rnzcguY
+ /g+H0vh9hqrdg3+fLdM/gPdkXvVM3EVU7T34iNtT34H3+P2BK3EHUaV8/Eqm9tbkBvAevdsrSZxFVFV+
+ 8BHN46vAe5DeOUOcQVRRefARTWMrwOtLbBWJZ4hWqxd8ROPoEvB6Y5unvjO0Uv1cH/x0rWF4EZzQ6PkF
+ H3FzaAHs0Mj5Bx9x4+lX4NHRxaXh2Xxd/cBnQPTTVS5DfL5/Ma4XNoG0VecAAAAASUVORK5CYII=
diff --git a/halftoneproject-master/Code/FrmSysSetting.Designer.cs b/halftoneproject-master/Code/FrmSysSetting.Designer.cs
index 12233b5..4c17510 100644
--- a/halftoneproject-master/Code/FrmSysSetting.Designer.cs
+++ b/halftoneproject-master/Code/FrmSysSetting.Designer.cs
@@ -218,6 +218,7 @@
this.chkSizeBmp_SavePath_AutoClear = new System.Windows.Forms.CheckBox();
this.label43 = new System.Windows.Forms.Label();
this.tabPage9 = new System.Windows.Forms.TabPage();
+ this.cbOpenFlawDistribution = new System.Windows.Forms.CheckBox();
this.ckSkipSizeFailed = new System.Windows.Forms.CheckBox();
this.chkSkipSmallAxis = new System.Windows.Forms.CheckBox();
this.chkSkipScannerCC = new System.Windows.Forms.CheckBox();
@@ -237,7 +238,7 @@
this.numHttpPort = new System.Windows.Forms.NumericUpDown();
this.label49 = new System.Windows.Forms.Label();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
- this.cbOpenFlawDistribution = new System.Windows.Forms.CheckBox();
+ this.cbOpenAxisXCal = new System.Windows.Forms.CheckBox();
this.toolStrip1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.panel1.SuspendLayout();
@@ -2727,6 +2728,7 @@
//
// tabPage9
//
+ this.tabPage9.Controls.Add(this.cbOpenAxisXCal);
this.tabPage9.Controls.Add(this.cbOpenFlawDistribution);
this.tabPage9.Controls.Add(this.ckSkipSizeFailed);
this.tabPage9.Controls.Add(this.chkSkipSmallAxis);
@@ -2747,6 +2749,17 @@
this.tabPage9.Text = "功能过滤";
this.tabPage9.UseVisualStyleBackColor = true;
//
+ // cbOpenFlawDistribution
+ //
+ this.cbOpenFlawDistribution.AutoSize = true;
+ this.cbOpenFlawDistribution.Location = new System.Drawing.Point(19, 306);
+ this.cbOpenFlawDistribution.Margin = new System.Windows.Forms.Padding(2);
+ this.cbOpenFlawDistribution.Name = "cbOpenFlawDistribution";
+ this.cbOpenFlawDistribution.Size = new System.Drawing.Size(96, 16);
+ this.cbOpenFlawDistribution.TabIndex = 12;
+ this.cbOpenFlawDistribution.Text = "启用缺陷分布";
+ this.cbOpenFlawDistribution.UseVisualStyleBackColor = true;
+ //
// ckSkipSizeFailed
//
this.ckSkipSizeFailed.AutoSize = true;
@@ -2964,16 +2977,16 @@
this.label49.TabIndex = 4;
this.label49.Text = "本机IP:";
//
- // cbOpenFlawDistribution
+ // cbOpenAxisXCal
//
- this.cbOpenFlawDistribution.AutoSize = true;
- this.cbOpenFlawDistribution.Location = new System.Drawing.Point(19, 304);
- this.cbOpenFlawDistribution.Margin = new System.Windows.Forms.Padding(2);
- this.cbOpenFlawDistribution.Name = "cbOpenFlawDistribution";
- this.cbOpenFlawDistribution.Size = new System.Drawing.Size(96, 16);
- this.cbOpenFlawDistribution.TabIndex = 12;
- this.cbOpenFlawDistribution.Text = "启用缺陷分布";
- this.cbOpenFlawDistribution.UseVisualStyleBackColor = true;
+ this.cbOpenAxisXCal.AutoSize = true;
+ this.cbOpenAxisXCal.Location = new System.Drawing.Point(19, 344);
+ this.cbOpenAxisXCal.Margin = new System.Windows.Forms.Padding(2);
+ this.cbOpenAxisXCal.Name = "cbOpenAxisXCal";
+ this.cbOpenAxisXCal.Size = new System.Drawing.Size(90, 16);
+ this.cbOpenAxisXCal.TabIndex = 13;
+ this.cbOpenAxisXCal.Text = "启用X轴校准";
+ this.cbOpenAxisXCal.UseVisualStyleBackColor = true;
//
// FrmSysSetting
//
@@ -3327,5 +3340,6 @@
private System.Windows.Forms.NumericUpDown numOffset;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.CheckBox cbOpenFlawDistribution;
+ private System.Windows.Forms.CheckBox cbOpenAxisXCal;
}
}
\ No newline at end of file
diff --git a/halftoneproject-master/Code/FrmSysSetting.cs b/halftoneproject-master/Code/FrmSysSetting.cs
index 4538049..3ce07e0 100644
--- a/halftoneproject-master/Code/FrmSysSetting.cs
+++ b/halftoneproject-master/Code/FrmSysSetting.cs
@@ -50,6 +50,8 @@ namespace ProductionControl
this.ckSkipSizeFailed.Checked = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1";
this.cbOpenFlawDistribution.Checked = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1";
+ this.cbOpenAxisXCal.Checked = Util.ReadIniValue(configPath, "SKIP", "OpenAxisXCalibration") == "1";
+
//DEV
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
EnumUtil.BindToEnumName(this.cobAxis0PulseOutMode, typeof(AxisPulseOutMode), lsTmp == "" ? AxisPulseOutMode.O_CW_CCW : (AxisPulseOutMode)Convert.ToInt32(lsTmp));
@@ -268,6 +270,7 @@ namespace ProductionControl
Util.WriteIniValue(configPath, "SKIP", "MarkErrorStop", this.ckSkipSizeFailed.Checked ? "1" : "0");
Util.WriteIniValue(configPath, "SKIP", "OpenFlawDistribution", this.cbOpenFlawDistribution.Checked ? "1" : "0");
+ Util.WriteIniValue(configPath, "SKIP", "OpenAxisXCalibration", this.cbOpenAxisXCal.Checked ? "1" : "0");
//DEV
Utils.Util.WriteIniValue(configPath, "DEV", "Axis0_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum(this.cobAxis0PulseOutMode)).ToString());
Utils.Util.WriteIniValue(configPath, "DEV", "Axis1_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum(this.cobAxis1PulseOutMode)).ToString());
diff --git a/halftoneproject-master/Code/FrmSysSetting.resx b/halftoneproject-master/Code/FrmSysSetting.resx
index 0aadc95..af12abc 100644
--- a/halftoneproject-master/Code/FrmSysSetting.resx
+++ b/halftoneproject-master/Code/FrmSysSetting.resx
@@ -124,16 +124,16 @@
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIfSURBVFhH7ZdPaxNBGMbfUBCFSsEvILa0l4K3KoptL9JE
- es6hhLpmZ2Z33q09hH4Db6IXpR+gtUULBb+AN6lHW8GDR2/iWZEo4p93hslmp5kkO5ulEOgDPzaZmffZ
- J7PvbhI4l0MViJIlolYYLqvAk3nj56F6/QKw+A0I/FcKHB8Z55wSuNBjMjp3jXsOcbmYFjL8TJ/gBYh4
- zx+5CyF+0j4P8AtE0ZQ5wxBFyZ00AMcdM1pMXD5OvYQ8NKNDlA0g5EszWkxCPu96ab/AzAxQNgDDV2Y0
- vxg2aeci/ZrjMyvAGv6AMLmq5/pqlACt1iWq+6trlTg+Tb06hPE7mqnoeadGCRCGl6nuG9HW77l8knpZ
- yC0975TVA7hvRvMpSSahuvpH1ypZTWjxWs87ZQcYsLCP9G1rmlfgdsary8CdtQOo7bxtZvzE8DrVfs14
- dfEIoFBN9ZE4pgfMyXBoHccPEAS/TX0vngHKZzwDBMH3QnTuiixeAZSJkPeAsSuFiONZ8jmyPP12gBpr
- VAlMLE/PS/CLunoTRHLTGxbfIL9a+rXcYTybsEw8A7TpEtwHvjGnG0od86LWR9EtYPK95Xn2TSjR8vTe
- ASHXQYgZaOK0Pp5GjbvgD69RPf3I1Y/onAGyP0pt1HeCH66HkEYemLM5pG4dZ1GZDAoQBBdp0dveopJo
- NH7SLlfN2fqoXp+gxcvUD+6/XUURuKL74lyWAP4DwL5ll9fZEiMAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIeSURBVFhH7ZfLShxBFIaPCJKAIuQFghHdCO5MSFCzES/Z
+ zyKIduyq6q7TxoXkDdyJbhQfwEswgYAv4E506QVcZJmduE4IJoRcThU1PV2ZmpmunkYQ/OGjZ6rq/P1P
+ 9emeGbiXQx0QJePEdGG4nAKeDBk/D1UqXcDiQxD4txQ4rhjnnBI4UmfSPhPGPYe4HEsLGX6hT7ALIt7z
+ R+5AiJ+1zxu8gijqNWdooSgZTQNw3DajxcTlauol5Ccz2kLZAELum9FiEnKz5qX9AjPTRNkADD+Y0fxi
+ uEA7F+nXHDesAK/xO4TJYz3XUO0EWF5+SHV/dK0Sx/XUq0oYn9BMh553qp0AYdhDdV+JG/2ey7XUy0K+
+ 0/NOWT2A781oPiVJN0y++q1rlawmtDjQ807ZAZosbCB925rmFbiV8arRdGftAGo7X5gZPzEcptrrjFcN
+ jwAK1VSXxBk9YM5bQ+s4XkAQ/DL19XgGKJ+7GSAIvhWieldk8QqgTIScAcYeFSKOB8jn2PL02wFqrHYl
+ MLE8PS/BT+rqJRDJM29Y/JT8ptOv5Sp3swnLxDPADV2CeeCLg7qh1DEvan0UPQcmTy3P229CiZan9w4I
+ OQdC9MMCPtHH/1HjLvjbPqqnH7n6EZ0zQPZHqY36TvDD9RDSyI/mbA6pW8dZVCbNAgTBA1p0VF9UErOz
+ P2iXp8zZGqhS6aTFL6kf3H+7iiJwUvfFvSwB/AOYeWWRyPCtmgAAAABJRU5ErkJggg==
diff --git a/halftoneproject-master/Code/Program.cs b/halftoneproject-master/Code/Program.cs
index 28cb2fd..2c29ab9 100644
--- a/halftoneproject-master/Code/Program.cs
+++ b/halftoneproject-master/Code/Program.cs
@@ -43,6 +43,8 @@ namespace ProductionControl
Process instance = RunningInstance();
if (instance == null)
{
+ Application.ThreadException += Application_ThreadException;
+
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
@@ -80,5 +82,21 @@ namespace ProductionControl
//没有其它的例程,返回Null
return null;
}
+
+ static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
+ {
+
+ Exception ex = e.Exception;
+ using (StreamWriter sw = new StreamWriter(Directory.GetCurrentDirectory() + "\\Log.txt", true))
+ {
+ sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+ sw.WriteLine("Global捕获到未处理异常:" + ex.GetType().ToString());
+ sw.WriteLine("异常信息:" + ex.Message);
+ sw.WriteLine("异常堆栈:" + ex.StackTrace);
+ sw.WriteLine();
+ }
+ MessageBox.Show(string.Format("捕获到未处理异常:{0}\r\n异常信息:{1}\r\n异常堆栈:{2}", ex.GetType(), ex.Message, ex.StackTrace));
+
+ }
}
}
diff --git a/halftoneproject-master/Code/Properties/AssemblyInfo.cs b/halftoneproject-master/Code/Properties/AssemblyInfo.cs
index 18d250b..0568ee6 100644
--- a/halftoneproject-master/Code/Properties/AssemblyInfo.cs
+++ b/halftoneproject-master/Code/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.1.0")]
-[assembly: AssemblyFileVersion("1.2.1.0")]
+[assembly: AssemblyVersion("1.2.3.0")]
+[assembly: AssemblyFileVersion("1.2.3.0")]
diff --git a/halftoneproject-master/Code/UI/FrmGetPosByPic.cs b/halftoneproject-master/Code/UI/FrmGetPosByPic.cs
index c73d386..900e5c9 100644
--- a/halftoneproject-master/Code/UI/FrmGetPosByPic.cs
+++ b/halftoneproject-master/Code/UI/FrmGetPosByPic.cs
@@ -178,8 +178,8 @@ namespace ProductionControl.UI
private void tsbtnDelectPos_Click(object sender, EventArgs e)
{
- this.imageBox1.DelectOntPoint();
- this.pickARoi.RemoveAt(pickARoi.Count - 1);
+ //this.imageBox1.DelectOntPoint();
+ //this.pickARoi.RemoveAt(pickARoi.Count - 1);
}
}
}
diff --git a/halftoneproject-master/Code/UI/HeightDevProp.cs b/halftoneproject-master/Code/UI/HeightDevProp.cs
index d5dfb6d..834aaac 100644
--- a/halftoneproject-master/Code/UI/HeightDevProp.cs
+++ b/halftoneproject-master/Code/UI/HeightDevProp.cs
@@ -23,7 +23,7 @@ namespace ProductionControl.UI
[PropertyOrder(1), Browsable(true), Category("1 设备连接"), DisplayName("IP地址"), Description("IP地址"), ReadOnly(true), JsonIgnore]
public string IP { get;private set; }
- [PropertyOrder(1), Browsable(true), Category("1 设备连接"), DisplayName("端品号"), Description("端品号"), ReadOnly(true), JsonIgnore]
+ [PropertyOrder(1), Browsable(true), Category("1 设备连接"), DisplayName("端口号"), Description("端口号"), ReadOnly(true), JsonIgnore]
public int Port { get; private set; }
//
[PropertyOrder(12), Browsable(true), Category("2 数据"), DisplayName("厚度值(um)"), Description("厚度值(um)"), ReadOnly(true), JsonIgnore]
diff --git a/halftoneproject-master/Code/UI/UIAxisDev.resx b/halftoneproject-master/Code/UI/UIAxisDev.resx
index 39181b1..56f9d43 100644
--- a/halftoneproject-master/Code/UI/UIAxisDev.resx
+++ b/halftoneproject-master/Code/UI/UIAxisDev.resx
@@ -1,385 +1,385 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
-
-
- 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
- Q3Avr38BbOOdOnShK0wAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIgSURBVFhH7Zc/SxxBGMZfCUiEiOAXCFFiI9iZYPBPI2oK
- C4srRMzGnZndeTexEL+BXUiaSD5AEsUEBL+AnWhpFCxSphPrSDASEn1nmNvbyc3d7ewtguADP/ZuZt5n
- n5t9d+8O7uRQB0TJODFTGC6ngSeDxs9DlUonsHgXBF6VAsc145xTAofrTNpn0rjnEJdjaSHDH/QJPoOI
- N/yRnyDE79rnJZ5CFPWYM7RQlIymATh+NKPFxOWb1EvIbTPaQtkAQm6Z0WIScr3mpf0CM9NE2QAMv5jR
- /GK4RDsX6dcc31sB5vEXhMlDPddQ7QRYWemiun+6Vonju9SrShgf0EyHnneqnQBh2E11P4kL/Z7Lt6mX
- hVzV805ZPYCbZjSfkuQBzM791bVKVhNa7Oh5p+wATRY2kL5tTfMK/JDxqtF0Z+0AajufmRk/MRyi2rOM
- Vw2PAArVVCfEN3rAHLWG1nE8hiD4Y+rr8QxQPrczQBCcF6J6V2TxCqBMhHwOjPUWIo4fk8++5em3A9RY
- 7UpgYnl6XoJL6uplEMlTb1j8hPxm0q/lKrezCcvEM8AFXYIXwF8N6IZSx7yo9VE0AkweWp4334QSLU/v
- HRByEYTohyXs08f/UeMu+OtHVE8/cvUjOmeA7I9SG/Wd4IfrIaSRX83ZHFK3jrOoTJoFCIL7tGivvqgk
- FhZ+0y5Pm7M1UKVyjxZPUD+4/3YVReCU7os7WQK4BrJrZbt+as2+AAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF
- Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E
- +3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP
- 8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx
- 3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64
- eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx
- 1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt
- jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6
- Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAP5SURBVFhH7ZfLS1RxFMen9i37G9q2aW2vRVZW6ujMaA/t
- 3Sqj2lRgUdGD1FWbzAiCgt5Fj0UvBKWiBxRBJFTYk7BNRiXp3E+/7+/cO2M4OnNNaFEHjji/e8/3+/ud
- 1+/cxH8pJkEmU52trT0YW1OpA7INYcYnwdKljdTU4DWTiaeRXV1dQwgXT4KVK6cMVFX1sW4dvH0LHz/C
- hw+lqd6VjbMVhrBC2NIlm8m0smABPHoE3d3Q1ATbtpWmelc2snUYwgphS5Ogvn5ab1lZlj174Pt3SKdh
- 8WKoqipN9a7C8OMHwhCWMEP44pKtqblGZSV8+gTt7f4UI2JcTGVz7JhhLFmCMEP4sSWoqytn4UI4ftzi
- qNPIA4VIxlLZOGKfE8JymMIOaQoLzc2TB5PJHlasgJ8/YceOvDvHo7LduRMGB2H5cjy24wjpRoqLUxPz
- 58OdO5ZA+r8QcBxVKJ48gdu3PZ44QrrfJWhsnPqtsrKfLVvs9GvXQjJZGDSOVlfDhg2QzcLmzYhDXCFt
- XrLp9FEqKuDVKzh/HsrLLY5aU06oqSjDdSKp1iMCPdfv2lo1HnO91hYtMgxhXbli2G7ddcn2kNbEGU3v
- ragIaG2FL18glTLC+nro6IBz52DTJti9G06fhpMn4dQpe0frly7ZmouzT7xDh+DsWThyxDDkSW1MJd3S
- gudynEaeSEwaSia7PGl/P7S15U995ow1lP37vSEbN8LVq/DmjW1GTae3F7/xCxfg2TPzyIsXcPgwXL9u
- Kjx5TWtfv/oDek7HnQjS6dneVRcvwvPn9qJcqz6wd6+t6bSrV8O8ebB9uyXpjBlw86aV2KxZMHcuPH1q
- G7t7F59LJ07A/ft2mCicL18al+MMUqk5Cf0puAEZqBxFLJKeHnsmAnll5kwLza1btgGdXDF2ieY38vCh
- xX39egvVaBsYNQSKpbrggwdw4wZcvmxluWuXeUCbUcwfP4auLnO/Qibbe/fsmZLPbsTRQ+DzIEpCkUdJ
- KFXyKMnkdmW41pYtg1Wr7ER6LgJ5ZevWfNeU15R8USlG1aEkdPnyWxJGkivD16/zZSgjEci9Ao5CI8AI
- XL9VnsN7xvDnwojKUNiOY0QZSnKNSCdR61yzZmIbURD4xBy1EUlyrbizc+JbsTDHasWS3GXU0GBemIjL
- qLkZhoZ8RRW9jCT+OtauVcPv3uUTqxDBWCobVZLGM2E5zKLXcSR+IFFi9fX92UCiNv75s0/SkgcSicYn
- P5Lt22djlU4jT2hTpWgUtoEBhBF7JJP4oVQtVAmkRhN3KJWNbHX7xR1KJbmxXCX0/n38sVw2znbcY7kk
- 92EyvLGUqrKxNjy+D5NI/uqn2T8gicQvLhCMCTT1/YYAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHZSURBVFhHxZZRTsMwDIZ3D0DiKLyPreIGHGU3GVskOAZH
- AF54QuIg7TryJXYW2rTL1rX7JatNasd/7D/ZZkOw3Oxe5XV6kHxpqk8ZTguSF2a3vwoBTY49mvKH53xb
- /mJLs1sXpnwQ13FQvNV3ham+SLww5XexrZ5J7JN7YpCxz5WEXB5Ppr6l/M0WFOv9PRVYbKr3QMTOyefL
- AhKLbfUhwxaojLZmtGrMX+obeU2C3VMNR8ISkulpAQn04SsxskC7AAlth0xNDy9Qd0rGOx3HoK2Q4X8g
- ktGOjCBUISXIzg8JICbdjTvzJ5DHH5Ohh1sAAhmLBN+GOSI58VYDrTb09iZCKGG3HRUY1XO+MVkItMqS
- AAmiZEkT104EAvGdcHUCSWEk0NV/taw2plpgJ9rCSIAg/OKkDTuugZTglZUMe0GSFImcCgLajb8MPYK6
- LTuZ6oX4r0jqFsyMA5AnRoYH5OpgCEL/U4QPAhvvJ5MNtsofA4ccMZ6D3t0rglOGmk+BaixrcyQXlV+E
- BMm19NntJbkPGEbirORAjxmBbgE7lk/Z0HhfzTOFTSALYP4C6V9IiUsLsy+nXjQX5cnCcqOxyxXvh1IP
- 3HUXPBH/T4hkMSEl5Qid1K7Z7A9DvptolGL+2gAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAARwSURBVFhH1ZZtTFNXGMePwLrpmG9b5ggGppHgHNlMutmN
- sLiwbJqxl8TEDy5ZFgMKdPUFcVCBUqDQuRk/zqHTsJdoGJhsRRyI1IuWQq/0ZUBnYQ1IkMiodFgKHUXa
- Z+fCsXh77y0v6gf/zf/D7T3n+Z2X5znnoidaSuOmmBLTRjF5fLw63vLWUrVJ8onKJK5QGjY5SowJUGx8
- BYra4kB5fT0UXo8FBb1Wq2iNkucb1qwj3R5eVVU7w8vMiZlKwxZHqUkMKtNm4IMX0mtBYYiCAsOLkN/6
- POQ1rzgrb1m+gYRZnEraE+PxrLvKzBJYELxlFRxpWQ5SKtKbq1smJ+EWJrUpabuaftO9WLhcHwny5mWQ
- 27wUcnSiCqUViUjouVVmTtqqphK9jwb+NHx1TQTZVEQlCR9aqj/fWae2bHHMBT9ukcD3ndvgpPVD+K4j
- OST88NWnsCPgUFNYPsEIS21JbBKCM/79Zg4Mjt8Af9Bv/J4TDP+cgaNt8bzw7KZwOESFwQEKbSYorkot
- b6cIwY/hGd8aM2HUVEh7fW441/U5LzzryhI4qF3SQHBclZolRj74N+Y3wDnRCz6YnLcru3bzweFAIwLZ
- JZRMkLP62iQRC+25baQOz+0/jm972qHPrQfP1DDnndfvgmNtr3Hg+y9P+2eCnZXKKJbzwX/s2gX3YJxl
- u0sL35oSWAmn6c0Cj8/Jatd+p5oPDtIG5CTYWamMr2uC4Uy2m4fP4QUdDbh/zAAFuOT4sr2yezer7YR/
- BPKurWbB9zVMbwFj9nFdQifYg+FMnQ9P2mECRgIut34QstR6RptY7U93fMqBf1k/7fcJekbFxrjBYHgR
- HYN3czjgMf8grvUVgnAm4Rr7Vaw+1d1SDlxahyDjIvqMoGekNMQ5HoQzJ5ySjgYPDAXs9g/AEf1zIev8
- cn8xq091dwYHnvkHzwDy6Vj7g/D7x+vQZAdOp9sBn+h8VxDOJNzfo/Ws9qfaP+LAMy8i2FuLthP0jBR0
- rIbvbDfcKQc33Aq4Z6wR5LpneeG/2Hax2rr8fZBzZSUHjmcPaZqgJFTQ0XK+i6Xc+h7O5z6WO+9WQSn9
- cgCOLxr4rWcfjPjsrHa04wdeeLqGpwwxXCx0qxmdZ8AFvRzf9FBgG62Bf33dnHfMf0rdei68Fi//BVRB
- sGzl6VcZ+W61IsNLGKaFu2Cft0+1f8wLT7+AYE8N2kqQbOXpV6YIXalFrVFgdf2KK7s7pIemLHDCsk0Q
- nlaD6giOX3JdpDZUnf9k2wE3Rs9jmI3lAa8eLvUXQi71giB8bw2aSqsNcR0zytU9E5PdLHKEKjXmbC/Q
- rYGj9KvTLmvdyFtqQXDG8/s+xINIklIirxCc72yfC47L7iwJPz9lXw1PPkxFOB8FHCddxc6qBXyU3lcW
- hTYcpML+Wiw8tQZ59miQjIRbnPDIw/c3olRZPRpYCBzP+jSefQwJ8/BS4iWUNaAU7JMYbg+Gf1GL3Om4
- xDBchh1Nuj1epdaj1Rl1KJ48PolC6H+BVsJLPWxk5wAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHISURBVFhH7dfJLwNhGAbwsYRGJEgkEomDxMFB4uDgIHGQ
- OEiE/4Gq2ndKUbuq/8W+L0XVrmhPEomDg4NLSSNE8DB0api387VNfRfe5LnMHH7PN8uXfML//ByLq8Rk
- cRVjzFkEs7MQ5rMCjJ7mY+Q0D8MnuRhy5GDQkY2B4yz0H2Wi7ygDpsN09B6koecgFd37KTDuJaNrLwmd
- uwkw7MTDYI9Dh12DdluMycvQM+4qxa/h27Fos8WgdSsaXu77/OrKZXjLZhSarZHKJ8EN34hE03u87Nfw
- xButEcoCPPHGdaoAR7xhTVAW4InXrxIFeOJ1K0SBcOLiqOG1y0SBcOGvePmIGl6zRBQIB/6CJ1/U8OpF
- ogALf8aDX7xn5/O+PGp41QJRgLXyJ3g+8hNvt2l89+RRw/XzRAHWY3+E2xc5Lr8uhYXr54gCrHf+gJtv
- MdoTFdfEBIJXzhIFWB/cPa6ZCRTXUQXUcOmde3DlN8HguhmiAAuXfrU7XCoSLF4xTRQIBJe211tc+BIK
- rqUKBIpLO5wb5yHj2imiQDA4a5Nh4eWTRAGeOF2AI04W4ImTBcRDAy+8bEKgDyg8cDFejh7x0MB95X94
- BOENt7Qt5r1VNxkAAAAASUVORK5CYII=
-
-
-
-
- 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
- AAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMxSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
- afGmhyr4D3gQRKHW7r7ddDFt1IoXQehJ9CCiUMGrHrQXEb1YBEGKepEqhVo/2pKmyc7zvc28Nmk3u2kT
- CkJ/MGTzezPzfjtvdjYJFEIx6AmJ2C+VvuzXBi07XsokLftZIdmPig4HMLRySBp0ySTzQyGUlmsygV4M
- rwyyCVGpN/MdEz9QiD2g6PagTOxUKWPrSamPhjFFZWAbvsjfkZ1Can2hnBm3uYCQCXGkXNGchLaIYd9q
- tWAXUiuwP0XbmxLQyXy64kmIWxbdhEulgaVnFaAHkXKFatgjjq9pP0PKQcyC2ohpD6ha9lPIyOcKcWPX
- vGHZ2lDspsdxCQESgcNIuYId1XPh22jARc61WPS0ZCz2z+Lmhd+5qVdmZyIJuOwkWg7h5CdATeTeLCa9
- OvcnbNjD4o79jFXX+WTVGDl5B7ZiyjyEk5+AkJF7L3xXa1yoqEzYoKMBi27GtOULaCC5MeFbqbF+utch
- RAjS9whYkxUmKcfqjPS0SnLvQlrutaTnPoSMmVmxprLjcBILwksAP7fVTEqW/FWTBd3xG3QPpnDQlIL6
- 5n44Fzbtx+EEPe+QIshLgGTR7YqemSzcxM1qjan5RpG4XIjgSgUEL0xmogNwHEPKh0jgcwTBsLl0fq7G
- JiqbgO7PeoDW4MVKiAReAjpu0327L/1K+z33fD02CEcxLA82jmXWiGyQ3UWmGCLYS0CA0hrWzWNioHgZ
- f1o67tNtGBkIWnQn5/lTgFQxRKCnAIZoEqJqwn4qG9kvkjGxIOLcrDFhD2KYI4D3B68CUsUQQX4CBPgb
- LmbRMH/rRUzoYeP1Ia+Oasz9XZp29hN0r76AUmi/DnvbEnCsxYKzrSkIIr1+AkphQ8CGgP9HgNwHh5Cq
- Kup7YEctmZr3EDAOXIDfz/K1gg2tLRKZWJC03FukisHm+6hTBR0IUlWFpENnPr/9CKliSBo9EtTSP9Fp
- WNbBZNZfsRFIsDfgkETob56b///ELVeCNeCpOpKedkRU2Xj5mZBruFVpsCPoriML39ySrNWcu9ephlss
- QyDwD5znNAxEqPI/AAAAAElFTkSuQmCC
-
-
-
-
- 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
-
-
-
- 332, 17
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ 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
+ h+BeXv8CTiWdOACz1MoAAAAASUVORK5CYII=
+
+
+
+
+ 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
+ BOENt7Qt5r1VNxkAAAAASUVORK5CYII=
+
+
+
+
+ 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
+ AAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMxSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
+ afGmhyL4D3gQRKHW7r7ddDFt1IoXQehJ9CCiUMGrHrQXEb1YBMGKepEqhVo/2pKmyc7zvc28Nmk3u2kT
+ CkJ/MGTzezPzfjtvdjYJFEIx6AmJ2C+UvuzXBi37qZRJWvazQrIfFB0OYGjlkDTokknmh0IoLddkAr0Y
+ XhlkE6JSb+Y7Jr6vEHtA0e1BmdipUsbWk1IfDWOKysA2fJ6/IzuF1PpC6R63uYCQCXGkXNGchLaIYd9s
+ tWAXUiuwP0XbmxLQyXy64kmIWxbdhEulgaVnFaAHkXKFatgjjq9pP0XKQcyC2ohpD6ha9mPIyOcKcWPX
+ vGHZ2lDshsdxCQESgcNIuYId1TPh22jABc61WPS0ZCz2z+Lmhd+5qZdnZyIJuOQkWg7h5CdATeReLya9
+ MvcnbNjD4o79jFXX+WTVGDl5G7ZiyjyEk5+AkJF7J3xXa1yoqEzYoKMBi27GtOULaCC5MeFbqbF+utsh
+ RAjS9whYkxUmKcfqjPS0SnJvQ1rulaTn3oeMmVmxprLjcBILwksAP7fVTEqW/GWTBd3x63QPpnDQlIL6
+ 5n44GzbtR+EEPeeQIshLgGTR7YqemSzcxM1qjan5RpG4XIjgSgUEz09mogNwHEPKh0jgcwTBsLl0fq7G
+ JiqbgO7PeoDW4MVKiAReAjpu0X27L/5K+z33fD02CEcxLA82jmXWiGyQ3UGmGCLYS0CA0hrWzWNioHgZ
+ f1o67tFtGBkIWnQn5/lTgFQxRKCnAIZoEqJqwn4iG9kvkjGxIOLcrDFhD2KYI4D3B68CUsUQQX4CBPgb
+ LmbRMH/rRUzoYeP1Aa+Oasz9XZp29mN0r76AUmi/BnvbEnCsxYIzrSkIIr1+AkphQ8CGgP9HgNwHh5Cq
+ Kup7YEctmZr3EDAOXIDfz/K1gg2tLRKZWJC03BukisHm+6hTBR0IUlWFpENnPr/9EKliSBo9EtTSP9Fp
+ WNbBZNZfsRFIsDfgkETob56b///ELVeCNeCpOpKedkRU2Xj5mZCruFVpsCPoriML39ySrNWcu9ephlss
+ QyDwD2y3NAccDi03AAAAAElFTkSuQmCC
+
+
+
+
+ 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
+
+
+
+ 332, 17
+
\ No newline at end of file
diff --git a/halftoneproject-master/Code/UI/UILightDev.cs b/halftoneproject-master/Code/UI/UILightDev.cs
index d59d39a..29e98f7 100644
--- a/halftoneproject-master/Code/UI/UILightDev.cs
+++ b/halftoneproject-master/Code/UI/UILightDev.cs
@@ -168,7 +168,7 @@ namespace ProductionControl.UI
switch (propertyName)
{
case "ChannelIndex":
- if((int)newValue <1 || (int)newValue >4)
+ if((int)newValue <1 || (int)newValue >6)
{
prop.ChannelIndex = (int)oldValue;
this.refreshUI();
diff --git a/halftoneproject-master/HalftoneWeb/src/pages/reportRecordSN.vue b/halftoneproject-master/HalftoneWeb/src/pages/reportRecordSN.vue
index b158f7d..5725521 100644
--- a/halftoneproject-master/HalftoneWeb/src/pages/reportRecordSN.vue
+++ b/halftoneproject-master/HalftoneWeb/src/pages/reportRecordSN.vue
@@ -145,7 +145,7 @@
{{ formatQualified(scope.row) }}
@@ -154,7 +154,7 @@
{{formatRepairfied(scope.row)}}
@@ -774,7 +774,7 @@ const openHistoryView=(id)=>{
const reCheckQualified=(pInfo,orderRow)=> {
let upperLimit, lowerLimit
console.log('reCheckQualified start...')
- orderRow.Qualified=(orderRow.CompareResult!==2)
+ orderRow.Qualified&=(orderRow.CompareResult!==2)
//Tension 1-5
upperLimit = pInfo.TensionBaseValue + pInfo.TensionUpFloatValue
lowerLimit = pInfo.TensionBaseValue - pInfo.TensionDownFloatValue
diff --git a/halftoneproject-master/Models/Product.cs b/halftoneproject-master/Models/Product.cs
index de89e7c..d683440 100644
--- a/halftoneproject-master/Models/Product.cs
+++ b/halftoneproject-master/Models/Product.cs
@@ -114,6 +114,10 @@ namespace Models
//抓取点位
[SugarColumn(IsNullable = true)]
public string GetPointList { get; set; }
+
+ //2023-12-18 加入mark干扰判断,是否主栅
+ public int MarkDisturb { get; set; }
+ public int MainGrid { get; set; }
}
///
/// 结束的批次才加入
diff --git a/更新日志.txt b/更新日志.txt
new file mode 100644
index 0000000..4384852
--- /dev/null
+++ b/更新日志.txt
@@ -0,0 +1,27 @@
+V1.2.0:
+ 1.料号开始之前选择
+ 2.加入图像选点功能,加入14个点位
+ 3.加入产品修复异常
+ 4.mark识别失败报警暂停
+ 5.自动删除图片更新为1天以内
+V1.2.1:
+ 1.更新无法重新创建产品bug
+ 2.移动自选点位的功能位置
+ 3.加入mark点选择配置
+ 4.优化日志
+V1.2.2:
+ 1.光源通道现在限制4,后期改为6
+ 2.未选择料号防呆
+ 3.修复图纸比对中的图像浅拷贝,造成图像被覆盖问题。
+ 4.加入未知错误记录
+ 5.克隆产品之后运行出现显示log日志报错,屏蔽克隆产品功能
+ 6.修复无法删除文件夹图片问题
+ 7.加入主栅
+ 8.加入缺陷大图保存位置,硬盘检测
+ 9.加入X轴补偿
+ 10.修复图片自动删除bug
+ 11.加入同SN删除修复台重复图片
+V1.2.3:
+ 1.修复开启比对,但比对失败当成无比对bug
+ 2.修复查询显示的时候没有使用缺陷结果,显示结果ok等bug
+ 3.更新上传图纸Mark点选项
\ No newline at end of file