版本-v1.2.2 & v1.2.3

This commit is contained in:
CPL 2023-12-29 09:25:06 +08:00
parent e6bd2d06ce
commit 2d8f0488c8
27 changed files with 1509 additions and 1195 deletions

Binary file not shown.

View File

@ -61,6 +61,7 @@ namespace AssistClient
{ {
try try
{ {
//WarningEvent( WarningEnum.Normal, "启动1");
devAxis = new AxisDev(); devAxis = new AxisDev();
devAxis.WarningEvent = WarningEvent; devAxis.WarningEvent = WarningEvent;
devAxis.axisPosEvent = axisPosEvent;//位置POS devAxis.axisPosEvent = axisPosEvent;//位置POS
@ -77,11 +78,14 @@ namespace AssistClient
devLight = new LightDev(); devLight = new LightDev();
devLight.WarningEvent = WarningEvent; devLight.WarningEvent = WarningEvent;
devScannerCC = new ScannerDev(ScannerDev.ScannerType.CC); devScannerCC = new ScannerDev(ScannerDev.ScannerType.CC);
devScannerCC.WarningEvent = WarningEvent; devScannerCC.WarningEvent = WarningEvent;
//WarningEvent(WarningEnum.Normal, "启动2");
libSize = new SizeLib(); libSize = new SizeLib();
//WarningEvent(WarningEnum.Normal, "启动2.5");
libSize.WarningEvent = WarningEvent; libSize.WarningEvent = WarningEvent;
libFor = new ForLib(); libFor = new ForLib();
libIF = new IFLib(); libIF = new IFLib();
//WarningEvent(WarningEnum.Normal, "启动3");
//启动 //启动
if (!devAxis.start(Config.Axis_PulseOutMode)) throw new Exception("运动板卡初始化失败!"); if (!devAxis.start(Config.Axis_PulseOutMode)) throw new Exception("运动板卡初始化失败!");
//if (!devCodeScanner.start()) 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.open()) throw new Exception("相机初始化失败!");
if (!Config.SkipScannerCC && !devScannerCC.start(this.preView2, Config.SizeBmp_Path)) 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("尺寸库初始化失败!"); if (!libSize.start(Config.SizeEnginePath)) throw new Exception("尺寸库初始化失败!");
//WarningEvent(WarningEnum.Normal, "启动5");
// //
state = true; state = true;
StateChange?.Invoke(true, "成功"); StateChange?.Invoke(true, "成功");

View File

@ -106,7 +106,8 @@ namespace AssistClient
} }
private void FrmMain_Load(object sender, EventArgs e) 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) private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{ {
@ -200,9 +201,10 @@ namespace AssistClient
this.pictureBox1.Image = bmp;//del this.pictureBox1.Image = bmp;//del
pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel); //2023-12-22 之前工程师写的存在bug屏蔽
pictureBox1.MouseMove += pictureBox1_MouseMove; //pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
pictureBox1.MouseDown += pictureBox1_MouseDown; //pictureBox1.MouseMove += pictureBox1_MouseMove;
//pictureBox1.MouseDown += pictureBox1_MouseDown;
this.ActiveControl = this.pictureBox1; // 设置焦点 this.ActiveControl = this.pictureBox1; // 设置焦点
pic_size = this.pnlPic.ClientSize; pic_size = this.pnlPic.ClientSize;
@ -243,8 +245,8 @@ namespace AssistClient
private void changePictureBoxSize(Point location, double ratio) private void changePictureBoxSize(Point location, double ratio)
{ {
var picSize = pictureBox1.Size; var picSize = pictureBox1.Size;
picSize.Width = Convert.ToInt32(pic_size.Width * ratio); picSize.Width = Convert.ToInt32(picSize.Width * ratio);
picSize.Height = Convert.ToInt32(pic_size.Height * ratio); picSize.Height = Convert.ToInt32(picSize.Height * ratio);
pictureBox1.Size = picSize; pictureBox1.Size = picSize;
if (location.X > 0) location.X = 0; if (location.X > 0) location.X = 0;
@ -1844,6 +1846,7 @@ namespace AssistClient
if (level == WarningEnum.High) if (level == WarningEnum.High)
warning(level, true); warning(level, true);
}; };
AddTextEvent("设备启动", "启动");
devContainer.start(IntPtr.Zero, IntPtr.Zero); devContainer.start(IntPtr.Zero, IntPtr.Zero);
} }
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

View File

@ -6,6 +6,7 @@ using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using ProductionControl.Utils; using ProductionControl.Utils;
@ -27,6 +28,9 @@ namespace ProductionControl
public static bool OpenMarkErrorStop; public static bool OpenMarkErrorStop;
//启用缺陷分布功能 //启用缺陷分布功能
public static bool OpenFlawDistribution; public static bool OpenFlawDistribution;
//启用X轴校准 2023-12-20
public static bool OpenAxisXCalibration;
//DEV //DEV
public static int[] Axis_PulseOutMode=new int[4]; public static int[] Axis_PulseOutMode=new int[4];
public static int[] Axis_MM2PulseNum = new int[4] { 5000, 5000, 5000, 1000};//1mm对应脉冲数 public static int[] Axis_MM2PulseNum = new int[4] { 5000, 5000, 5000, 1000};//1mm对应脉冲数
@ -106,19 +110,19 @@ namespace ProductionControl
// //
if (Defect_SavePath_AutoClear >= 0) 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) 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) 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) 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) 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) 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"; OpenMarkErrorStop = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1";
OpenFlawDistribution = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1"; OpenFlawDistribution = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1";
OpenAxisXCalibration = Util.ReadIniValue(configPath, "SKIP", "OpenAxisXCalibration") == "1";
//DEV //DEV
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode"); lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[0] = Convert.ToInt32(lsTmp); if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[0] = Convert.ToInt32(lsTmp);
@ -343,32 +348,62 @@ namespace ProductionControl
/// <param name="dirPath"></param> /// <param name="dirPath"></param>
/// <param name="days"></param> /// <param name="days"></param>
/// <param name="delDir">把日期文件夹也按days进行删除格式:yyyyMMdd</param> /// <param name="delDir">把日期文件夹也按days进行删除格式:yyyyMMdd</param>
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); DateTime delDate = DateTime.Now.AddDays(-days);
API.OutputDebugString($"清除{delDate.ToString("yyyyMMdd")}前记录:{dirPath}。"); API.OutputDebugString($"清除{delDate.ToString("yyyyMMdd")}前记录:{dirPath}。");
string[] file_list = Directory.GetFiles(dirPath);
if(days>0) //删除dirPath中的过期文件
file_list = file_list.Select(file => new FileInfo(file)) string[] files_list = Directory.GetFiles(dirPath);
.Where(f=>f.CreationTime<= delDate) if (days > 0)
files_list = files_list.Select(file => new FileInfo(file))
.Where(f => f.CreationTime <= delDate)
.Select(x => x.FullName) .Select(x => x.FullName)
.ToArray(); .ToArray();
foreach (string file in file_list) foreach (string file in files_list)
{ {
try { try
{
API.OutputDebugString($"清除文件:{file}..."); API.OutputDebugString($"清除文件:{file}...");
File.Delete(file); File.Delete(file);
} catch(Exception ex) { }
catch (Exception ex)
{
API.OutputDebugString($"Ex1:{ex.Message}"); 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) 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 floderName;
string[] dirList = Directory.GetDirectories(dirPath,"20*"); string[] dirList = Directory.GetDirectories(dirPath,"20*");
foreach (string dir in dirList) 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;
}
} }
} }

View File

@ -176,6 +176,9 @@ namespace ProductionControl
Y轴复位输出 = 40, Y轴复位输出 = 40,
Y轴复位完成输入 = 41, Y轴复位完成输入 = 41,
X1轴复位输出 = 50,
X2轴复位输出 = 51,
} }
//--- //---

View File

@ -159,7 +159,7 @@
this.Name = "FrmLogin"; this.Name = "FrmLogin";
this.ShowIcon = false; this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 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.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmLogin_FormClosed);
this.Load += new System.EventHandler(this.FrmLogin_Load); this.Load += new System.EventHandler(this.FrmLogin_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();

View File

@ -1552,7 +1552,7 @@
this.splitContainer2.Panel2.Controls.Add(this.gboxDefectList); this.splitContainer2.Panel2.Controls.Add(this.gboxDefectList);
this.splitContainer2.Panel2MinSize = 400; this.splitContainer2.Panel2MinSize = 400;
this.splitContainer2.Size = new System.Drawing.Size(463, 523); this.splitContainer2.Size = new System.Drawing.Size(463, 523);
this.splitContainer2.SplitterDistance = 26; this.splitContainer2.SplitterDistance = 28;
this.splitContainer2.SplitterWidth = 3; this.splitContainer2.SplitterWidth = 3;
this.splitContainer2.TabIndex = 10; this.splitContainer2.TabIndex = 10;
// //
@ -1572,7 +1572,7 @@
// splitContainer3.Panel2 // splitContainer3.Panel2
// //
this.splitContainer3.Panel2.Controls.Add(this.picScanner2); 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.SplitterDistance = 226;
this.splitContainer3.SplitterWidth = 3; this.splitContainer3.SplitterWidth = 3;
this.splitContainer3.TabIndex = 11; this.splitContainer3.TabIndex = 11;
@ -1586,7 +1586,7 @@
this.picScanner1.Location = new System.Drawing.Point(0, 0); this.picScanner1.Location = new System.Drawing.Point(0, 0);
this.picScanner1.Margin = new System.Windows.Forms.Padding(2); this.picScanner1.Margin = new System.Windows.Forms.Padding(2);
this.picScanner1.Name = "picScanner1"; 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.TabIndex = 7;
this.picScanner1.TabStop = false; this.picScanner1.TabStop = false;
// //
@ -1598,7 +1598,7 @@
this.picScanner2.Location = new System.Drawing.Point(0, 0); this.picScanner2.Location = new System.Drawing.Point(0, 0);
this.picScanner2.Margin = new System.Windows.Forms.Padding(2); this.picScanner2.Margin = new System.Windows.Forms.Padding(2);
this.picScanner2.Name = "picScanner2"; 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.TabIndex = 9;
this.picScanner2.TabStop = false; this.picScanner2.TabStop = false;
// //
@ -1612,7 +1612,7 @@
this.gboxDefectList.Margin = new System.Windows.Forms.Padding(2); this.gboxDefectList.Margin = new System.Windows.Forms.Padding(2);
this.gboxDefectList.Name = "gboxDefectList"; this.gboxDefectList.Name = "gboxDefectList";
this.gboxDefectList.Padding = new System.Windows.Forms.Padding(2); 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.TabIndex = 3;
this.gboxDefectList.TabStop = false; this.gboxDefectList.TabStop = false;
this.gboxDefectList.Tag = "0"; this.gboxDefectList.Tag = "0";
@ -1624,7 +1624,7 @@
this.lblDefectAddTag.AutoSize = true; this.lblDefectAddTag.AutoSize = true;
this.lblDefectAddTag.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 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.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.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblDefectAddTag.Name = "lblDefectAddTag"; this.lblDefectAddTag.Name = "lblDefectAddTag";
this.lblDefectAddTag.Size = new System.Drawing.Size(0, 12); this.lblDefectAddTag.Size = new System.Drawing.Size(0, 12);
@ -1639,7 +1639,7 @@
this.pnlBmpList.Location = new System.Drawing.Point(2, 16); this.pnlBmpList.Location = new System.Drawing.Point(2, 16);
this.pnlBmpList.Margin = new System.Windows.Forms.Padding(2); this.pnlBmpList.Margin = new System.Windows.Forms.Padding(2);
this.pnlBmpList.Name = "pnlBmpList"; 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; this.pnlBmpList.TabIndex = 0;
// //
// chkBuzzer // chkBuzzer
@ -1727,7 +1727,7 @@
this.Margin = new System.Windows.Forms.Padding(2); this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "FrmMain"; this.Name = "FrmMain";
this.ShowIcon = false; this.ShowIcon = false;
this.Text = "自动化视觉检测系统 - v1.2.1"; this.Text = "自动化视觉检测系统 - v1.2.3";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized; this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMian_FormClosing); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmMian_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmMian_FormClosed); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmMian_FormClosed);

View File

@ -152,6 +152,9 @@ namespace ProductionControl
webService.LogEvent = null; webService.LogEvent = null;
}; };
webService.start(); webService.start();
//读取硬盘剩余空间
Config.CheckDisk();
} }
private void loadProductCodeList() private void loadProductCodeList()
{ {
@ -188,6 +191,49 @@ namespace ProductionControl
// runStep(); // runStep();
//} //}
} }
/// <summary>
/// 删除修复台重复sn图片
/// </summary>
private void DeleteRepairImage(string sn)
{
List<string> imagePath = new List<string>
{
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<string> { 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);
}
}
}
//});
}
//后台线程运行 //后台线程运行
/// <summary> /// <summary>
/// 中断工序运行 /// 中断工序运行
@ -212,6 +258,12 @@ namespace ProductionControl
AddTextEvent("扫码枪", "扫码枪初始化失败!"); AddTextEvent("扫码枪", "扫码枪初始化失败!");
return; return;
} }
//2023-12-06 无输入料号防呆
if(string.IsNullOrEmpty(this.txtProductCode.Text))
{
AddTextEvent("料号", "未选择料号!");
return;
}
//2023-10-20 不使用扫码枪事件处理 //2023-10-20 不使用扫码枪事件处理
//devContainer.devCodeScanner.ScanerEvent = (code) => //devContainer.devCodeScanner.ScanerEvent = (code) =>
string code = this.txtProductCode.Text; string code = this.txtProductCode.Text;
@ -265,6 +317,10 @@ namespace ProductionControl
devContainer.devCodeScanner.stop(); devContainer.devCodeScanner.stop();
devContainer.devCodeScanner = null; devContainer.devCodeScanner = null;
errStep = 5; errStep = 5;
//删除重复sn用于修复台的图片
AddTextEvent("扫码枪", $"删除{sn}重复用于修复台的图片...");
DeleteRepairImage(sn);
//判断SN数量是否达到批次上限 //判断SN数量是否达到批次上限
//创建表达式 //创建表达式
if (!string.IsNullOrWhiteSpace(model.BatchId) && model.TargetCount > 0) if (!string.IsNullOrWhiteSpace(model.BatchId) && model.TargetCount > 0)
@ -788,10 +844,10 @@ namespace ProductionControl
{ {
AddTextEvent($"{stepIndex + 1}-{processName}", $"相机采集照片完成。"); AddTextEvent($"{stepIndex + 1}-{processName}", $"相机采集照片完成。");
//----缺陷队列 //----缺陷队列
bool cloneUse = false; //bool cloneUse = false;
if (AIEngineLib == AIEngineLibEnum. || AIEngineLib == AIEngineLibEnum.) if (AIEngineLib == AIEngineLibEnum. || AIEngineLib == AIEngineLibEnum.)
{ {
cloneUse = true; //cloneUse = true;
var mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(bmpout); var mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(bmpout);
scannerGBmpQueue.Enqueue(new scannerGBmpLoc(mat, scannerGBmpQueue.Enqueue(new scannerGBmpLoc(mat,
devContainer.devAxis.getActualPos_mm(1), devContainer.devAxis.getActualPos_mm(1),
@ -800,8 +856,13 @@ namespace ProductionControl
} }
if (AIEngineLib == AIEngineLibEnum. || AIEngineLib == AIEngineLibEnum.) 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( scannerCBmpQueue.Enqueue(new scannerCBmpLoc(
cloneUse?(Bitmap)bmpout.Clone(): bmpout, (Bitmap)bmpout.Clone(),
devContainer.devAxis.getActualPos_mm(1), devContainer.devAxis.getActualPos_mm(1),
devContainer.devAxis.getActualPos_mm(2)));//Dequeue devContainer.devAxis.getActualPos_mm(2)));//Dequeue
AddTextEvent($"{stepIndex + 1}-{processName}", $"添加尺寸图像队列X:{devContainer.devAxis.getActualPos_mm(1)},y:{devContainer.devAxis.getActualPos_mm(2)},数量: {scannerCBmpQueue.Count}"); 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, processName = processName,
sizeTag = sizeTag, sizeTag = sizeTag,
engineName = processParam.Value<string>("EngineName"), engineName = processParam.Value<string>("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, file_path = bmpCBmpQueue.Path,
drawingPagePath = gbxBmpPath, drawingPagePath = gbxBmpPath,
posX= bmpCBmpQueue.PosX, posX= bmpCBmpQueue.PosX,
@ -1056,6 +1117,10 @@ namespace ProductionControl
} }
else else
{ {
//2023-12-29 加入比对失败当作NG处理
order.CompareResult = 2;
updateCompareResult(false);//更新比对看板
//warning(WarningEnum.Low);//暂停 //warning(WarningEnum.Low);//暂停
setDgvContentCol(liStatocStepIndex, $"index:{res.index},图像比对失败!"); setDgvContentCol(liStatocStepIndex, $"index:{res.index},图像比对失败!");
AddTextEvent($"{res.stepIndex + 1}-{res.processName}", $"图像比对失败index:{res.index}-{compBmpIndex}.", WarningEnum.Low); AddTextEvent($"{res.stepIndex + 1}-{res.processName}", $"图像比对失败index:{res.index}-{compBmpIndex}.", WarningEnum.Low);
@ -2283,10 +2348,17 @@ namespace ProductionControl
e.DrawBackground(); e.DrawBackground();
if (e.Index < 0) return; if (e.Index < 0) return;
string str = lstLog.Items[e.Index].ToString(); try
e.Graphics.DrawString(str.Substring(1), e.Font, {
new SolidBrush(str[0] == 'R' ? Color.Red : (str[0] == 'Y' ? Color.Orange : Color.Black)), string str = lstLog.Items[e.Index].ToString();
e.Bounds); 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) private void writeLog(DateTime now, WarningEnum level, string text)
{ {
@ -2708,7 +2780,14 @@ namespace ProductionControl
// //
if (devContainer.devAxis.isError()) 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 //goto InitPT

View File

@ -643,20 +643,20 @@
<value> <value>
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
</value> </value>
</data> </data>
<data name="tsbtnDefectImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnDefectImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -665,11 +665,11 @@
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG9SURBVFhHYxgS4F+GuvqvFGVjKJf24KW9KM+nEJnk3+kq YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG9SURBVFhHYxgS4F+GuvqvFGVjKJf24KW9KM+nEJnk3+kq
x/7nqf//l632H+iA/1+i5f6/DpC89MJVpOiRhQwnVDl1wbH6wmUPAjT/fwyV+Q90wH90B7wLkPr/wlX0 x/7nqf//l632H+iA/1+i5f6/DpC89MJVpOiRhQwnVDl1wbH6wmUPAjT/fwyV+Q90wH90B7wLkPr/wlX0
/0MbgRv3THjVodqoBx6Y8f1/7iRC0AFPbAT/3zfl+nzflCcQqhUveOkm2gtl4gekOOChOf9/kPpHFgIz /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 hf80d8AzB+H/rz3F/38Ilv7/LU4BrPdfrhoYjzpg1AGjDhh1wNB3wM9s1ee/UhSv0s0BT92k/l8uDfkP
LM89/tdrsUGlGP6HarG9CZAxA7YHJgMd8JMmDrgU7/Z/44o1/+es34NXwxMrfoOH5tz3qO6A9QdO/1+x LM89/tdrsUGlGP6HarG9CZAxA7YHJgMd8JMmDrgU7/Z/44o1/+es34NXwxMrfoOH5tz3qO6A9QdO/1+x
8yhBB4DAXWNB/vumvDMJOeBLrDyopoyFasMPSHEADDyyEPR4Ziv8BN0BH5LVvv3NUZ32PUZOEaqUMCDH 8yhBB4DAXWNB/vumvDMJOeBLrDyopoyFasMPSHEADDyyEPR4Ziv8BN0BH5LVvv3NUZ32PUZOEaqUMCDH
ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAIoH3zw7A9x2 ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAHCV3zql/rK2
AAAAAElFTkSuQmCC AAAAAElFTkSuQmCC
</value> </value>
</data> </data>
@ -677,61 +677,61 @@
<value> <value>
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
TkSuQmCC TkSuQmCC
</value> </value>
</data> </data>
<data name="tsbtnSizeImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnSizeImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMBxpyAIWpuCIGiN7NOlwQaLDB1s YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMBxpyAIWpuCIGiN7EuXBhssMmyw
CKxBCw00bJCowWppagoCoTlqyIiCyLSE8uQs64qzD+uyzMPQPE/MQLCeNN6GCk4sDYz7T3fvvc/Lbzi4 IbAGLTSwqEEiB6ulqSkIguaoISUKIjszKE/Osq44yw8u0zzsSz2xAuHqyeJtqODE0qC4/3T33vu8/IaD
E5REwZF43Z2WFaLb4ke2kxUXfbSKUocxejgBIV0S7jVxuOp/gCOZ73RfTIxirVg52l7Y1k34ItZLQgYA O9GfKDqcqgnrWTG6LX5UC1Xm62E0tPYGZwbTEDM8wKUuBcHeKzhUBk72ZOQo3oyXou2Fbc1MLOLdFGQB
fnUUvgIIGQVO8QlYW1wXm437dWiscFmbMXB3nuUE2Ntw2GjCErZWXI5GOTuU+mbRJXf5ALJ7d0RuwDoI ENLG4TOAVNLglB2Drcnl26jfq0FjhcvWiIO77TQnwC4hYL0BT2PNRBca5e1AEZhBl/zlA3jduy11A95K
M6nwV6EjPhUwsLV+VXTNI/UBWuLuZ4BTwLuoxKWStge0sZnoeHooPvkyFTamLNf6SNo/yEDRAYScgktl zlOqUAU64kOREbY6pImvehQBQEv8fQ9wAkQ7nfarGXtEn5yOj3MDqYmnyRtjxhIYuuZC/QkoOoDsosGv
CAJaFpiJNMQnASLGFND6J+ABPIAH8IDSBwR1ydC9Jub9MwAu9cLe2DlkPiISUgFl6JGAVJBlxzKq2Skm jkFEz0LCxEFqAuDWmAFm6B4EgAAQAALg7wOihofYpS7p/TUAofDC7tgZZD8ickoFJeiRiFJRJUdKutEp
5uxtjlRRAJsDLlhZdsHCqo1zYFeE11sbnDcFB6w6DmBpy5kTkG1beFhpE+HmnIABJuHpvlKiMe7yAXyE I2ftEkemKICNPhesLLtgwYrxDjikRK2tznlecIB1Zx+WNp05Aa9tiQ/KMSkxnxPQl0h7OoJqNMZfPoD3
iQlJ5t0IfgewzxnA/K06VoO25u4ngI8oJV19p2F6HifSKnYahAHDa/7/jb8BFCQewAMsDrfpHWCxmdAS cBkpz74b0a8A9jELmLvQJqvQ1tx9B/AerWYqw7pE552J07BTII6MPOf/3/gTQEESAALAsuM2vwEsmBkt
339OIHgD1J71QoDsMyIAAAAASUVORK5CYII= Cf3nRKIXmuv1PdX+ZZIAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="tsbtnLight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnLight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
h8hfV8RzuqW13GsAAAAASUVORK5CYII= h8hfUyBzuFLSYqkAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="tsbtnLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

View File

@ -30,10 +30,10 @@
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProductInfo)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProductInfo));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.groupBox10 = new System.Windows.Forms.GroupBox(); this.groupBox10 = new System.Windows.Forms.GroupBox();
this.panel10 = new System.Windows.Forms.Panel(); this.panel10 = new System.Windows.Forms.Panel();
this.numTensionDownFloatValue = new System.Windows.Forms.NumericUpDown(); this.numTensionDownFloatValue = new System.Windows.Forms.NumericUpDown();
@ -73,6 +73,7 @@
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnAddFile = new System.Windows.Forms.ToolStripButton(); this.tsbtnAddFile = new System.Windows.Forms.ToolStripButton();
this.tsbtnNewBatchId = 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.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnClose = new System.Windows.Forms.ToolStripButton(); this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
@ -102,6 +103,11 @@
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.txtSpec = new System.Windows.Forms.TextBox(); this.txtSpec = new System.Windows.Forms.TextBox();
this.tabPage3 = new System.Windows.Forms.TabPage(); 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.groupBox6 = new System.Windows.Forms.GroupBox();
this.panel5 = new System.Windows.Forms.Panel(); this.panel5 = new System.Windows.Forms.Panel();
this.label21 = new System.Windows.Forms.Label(); this.label21 = new System.Windows.Forms.Label();
@ -115,7 +121,6 @@
this.tabPage2 = new System.Windows.Forms.TabPage(); this.tabPage2 = new System.Windows.Forms.TabPage();
this.tabPage4 = new System.Windows.Forms.TabPage(); this.tabPage4 = new System.Windows.Forms.TabPage();
this.flpQualifiedPannel = new System.Windows.Forms.FlowLayoutPanel(); this.flpQualifiedPannel = new System.Windows.Forms.FlowLayoutPanel();
this.tbtnGetPos = new System.Windows.Forms.ToolStripButton();
this.groupBox10.SuspendLayout(); this.groupBox10.SuspendLayout();
this.panel10.SuspendLayout(); this.panel10.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numTensionDownFloatValue)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numTensionDownFloatValue)).BeginInit();
@ -144,6 +149,8 @@
this.groupBox4.SuspendLayout(); this.groupBox4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).BeginInit();
this.tabPage3.SuspendLayout(); this.tabPage3.SuspendLayout();
this.groupBox7.SuspendLayout();
this.panel6.SuspendLayout();
this.groupBox6.SuspendLayout(); this.groupBox6.SuspendLayout();
this.panel5.SuspendLayout(); this.panel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numMarkSize)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numMarkSize)).BeginInit();
@ -663,6 +670,16 @@
this.tsbtnNewBatchId.Visible = false; this.tsbtnNewBatchId.Visible = false;
this.tsbtnNewBatchId.Click += new System.EventHandler(this.tsbtnNewBatchId_Click); 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 // toolStripSeparator4
// //
this.toolStripSeparator4.Name = "toolStripSeparator4"; this.toolStripSeparator4.Name = "toolStripSeparator4";
@ -828,46 +845,46 @@
// //
this.dgvBatchList.AllowUserToAddRows = false; this.dgvBatchList.AllowUserToAddRows = false;
this.dgvBatchList.AllowUserToDeleteRows = false; this.dgvBatchList.AllowUserToDeleteRows = false;
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dgvBatchList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5; this.dgvBatchList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dgvBatchList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgvBatchList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvBatchList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.dgvBatchList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colBatchId, this.colBatchId,
this.colTargetCount, this.colTargetCount,
this.colCompleteCount, this.colCompleteCount,
this.colCreateTime}); this.colCreateTime});
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window; dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle6.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText; dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False; dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvBatchList.DefaultCellStyle = dataGridViewCellStyle6; this.dgvBatchList.DefaultCellStyle = dataGridViewCellStyle2;
this.dgvBatchList.Dock = System.Windows.Forms.DockStyle.Fill; this.dgvBatchList.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvBatchList.Location = new System.Drawing.Point(2, 16); this.dgvBatchList.Location = new System.Drawing.Point(2, 16);
this.dgvBatchList.Margin = new System.Windows.Forms.Padding(2); this.dgvBatchList.Margin = new System.Windows.Forms.Padding(2);
this.dgvBatchList.MultiSelect = false; this.dgvBatchList.MultiSelect = false;
this.dgvBatchList.Name = "dgvBatchList"; this.dgvBatchList.Name = "dgvBatchList";
this.dgvBatchList.ReadOnly = true; this.dgvBatchList.ReadOnly = true;
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control; dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText; dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dgvBatchList.RowHeadersDefaultCellStyle = dataGridViewCellStyle7; this.dgvBatchList.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dgvBatchList.RowHeadersVisible = false; this.dgvBatchList.RowHeadersVisible = false;
this.dgvBatchList.RowHeadersWidth = 62; this.dgvBatchList.RowHeadersWidth = 62;
dataGridViewCellStyle8.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.dgvBatchList.RowsDefaultCellStyle = dataGridViewCellStyle8; this.dgvBatchList.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.dgvBatchList.RowTemplate.Height = 30; this.dgvBatchList.RowTemplate.Height = 30;
this.dgvBatchList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.dgvBatchList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvBatchList.Size = new System.Drawing.Size(405, 203); this.dgvBatchList.Size = new System.Drawing.Size(405, 203);
@ -993,6 +1010,7 @@
// //
// tabPage3 // tabPage3
// //
this.tabPage3.Controls.Add(this.groupBox7);
this.tabPage3.Controls.Add(this.groupBox6); this.tabPage3.Controls.Add(this.groupBox6);
this.tabPage3.Controls.Add(this.groupBox5); this.tabPage3.Controls.Add(this.groupBox5);
this.tabPage3.Location = new System.Drawing.Point(4, 22); this.tabPage3.Location = new System.Drawing.Point(4, 22);
@ -1004,6 +1022,62 @@
this.tabPage3.Text = "图纸资料"; this.tabPage3.Text = "图纸资料";
this.tabPage3.UseVisualStyleBackColor = true; 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 // groupBox6
// //
this.groupBox6.BackColor = System.Drawing.SystemColors.ActiveCaption; this.groupBox6.BackColor = System.Drawing.SystemColors.ActiveCaption;
@ -1071,9 +1145,9 @@
"空心圆", "空心圆",
"实心圆带栅线", "实心圆带栅线",
"空心圆带栅线", "空心圆带栅线",
"圆环", "矩形",
"半圆环", "候补1",
"十字线"}); "候补2"});
this.cbMarkType.Location = new System.Drawing.Point(70, 65); this.cbMarkType.Location = new System.Drawing.Point(70, 65);
this.cbMarkType.Margin = new System.Windows.Forms.Padding(2); this.cbMarkType.Margin = new System.Windows.Forms.Padding(2);
this.cbMarkType.Name = "cbMarkType"; this.cbMarkType.Name = "cbMarkType";
@ -1161,16 +1235,6 @@
this.flpQualifiedPannel.Size = new System.Drawing.Size(416, 326); this.flpQualifiedPannel.Size = new System.Drawing.Size(416, 326);
this.flpQualifiedPannel.TabIndex = 0; 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 // FrmProductInfo
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -1223,6 +1287,9 @@
this.groupBox4.ResumeLayout(false); this.groupBox4.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).EndInit();
this.tabPage3.ResumeLayout(false); this.tabPage3.ResumeLayout(false);
this.groupBox7.ResumeLayout(false);
this.panel6.ResumeLayout(false);
this.panel6.PerformLayout();
this.groupBox6.ResumeLayout(false); this.groupBox6.ResumeLayout(false);
this.panel5.ResumeLayout(false); this.panel5.ResumeLayout(false);
this.panel5.PerformLayout(); this.panel5.PerformLayout();
@ -1320,5 +1387,10 @@
private System.Windows.Forms.ComboBox cmbDefectModelFile; private System.Windows.Forms.ComboBox cmbDefectModelFile;
private System.Windows.Forms.Label label21; private System.Windows.Forms.Label label21;
private System.Windows.Forms.ToolStripButton tbtnGetPos; 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;
} }
} }

View File

@ -1,82 +1,85 @@
using OpenCvSharp; using OpenCvSharp;
using ProductionControl.UI; using ProductionControl.UI;
using ProductionControl.UIExtend; using ProductionControl.UIExtend;
using ProductionControl.Utils; using ProductionControl.Utils;
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Web.Configuration; using System.Web.Configuration;
using System.Windows.Forms; using System.Windows.Forms;
namespace ProductionControl namespace ProductionControl
{ {
public partial class FrmProductInfo : Form public partial class FrmProductInfo : Form
{ {
Service.ClassesService svcClasses = new Service.ClassesService(); Service.ClassesService svcClasses = new Service.ClassesService();
Service.ProductService service = new Service.ProductService(); Service.ProductService service = new Service.ProductService();
Models.Product model = new Models.Product(); Models.Product model = new Models.Product();
string MapPath = ""; string MapPath = "";
public FrmProductInfo(Models.Product m=null) public FrmProductInfo(Models.Product m=null)
{ {
InitializeComponent(); InitializeComponent();
this.dgvBatchList.AutoGenerateColumns = false; this.dgvBatchList.AutoGenerateColumns = false;
checkCustomerVer(); checkCustomerVer();
//this.cbMarkType.SelectedIndex = -1; //this.cbMarkType.SelectedIndex = -1;
if (m!=null) if (m!=null)
{ {
model = m; model = m;
this.Text += $" (ID:{m.Id})"; this.Text += $" (ID:{m.Id})";
this.txtCode.Text = m.Code; this.txtCode.Text = m.Code;
this.txtName.Text = m.Name; this.txtName.Text = m.Name;
this.txtSpec.Text = m.Spec; this.txtSpec.Text = m.Spec;
this.cmbHoleCount.Text = m.HoleCount.ToString(); this.cmbHoleCount.Text = m.HoleCount.ToString();
this.txtBatchId.Text = m.BatchId; this.txtBatchId.Text = m.BatchId;
this.numTargetCount.Value = m.TargetCount; this.numTargetCount.Value = m.TargetCount;
this.toolTip1.SetToolTip(this.numTargetCount,"已完成:"+m.CompleteCount); this.toolTip1.SetToolTip(this.numTargetCount,"已完成:"+m.CompleteCount);
this.numTensionBaseValue.Value = (decimal)m.TensionBaseValue; this.numTensionBaseValue.Value = (decimal)m.TensionBaseValue;
this.numTensionUpFloatValue.Value = (decimal)m.TensionUpFloatValue; this.numTensionUpFloatValue.Value = (decimal)m.TensionUpFloatValue;
this.numTensionDownFloatValue.Value = (decimal)m.TensionDownFloatValue; this.numTensionDownFloatValue.Value = (decimal)m.TensionDownFloatValue;
this.numHeightBaseValue.Value = (decimal)m.HeightBaseValue; this.numHeightBaseValue.Value = (decimal)m.HeightBaseValue;
this.numHeightUpFloatValue.Value = (decimal)m.HeightUpFloatValue; this.numHeightUpFloatValue.Value = (decimal)m.HeightUpFloatValue;
this.numHeightDownFloatValue.Value = (decimal)m.HeightDownFloatValue; this.numHeightDownFloatValue.Value = (decimal)m.HeightDownFloatValue;
this.txtHeightBaseDec.Text = m.HeightBaseDec; this.txtHeightBaseDec.Text = m.HeightBaseDec;
this.numLineWidthBaseValue.Value = (decimal)m.LineWidthBaseValue; this.numLineWidthBaseValue.Value = (decimal)m.LineWidthBaseValue;
this.numLineWidthUpFloatValue.Value = (decimal)m.LineWidthUpFloatValue; this.numLineWidthUpFloatValue.Value = (decimal)m.LineWidthUpFloatValue;
this.numLineWidthDownFloatValue.Value = (decimal)m.LineWidthDownFloatValue; this.numLineWidthDownFloatValue.Value = (decimal)m.LineWidthDownFloatValue;
this.numPTBaseValue.Value = (decimal)m.PTBaseValue; this.numPTBaseValue.Value = (decimal)m.PTBaseValue;
this.numPTUpFloatValue.Value = (decimal)m.PTUpFloatValue; this.numPTUpFloatValue.Value = (decimal)m.PTUpFloatValue;
this.numPTDownFloatValue.Value = (decimal)m.PTDownFloatValue; this.numPTDownFloatValue.Value = (decimal)m.PTDownFloatValue;
//if (m.Type > 0) //if (m.Type > 0)
//{ //{
// this.txtCode.Enabled = false; // this.txtCode.Enabled = false;
// this.txtName.Width = this.txtCode.Width; // this.txtName.Width = this.txtCode.Width;
// this.txtSpec.Enabled = false; // this.txtSpec.Enabled = false;
//} //}
this.tsbtnAddFile.Enabled = true; this.tsbtnAddFile.Enabled = true;
this.tsbtnNewBatchId.Enabled = true; this.tsbtnNewBatchId.Enabled = true;
this.dgvBatchList.DataSource = new BindingSource(m.BatchHistoryList, null); this.dgvBatchList.DataSource = new BindingSource(m.BatchHistoryList, null);
//2023-11-2 mark //2023-11-2 mark
this.cbMarkType.SelectedIndex = m.MarkType; this.cbMarkType.SelectedIndex = m.MarkType;
this.numMarkSize.Value = (decimal)m.MarkSize; this.numMarkSize.Value = (decimal)m.MarkSize;
//2023-12-18 主栅
Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(x => x.Type == 0); this.cbMarkDisturb.Checked = (m.MarkDisturb == 1);
if (attachmentFile!=null) this.cbMainGrid.Checked = (m.MainGrid == 1);
{
this.btnOpenFile.Text = attachmentFile.Name; Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(x => x.Type == 0);
if (attachmentFile!=null)
{
this.btnOpenFile.Text = attachmentFile.Name;
this.btnOpenFile.Visible = true; this.btnOpenFile.Visible = true;
//为兼容老版本,发现图纸图片地址为空,检索图片地址 //为兼容老版本,发现图纸图片地址为空,检索图片地址
if (string.IsNullOrEmpty(model.MapPath)) if (string.IsNullOrEmpty(model.MapPath))
@ -84,351 +87,362 @@ namespace ProductionControl
string targFilePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\"; string targFilePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\";
targFilePath += attachmentFile.Name; targFilePath += attachmentFile.Name;
model.MapPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".bmp"; model.MapPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".bmp";
} }
} }
} }
initDataView(); initDataView();
} }
private void FrmProductInfo_Load(object sender, EventArgs e) private void FrmProductInfo_Load(object sender, EventArgs e)
{ {
//this.cbMarkType.SelectedIndex = -1; //this.cbMarkType.SelectedIndex = -1;
} }
private void checkCustomerVer() private void checkCustomerVer()
{ {
if (Config.CustomerVer != "B") if (Config.CustomerVer != "B")
{ {
tabControl1.TabPages.RemoveAt(3); tabControl1.TabPages.RemoveAt(3);
} }
} }
private void initDataView() private void initDataView()
{ {
//显示的数据 //显示的数据
this.cmbClasses.DisplayMember = "Name"; this.cmbClasses.DisplayMember = "Name";
this.cmbClasses.ValueMember = "Id"; this.cmbClasses.ValueMember = "Id";
var list = svcClasses.GetListNav(0); var list = svcClasses.GetListNav(0);
this.cmbClasses.DataSource = list; this.cmbClasses.DataSource = list;
if (model.ClassesId>0) if (model.ClassesId>0)
this.cmbClasses.SelectedValue = model.ClassesId; this.cmbClasses.SelectedValue = model.ClassesId;
//缺陷项 //缺陷项
var lstDefect = Utils.EnumUtil.GetArrayList<DefectCodeEnum>(); var lstDefect = Utils.EnumUtil.GetArrayList<DefectCodeEnum>();
foreach(DictionaryEntry item in lstDefect) foreach(DictionaryEntry item in lstDefect)
{ {
DefectCountOfSizeControl userCon = new DefectCountOfSizeControl(); DefectCountOfSizeControl userCon = new DefectCountOfSizeControl();
userCon.Code = item.Value.ToString(); userCon.Code = item.Value.ToString();
userCon.Title = ((DefectNameEnum)(int)item.Key).ToString(); userCon.Title = ((DefectNameEnum)(int)item.Key).ToString();
if (model != null && model.QualifiedCriterionList!=null) if (model != null && model.QualifiedCriterionList!=null)
{ {
var qalifiedItem = model.QualifiedCriterionList.FirstOrDefault(m => m.DefectCode == userCon.Code); var qalifiedItem = model.QualifiedCriterionList.FirstOrDefault(m => m.DefectCode == userCon.Code);
if(qalifiedItem != null) if(qalifiedItem != null)
{ {
userCon.Checked = true; userCon.Checked = true;
userCon.SizeValue = (decimal)qalifiedItem.Size; userCon.SizeValue = (decimal)qalifiedItem.Size;
userCon.MaxDefectCount = qalifiedItem.MaxDefectCount; userCon.MaxDefectCount = qalifiedItem.MaxDefectCount;
} }
} }
this.flpQualifiedPannel.Controls.Add(userCon); this.flpQualifiedPannel.Controls.Add(userCon);
} }
//模型文件 //模型文件
string strDefectModelFile = Application.StartupPath + @"\onnxFiles\"; string strDefectModelFile = Application.StartupPath + @"\onnxFiles\";
if(!Directory.Exists(strDefectModelFile)) if(!Directory.Exists(strDefectModelFile))
Directory.CreateDirectory(strDefectModelFile); Directory.CreateDirectory(strDefectModelFile);
string[] onnxFiles=Directory.GetFiles(strDefectModelFile,"*.onnx"); string[] onnxFiles=Directory.GetFiles(strDefectModelFile,"*.onnx");
string onlyName; string onlyName;
foreach (string onnxFile in onnxFiles) foreach (string onnxFile in onnxFiles)
{ {
onlyName = Path.GetFileName(onnxFile); onlyName = Path.GetFileName(onnxFile);
cmbDefectModelFile.Items.Add(onlyName); cmbDefectModelFile.Items.Add(onlyName);
if (!string.IsNullOrWhiteSpace(model.DefectModelFile) && onlyName.ToLower()== model.DefectModelFile.ToLower()) if (!string.IsNullOrWhiteSpace(model.DefectModelFile) && onlyName.ToLower()== model.DefectModelFile.ToLower())
this.cmbDefectModelFile.SelectedItem = model.DefectModelFile; this.cmbDefectModelFile.SelectedItem = model.DefectModelFile;
} }
} }
private void btnSave_Click(object sender, EventArgs e) private void btnSave_Click(object sender, EventArgs e)
{ {
try try
{ {
string szCode = this.txtCode.Text.Trim(); string szCode = this.txtCode.Text.Trim();
string szName = this.txtName.Text.Trim(); string szName = this.txtName.Text.Trim();
string szSpec = this.txtSpec.Text.Trim(); string szSpec = this.txtSpec.Text.Trim();
string szHoleCount = this.cmbHoleCount.Text.Trim(); string szHoleCount = this.cmbHoleCount.Text.Trim();
string szBatchId = this.txtBatchId.Text.Trim(); string szBatchId = this.txtBatchId.Text.Trim();
int liTargetCount = (int)this.numTargetCount.Value; int liTargetCount = (int)this.numTargetCount.Value;
string szHeightBaseDec=this.txtHeightBaseDec.Text.Trim().Trim(new char[] { ';', ',' }); string szHeightBaseDec=this.txtHeightBaseDec.Text.Trim().Trim(new char[] { ';', ',' });
if (szCode == "" || szName == "") if (szCode == "" || szName == "")
throw new Exception("请填写料号和名称!"); throw new Exception("请填写料号和名称!");
if(this.cmbClasses.SelectedIndex<0) if(this.cmbClasses.SelectedIndex<0)
throw new Exception("请选择产品类型!"); throw new Exception("请选择产品类型!");
if (szHoleCount==""||! Util.IsNumber(szHoleCount)) if (szHoleCount==""||! Util.IsNumber(szHoleCount))
throw new Exception("请正确填写产品目数!"); throw new Exception("请正确填写产品目数!");
if (this.cmbDefectModelFile.SelectedIndex < 0) if (this.cmbDefectModelFile.SelectedIndex < 0)
throw new Exception("请选择检测模型文件!"); throw new Exception("请选择检测模型文件!");
if (this.cbMarkType.SelectedIndex < 0) if (this.cbMarkType.SelectedIndex < 0)
throw new Exception("请选择Mark"); throw new Exception("请选择Mark");
//if (szBatchId == "")// || liTargetCount < 1 //if (szBatchId == "")// || liTargetCount < 1
// throw new Exception("请填写批次号");// 和批次目标数量!"); // throw new Exception("请填写批次号");// 和批次目标数量!");
if (szHeightBaseDec != "") if (szHeightBaseDec != "")
{ {
double num; double num;
string[] szs= szHeightBaseDec.Split(new char[] { ';',','}); string[] szs= szHeightBaseDec.Split(new char[] { ';',','});
foreach(string s in szs) foreach(string s in szs)
{ {
if (!double.TryParse(s, out num)) if (!double.TryParse(s, out num))
throw new Exception(s+" 非数值!"); throw new Exception(s+" 非数值!");
} }
} }
model.Code = szCode; model.Code = szCode;
model.Name = szName; model.Name = szName;
model.Spec = szSpec; model.Spec = szSpec;
model.ClassesId = (int)this.cmbClasses.SelectedValue; model.ClassesId = (int)this.cmbClasses.SelectedValue;
model.HoleCount = Convert.ToInt32(szHoleCount); model.HoleCount = Convert.ToInt32(szHoleCount);
model.DefectModelFile = this.cmbDefectModelFile.Text.Trim(); model.DefectModelFile = this.cmbDefectModelFile.Text.Trim();
model.TensionBaseValue= (double)this.numTensionBaseValue.Value; model.TensionBaseValue= (double)this.numTensionBaseValue.Value;
model.TensionUpFloatValue = (double)this.numTensionUpFloatValue.Value; model.TensionUpFloatValue = (double)this.numTensionUpFloatValue.Value;
model.TensionDownFloatValue = (double)this.numTensionDownFloatValue.Value; model.TensionDownFloatValue = (double)this.numTensionDownFloatValue.Value;
model.HeightBaseValue = (double)this.numHeightBaseValue.Value; model.HeightBaseValue = (double)this.numHeightBaseValue.Value;
model.HeightUpFloatValue = (double)this.numHeightUpFloatValue.Value; model.HeightUpFloatValue = (double)this.numHeightUpFloatValue.Value;
model.HeightDownFloatValue = (double)this.numHeightDownFloatValue.Value; model.HeightDownFloatValue = (double)this.numHeightDownFloatValue.Value;
model.HeightBaseDec = szHeightBaseDec; model.HeightBaseDec = szHeightBaseDec;
model.LineWidthBaseValue = (double)this.numLineWidthBaseValue.Value; model.LineWidthBaseValue = (double)this.numLineWidthBaseValue.Value;
model.LineWidthUpFloatValue = (double)this.numLineWidthUpFloatValue.Value; model.LineWidthUpFloatValue = (double)this.numLineWidthUpFloatValue.Value;
model.LineWidthDownFloatValue = (double)this.numLineWidthDownFloatValue.Value; model.LineWidthDownFloatValue = (double)this.numLineWidthDownFloatValue.Value;
model.PTBaseValue = (double)this.numPTBaseValue.Value; model.PTBaseValue = (double)this.numPTBaseValue.Value;
model.PTUpFloatValue = (double)this.numPTUpFloatValue.Value; model.PTUpFloatValue = (double)this.numPTUpFloatValue.Value;
model.PTDownFloatValue = (double)this.numPTDownFloatValue.Value; model.PTDownFloatValue = (double)this.numPTDownFloatValue.Value;
if (model.QualifiedCriterionList == null) if (model.QualifiedCriterionList == null)
model.QualifiedCriterionList = new List<Models.QualifiedCriterion>(); model.QualifiedCriterionList = new List<Models.QualifiedCriterion>();
else else
model.QualifiedCriterionList.Clear(); model.QualifiedCriterionList.Clear();
if (string.IsNullOrEmpty(model.MapPath)) if (string.IsNullOrEmpty(model.MapPath))
{ {
model.MapPath = ""; model.MapPath = "";
model.GetPointList = ""; model.GetPointList = "";
} }
foreach (DefectCountOfSizeControl defectControl in this.flpQualifiedPannel.Controls) foreach (DefectCountOfSizeControl defectControl in this.flpQualifiedPannel.Controls)
{ {
if (defectControl.Checked) if (defectControl.Checked)
{ {
model.QualifiedCriterionList.Add( model.QualifiedCriterionList.Add(
new Models.QualifiedCriterion() new Models.QualifiedCriterion()
{ {
DefectCode = defectControl.Code, DefectCode = defectControl.Code,
Size = (float)defectControl.SizeValue, Size = (float)defectControl.SizeValue,
MaxDefectCount = (int)defectControl.MaxDefectCount, MaxDefectCount = (int)defectControl.MaxDefectCount,
ModifyUserCode = Config.loginUser.Code, ModifyUserCode = Config.loginUser.Code,
CreateUserCode = Config.loginUser.Code CreateUserCode = Config.loginUser.Code
}); });
} }
} }
model.ModifyUserCode = Config.loginUser.Code; model.ModifyUserCode = Config.loginUser.Code;
//2023-11-2 mark //2023-11-2 mark
model.MarkType = this.cbMarkType.SelectedIndex; model.MarkType = this.cbMarkType.SelectedIndex;
model.MarkSize = (double)this.numMarkSize.Value; model.MarkSize = (double)this.numMarkSize.Value;
//2023-12-18 主栅
bool result; model.MarkDisturb = this.cbMarkDisturb.Checked?1:0;
if (model.Id == 0) model.MainGrid = this.cbMainGrid.Checked ? 1 : 0;
{
model.BatchId = szBatchId; bool result;
model.TargetCount = liTargetCount; if (model.Id == 0)
model.CompleteCount = 0; {
model.CreateUserCode = Config.loginUser.Code; model.BatchId = szBatchId;
result = service.InsertNav(model); model.TargetCount = liTargetCount;
} model.CompleteCount = 0;
else model.CreateUserCode = Config.loginUser.Code;
{ result = service.InsertNav(model);
if (model.BatchId != szBatchId && !string.IsNullOrWhiteSpace(model.BatchId)) }
{ else
if (model.CompleteCount<model.TargetCount {
&& MessageBox.Show($"本批次完成数量未达到目标数量,确定更换批次号?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) if (model.BatchId != szBatchId && !string.IsNullOrWhiteSpace(model.BatchId))
return; {
if (model.BatchHistoryList.FirstOrDefault(m => m.BatchId == szBatchId) != null) if (model.CompleteCount<model.TargetCount
throw new Exception("当前批次号与历史中所用批次号重复,请重新填写!"); && MessageBox.Show($"本批次完成数量未达到目标数量,确定更换批次号?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
return;
model.BatchHistoryList.Add(new Models.BatchHistory() if (model.BatchHistoryList.FirstOrDefault(m => m.BatchId == szBatchId) != null)
{ throw new Exception("当前批次号与历史中所用批次号重复,请重新填写!");
BatchId = model.BatchId,
TargetCount = model.TargetCount, model.BatchHistoryList.Add(new Models.BatchHistory()
CompleteCount = model.CompleteCount, {
CreateUserCode = Config.loginUser.Code, BatchId = model.BatchId,
ModifyUserCode = Config.loginUser.Code TargetCount = model.TargetCount,
}); CompleteCount = model.CompleteCount,
model.CompleteCount = 0; CreateUserCode = Config.loginUser.Code,
} ModifyUserCode = Config.loginUser.Code
});
model.BatchId = szBatchId; model.CompleteCount = 0;
model.TargetCount = liTargetCount; }
result = service.UpdateNav(model);
} model.BatchId = szBatchId;
if (!result) model.TargetCount = liTargetCount;
throw new Exception("保存失败!"); result = service.UpdateNav(model);
}
this.tsbtnAddFile.Enabled = true; if (!result)
this.tsbtnNewBatchId.Enabled = true; throw new Exception("保存失败!");
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.DialogResult = DialogResult.OK; this.tsbtnAddFile.Enabled = true;
this.Close(); this.tsbtnNewBatchId.Enabled = true;
} MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
catch (Exception ex) this.DialogResult = DialogResult.OK;
{ this.Close();
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); }
} catch (Exception ex)
}
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) MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw new Exception("请选择Mark"); }
//.dwg /.dxf /.dws /.dwt }
string filePath = FileUtil.selectFile("gbx,gbr文件|*.gb?");
if (string.IsNullOrWhiteSpace(filePath)) private void btnCancel_Click(object sender, EventArgs e)
return; {
this.Close();
string fileName=Path.GetFileName(filePath); }
string fileExtend=Path.GetExtension(filePath);
string fileOnlyName = fileName.Substring(0, fileName.Length - fileExtend.Length); private void tsbtnNewBatchId_Click(object sender, EventArgs e)
{
// tabControl1.SelectedIndex = 2;
string targFilePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\"; Application.DoEvents();
if (!Directory.Exists(targFilePath)) }
Directory.CreateDirectory(targFilePath);
else//删除原文件 private void btnAddFile_Click(object sender, EventArgs e)
FileUtil.delFilesInFolder(targFilePath); {
try
targFilePath += fileName; {
//File.Copy(res.file_path, defectFileName + ".bmp", true); if (this.cbMarkType.SelectedIndex < 0)
bool result = API.CopyFile(filePath, targFilePath, false);//更快 //false-覆盖 throw new Exception("请选择Mark");
if (!result) //.dwg /.dxf /.dws /.dwt
throw new Exception("移动文件失败!"); string filePath = FileUtil.selectFile("gbx,gbr文件|*.gb?");
if (string.IsNullOrWhiteSpace(filePath))
//后台线程转BMP与JPG return;
string tempClass = this.cmbClasses.Text;
int tempIndex = this.cbMarkType.SelectedIndex; string fileName=Path.GetFileName(filePath);
double tempValue = (double)this.numMarkSize.Value; string fileExtend=Path.GetExtension(filePath);
Task.Run(() => string fileOnlyName = fileName.Substring(0, fileName.Length - fileExtend.Length);
{
Yolo5.Yolo_Class yolo = new Yolo5.Yolo_Class(); //
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"; string bmpPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".bmp";
//2023-11-3 mark //2023-11-3 mark
//yolo.gerber2image(targFilePath, bmpPath); //yolo.gerber2image(targFilePath, bmpPath);
double[] markParam = new double[4]; double[] markParam = new double[6];
if(tempClass.Contains("乳剂")) if(tempClass.Contains("乳剂"))
markParam[0] = 2; markParam[0] = 2;
else if (tempClass.Contains("PI")) else if (tempClass.Contains("PI"))
markParam[0] = 1; markParam[0] = 1;
else else
markParam[0] = 0; markParam[0] = 0;
if (tempIndex == 0) if (tempIndex == 0)
{ {
//默认情况 实心圆0.5mm //默认情况 实心圆0.5mm
markParam[1] = 2; markParam[1] = 2;
markParam[2] = 0.5; markParam[2] = 0.5;
markParam[3] = 1; markParam[3] = 1;
} markParam[4] = 0;
markParam[5] = 0;
}
else else
{ {
markParam[1] = tempIndex - 1; markParam[1] = tempIndex - 1;
markParam[2] = tempValue; markParam[2] = tempValue;
markParam[3] = tempIndex == 1 ? 0 : 1; markParam[3] = tempIndex == 1 ? 0 : 1;
} markParam[4] = tMarkDistrub;
yolo.gerber2image(targFilePath, bmpPath, markParam); markParam[5] = tMainGrid;
}
//换背景JPG yolo.gerber2image(targFilePath, bmpPath, markParam);
Mat mat = Cv2.ImRead(bmpPath);
Cv2.CvtColor(mat, mat, ColorConversionCodes.RGB2GRAY);//转灰度图 //换背景JPG
for (int i = 0; i < mat.Height; i++) Mat mat = Cv2.ImRead(bmpPath);
{ Cv2.CvtColor(mat, mat, ColorConversionCodes.RGB2GRAY);//转灰度图
for (int j = 0; j < mat.Width; j++) for (int i = 0; i < mat.Height; i++)
{ {
if (mat.At<byte>(i, j) == 255)//白色 for (int j = 0; j < mat.Width; j++)
mat.Set<byte>(i, j, 0); {
else if (mat.At<byte>(i, j) == 255)//白色
mat.Set<byte>(i, j, 255); mat.Set<byte>(i, j, 0);
} else
} mat.Set<byte>(i, j, 255);
model.MapPath = bmpPath; }
//灰转彩 }
//Cv2.CvtColor(mat, mat, ColorConversionCodes.GRAY2RGB); model.MapPath = bmpPath;
//for (int i = 0; i < mat.Height; i++) //灰转彩
//{ //Cv2.CvtColor(mat, mat, ColorConversionCodes.GRAY2RGB);
// for (int j = 0; j < mat.Width; j++) //for (int i = 0; i < mat.Height; i++)
// { //{
// if (mat.At<byte>(i, j) == 255)//白色 // for (int j = 0; j < mat.Width; j++)
// mat.Set<byte>(i, j, 0); //黄色 // {
// } // if (mat.At<byte>(i, j) == 255)//白色
//} // mat.Set<byte>(i, j, 0); //黄色
bmpPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".jpg"; // }
//model.MapPath = bmpPath; //}
OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat).Save(bmpPath, ImageFormat.Jpeg); bmpPath = targFilePath.Substring(0, targFilePath.Length - 4) + ".jpg";
});//不能加.Start(); //model.MapPath = bmpPath;
OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat).Save(bmpPath, ImageFormat.Jpeg);
Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(m => m.Type == 0); });//不能加.Start();
if (attachmentFile!=null)
{ Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(m => m.Type == 0);
attachmentFile.Type = 0;//图纸 if (attachmentFile!=null)
attachmentFile.NameTimestamp= $"{model.Id}\\{fileOnlyName}"; {
attachmentFile.Name = fileName; attachmentFile.Type = 0;//图纸
attachmentFile.ExtendName = fileExtend; attachmentFile.NameTimestamp= $"{model.Id}\\{fileOnlyName}";
} attachmentFile.Name = fileName;
else attachmentFile.ExtendName = fileExtend;
{ }
model.AttachmentList.Add(new Models.Attachment() else
{ {
TBName = "product", model.AttachmentList.Add(new Models.Attachment()
Type = 0, {
NameTimestamp = $"{model.Id}\\{fileOnlyName}", TBName = "product",
Name = fileName, Type = 0,
ExtendName = fileExtend, NameTimestamp = $"{model.Id}\\{fileOnlyName}",
CreateUserCode = Config.loginUser.Code, Name = fileName,
ModifyUserCode = Config.loginUser.Code ExtendName = fileExtend,
}); CreateUserCode = Config.loginUser.Code,
} ModifyUserCode = Config.loginUser.Code
if (!service.UpdateNav(model)) });
throw new Exception("保存文件失败!"); }
if (!service.UpdateNav(model))
model=service.GetModelNav(model.Code); throw new Exception("保存文件失败!");
this.btnOpenFile.Text = fileName;
this.btnOpenFile.Visible = true; model=service.GetModelNav(model.Code);
} this.btnOpenFile.Text = fileName;
catch (Exception ex) this.btnOpenFile.Visible = true;
{ }
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); 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); private void btnOpenFile_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
if (attachmentFile == null ) {
MessageBox.Show("还未上传!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); Models.Attachment attachmentFile = model.AttachmentList.FirstOrDefault(m => m.Type == 0);
string filePath = Application.StartupPath + $"\\Attachment\\product\\{model.Id}\\" + attachmentFile.NameTimestamp + attachmentFile.ExtendName; if (attachmentFile == null )
if(File.Exists(filePath)) MessageBox.Show("还未上传!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Process.Start(filePath); 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) private void tbtnGetPos_Click(object sender, EventArgs e)
@ -464,5 +478,5 @@ namespace ProductionControl
model = service.GetModelNav(model.Code); model = service.GetModelNav(model.Code);
} }
} }
} }

View File

@ -127,16 +127,16 @@
<data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIgSURBVFhH7ZdPaxNBGMbfIBQFpeAXEBV7KfTWFsU/FzER YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIeSURBVFhH7ZfLShxBFIaPCJKAIuQFghHdCO5MSFCzES/Z
es2hlHabnZndeVc9BL+BN2kvLX4Aa4sWCn4Bb9Ieq4Ueeuyt9NwiUcQ/7wyTzY6ZJDubRQj0gR+bzMz7 zyKIduyq6q7TxoXkDdyJbhQfwEswgYAv4E506QVcZJmduE4IJoRcThU1PV2ZmpmunkYQ/OGjZ6rq/P1P
7JPZdzcJXMihCkTJQ6JWGC6rwJNJ4+ehen0MWPwJBP4pBY6vjHNOCZzuMhmex8Y9h7h8kBYyPKZP8A5E 9emeGbiXQx0QJePEdGG4nAKeDBk/D1UqXcDiQxD4txQ4rhjnnBI4UmfSPhPGPYe4HEsLGX6hT7ALIt7z
vOmP3IAQj7TPMp5AFI2bMwxQlNxPA3B8a0aLicvXqZeQO2Z0gLIBhHxvRotJyPWOl/YLzEwfZQMw/GBG R+5AiJ+1zxu8gijqNWdooSgZTQNw3DajxcTlauol5Ccz2kLZAELum9FiEnKz5qX9AjPTRNkADD+Y0fxi
84thg3Yu0q85rlkB5vEbhMkNPddTwwRoNq9Q3W9dq8RxNfVqE8Z7NFPR804NEyAMr1HdGdHS77lcSb0s uEA7F+nXHDesAK/xO4TJYz3XUO0EWF5+SHV/dK0Sx/XUq0oYn9BMh553qp0AYdhDdV+JG/2ey7XUy0K+
5Es975TVA7hlRvMpSa5Cbe6XrlWymtDio553yg7QZ2EP6dvWNK/ANxmvDn131g6gtvOemfETwymqPc14 0/NOWT2A781oPiVJN0y++q1rlawmtDjQ807ZAZosbCB925rmFbiV8arRdGftAGo7X5gZPzEcptrrjFcN
dfAIoFBNdUh8oQfM18HQOo4HEAQ/TX03ngHKZzQDBMF5Idp3RRavAMpEyKfA2PVCxPEd8tm1PP12gBpr jwAK1VSXxBk9YM5bQ+s4XkAQ/DL19XgGKJ+7GSAIvhWieldk8QqgTIScAcYeFSKOB8jn2PL02wFqrHYl
WAlMLE/PS/CDuvoFiGTWGxbPkF8t/VpuM5pNWCaeAVp0CZaAP5vQDaWOeVHro+guMLlvef7/JpRoeXrv MLE8PS/BT+rqJRDJM29Y/JT8ptOv5Sp3swnLxDPADV2CeeCLg7qh1DEvan0UPQcmTy3P229CiZan9w4I
gJCLIMRtaOAtffwXNe6CP79J9fQjVz+icwbI/ii1Ud8JfrgeQhq5bc7mkLp1nEVl0i9AEFymRZ+7i0pi OQdC9MMCPtHH/1HjLvjbPqqnH7n6EZ0zQPZHqY36TvDD9RDSyI/mbA6pW8dZVCbNAgTBA1p0VF9UErOz
YeE77XLVnK2H6vVLtPgR9YP7b1dRBD7RfXEhSwB/AekDZZ13nHnPAAAAAElFTkSuQmCC P2iXp8zZGqhS6aTFL6kf3H+7iiJwUvfFvSwB/AOYeWWRyPCtmgAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tsbtnAddFile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnAddFile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -210,9 +210,6 @@
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>166, 17</value>
</metadata>
<metadata name="colBatchId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="colBatchId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>

View File

@ -44,6 +44,8 @@
this.tsbtnAdd = new System.Windows.Forms.ToolStripButton(); this.tsbtnAdd = new System.Windows.Forms.ToolStripButton();
this.tsbtnDel = new System.Windows.Forms.ToolStripButton(); this.tsbtnDel = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); 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.tsbtnSetting = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnClasses = new System.Windows.Forms.ToolStripButton(); this.tsbtnClasses = new System.Windows.Forms.ToolStripButton();
@ -67,8 +69,6 @@
this.colReviseStepName = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colReviseStepName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colModifyCode = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colModifyCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colModifyTime = 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.toolStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
@ -143,6 +143,25 @@
this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 56); 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 // tsbtnSetting
// //
this.tsbtnSetting.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSetting.Image"))); this.tsbtnSetting.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSetting.Image")));
@ -264,7 +283,7 @@
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle8; this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle8;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(0, 56); 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.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true; this.dataGridView1.ReadOnly = true;
@ -408,23 +427,6 @@
this.colModifyTime.ReadOnly = true; this.colModifyTime.ReadOnly = true;
this.colModifyTime.Width = 150; 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 // FrmProductList
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -434,7 +436,7 @@
this.Controls.Add(this.statusStrip1); this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.toolStrip1); this.Controls.Add(this.toolStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 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.Name = "FrmProductList";
this.ShowInTaskbar = false; this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

View File

@ -1,186 +1,186 @@
using Models; using Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace ProductionControl namespace ProductionControl
{ {
public partial class FrmProductList : Form public partial class FrmProductList : Form
{ {
Service.ProductService service = new Service.ProductService(); Service.ProductService service = new Service.ProductService();
public Models.Product Product { get; private set; } public Models.Product Product { get; private set; }
public FrmProductList(bool isProductRevise=false) public FrmProductList(bool isProductRevise=false)
{ {
InitializeComponent(); InitializeComponent();
this.tsbtnAdd.Enabled=this.tsbtnDel.Enabled =this.tsbtnSetting.Enabled= !isProductRevise; this.tsbtnAdd.Enabled=this.tsbtnDel.Enabled =this.tsbtnSetting.Enabled= !isProductRevise;
this.tsbtnRevise.Visible=isProductRevise; this.tsbtnRevise.Visible=isProductRevise;
if (isProductRevise) if (isProductRevise)
{ {
this.Text = "产品基准厚度校正"; this.Text = "产品基准厚度校正";
} }
#region dataGridView设置 #region dataGridView设置
dataGridView1.AutoGenerateColumns = false;//自动创建列 dataGridView1.AutoGenerateColumns = false;//自动创建列
dataGridView1.AllowUserToAddRows = dataGridView1.AllowUserToDeleteRows = false;//用户添加删除行 dataGridView1.AllowUserToAddRows = dataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
dataGridView1.AllowUserToResizeRows = true;//用户调整行大小 dataGridView1.AllowUserToResizeRows = true;//用户调整行大小
//dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小 //dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
//显示行号与列宽度自动调整 //显示行号与列宽度自动调整
dataGridView1.RowHeadersVisible = true; dataGridView1.RowHeadersVisible = true;
dataGridView1.RowHeadersWidth = 50; dataGridView1.RowHeadersWidth = 50;
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变 dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
dataGridView1.RowPostPaint += (sender, e) =>//序号列头 dataGridView1.RowPostPaint += (sender, e) =>//序号列头
{ {
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e); Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
}; };
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
//for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序 //for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
// dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; // dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
//行列交叉处标题 //行列交叉处标题
//if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL"; //if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
#endregion #endregion
} }
private void initDataView(int selIndex = -1) private void initDataView(int selIndex = -1)
{ {
Product = null; Product = null;
var list = service.GetListNav(); var list = service.GetListNav();
tsslCount.Text = $"共 {list.Count} 条记录"; tsslCount.Text = $"共 {list.Count} 条记录";
int liIndex = 0; int liIndex = 0;
if (selIndex > 0) liIndex = selIndex; if (selIndex > 0) liIndex = selIndex;
else if (this.dataGridView1.CurrentRow!=null) else if (this.dataGridView1.CurrentRow!=null)
liIndex=this.dataGridView1.CurrentRow.Index; liIndex=this.dataGridView1.CurrentRow.Index;
dataGridView1.DataSource = new BindingSource(list, null); dataGridView1.DataSource = new BindingSource(list, null);
if (dataGridView1.Rows.Count > liIndex) if (dataGridView1.Rows.Count > liIndex)
dataGridView1.CurrentCell = dataGridView1[1, liIndex]; dataGridView1.CurrentCell = dataGridView1[1, liIndex];
} }
private void FrmProductList_Load(object sender, EventArgs e) private void FrmProductList_Load(object sender, EventArgs e)
{ {
initDataView(); initDataView();
} }
private void tsbtnRefresh_Click(object sender, EventArgs e) private void tsbtnRefresh_Click(object sender, EventArgs e)
{ {
initDataView(); initDataView();
} }
private void tsbtnAdd_Click(object sender, EventArgs e) private void tsbtnAdd_Click(object sender, EventArgs e)
{ {
FrmProductInfo frm = new FrmProductInfo(); FrmProductInfo frm = new FrmProductInfo();
frm.ShowDialog(); frm.ShowDialog();
initDataView(); initDataView();
} }
private void tsbtnDel_Click(object sender, EventArgs e) private void tsbtnDel_Click(object sender, EventArgs e)
{ {
try try
{ {
if (this.dataGridView1.CurrentRow == null) if (this.dataGridView1.CurrentRow == null)
return; return;
if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{ {
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>; var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引 int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
if (!service.DelNav(list[liIndex])) if (!service.DelNav(list[liIndex]))
throw new Exception("删除失败!"); throw new Exception("删除失败!");
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
//initDataView(); //initDataView();
this.dataGridView1.Rows.RemoveAt(liIndex); this.dataGridView1.Rows.RemoveAt(liIndex);
if(this.dataGridView1.Rows.Count == 0) if(this.dataGridView1.Rows.Count == 0)
initDataView(); initDataView();
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void tsbtnSetting_Click(object sender, EventArgs e) private void tsbtnSetting_Click(object sender, EventArgs e)
{ {
if(this.dataGridView1.CurrentRow == null) return; if(this.dataGridView1.CurrentRow == null) return;
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>; var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引 int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
FrmProductStep frm = new FrmProductStep(list[liIndex]); FrmProductStep frm = new FrmProductStep(list[liIndex]);
frm.ShowDialog(); frm.ShowDialog();
initDataView(); initDataView();
} }
private void tsbtnRevise_Click(object sender, EventArgs e) private void tsbtnRevise_Click(object sender, EventArgs e)
{ {
try try
{ {
if (this.dataGridView1.CurrentRow == null) if (this.dataGridView1.CurrentRow == null)
throw new Exception("请选择要校正的产品!"); throw new Exception("请选择要校正的产品!");
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>; var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引 int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1) if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1)
throw new Exception("此产品未设置校正流程!"); throw new Exception("此产品未设置校正流程!");
if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{ {
Product=list[liIndex]; Product=list[liIndex];
this.DialogResult = DialogResult.Yes; this.DialogResult = DialogResult.Yes;
this.Close(); this.Close();
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void tsbtnClose_Click(object sender, EventArgs e) private void tsbtnClose_Click(object sender, EventArgs e)
{ {
this.Close(); this.Close();
} }
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{ {
if (!this.tsbtnAdd.Enabled) return; if (!this.tsbtnAdd.Enabled) return;
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>; var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引 int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
FrmProductInfo frm = new FrmProductInfo(list[liIndex]); FrmProductInfo frm = new FrmProductInfo(list[liIndex]);
frm.ShowDialog(this); frm.ShowDialog(this);
initDataView(); initDataView();
} }
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{ {
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>; var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
for (int i = 0; i < dataGridView1.Rows.Count; i++) for (int i = 0; i < dataGridView1.Rows.Count; i++)
{ {
if (list[i].ClassesInfo != null) if (list[i].ClassesInfo != null)
dataGridView1.Rows[i].Cells["colClasses"].Value = list[i].ClassesInfo.Name; dataGridView1.Rows[i].Cells["colClasses"].Value = list[i].ClassesInfo.Name;
if (list[i].StepInfo != null) if (list[i].StepInfo != null)
dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name; dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name;
if (list[i].ReviseStepInfo != null) if (list[i].ReviseStepInfo != null)
dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name; dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name;
} }
} }
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{ {
} }
private void tsbtnClasses_Click(object sender, EventArgs e) private void tsbtnClasses_Click(object sender, EventArgs e)
{ {
FrmClassesSingle frm = new FrmClassesSingle(0, "产品类型管理"); FrmClassesSingle frm = new FrmClassesSingle(0, "产品类型管理");
if(frm.ShowDialog() == DialogResult.OK) if(frm.ShowDialog() == DialogResult.OK)
{ {
this.initDataView(); this.initDataView();
} }
} }
private void tsbtnDefectClasses_Click(object sender, EventArgs e) private void tsbtnDefectClasses_Click(object sender, EventArgs e)
{ {
} }
private void tsbtnClone_Click(object sender, EventArgs e) private void tsbtnClone_Click(object sender, EventArgs e)
@ -234,6 +234,8 @@ namespace ProductionControl
AssistStepInfo = list[liIndex].AssistStepInfo, AssistStepInfo = list[liIndex].AssistStepInfo,
ProductAssistProcessList = new List<ProductAssistProcess>(), ProductAssistProcessList = new List<ProductAssistProcess>(),
MarkType = list[liIndex].MarkType,
MarkSize = list[liIndex].MarkSize,
MapPath = "", MapPath = "",
GetPointList = "", GetPointList = "",
//OrderList = new List<Order>(), //OrderList = new List<Order>(),
@ -347,5 +349,5 @@ namespace ProductionControl
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
} }
} }

View File

@ -124,35 +124,35 @@
<data name="tsbtnRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMqSURBVFhH7ZdNSFRRHMVPRYug2klBtKisQAhKKRAECapV YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMwSURBVFhH7ZdPSFRRGMVPRYug2klBtKisQAhKKRAECapV
VAtBCHJljjqOg+P4NWZToTBlRuYgY2o5E4YkCIoh2CIIop1tggKhRQVtjIjog7ofHYd/oM5742jOIvDA VAtBCHKTOv4fHEdHx8wKJdOMzEHGzHImDEkQFEOwRRBEu9oEBUKLEtoYEdEfunPv7Th8gTrvjaM5i8AD
j//7OP97rnfue85gXf+lzCBy7BAKTByFyZrAHrmVPdk4inQcPSqBDzYBuxRe/6QTGDYPcEZaUqSHMCGH P77353z3XO+785zBuv5LmUFk2CHkmAhy4zWKPXIrfbIR5OkIelUUszYKuxRe/6yjGDYPcUZaEqSHMCGH
mYsD5jF4nBOwmaLieMmVqZAhkvp7T04zk7mHUjWA7/Y+m1fJ/DhLzzOSHUQzsWuNDJ9e5i5KbD8bsoBE qYsDZjF4nBOwqRKL4DVXplSGiOvvPTlNTeY+CtUAftgHbF4l8+MsPU9JdhCNxK41MnxymbsosANsSAMS
uMv0I1f1cdn72JAFJMZdOoph20uzoHpgFp7/KxLjLBvFYWKXQ0X5yEUxTfrImLrDR9PB54REOUt347bt 4S4zgEzVz2XvZ0MakBh36RCGbR/NgroDs/D8X5EYZ9kQDhO7HCrEj1wI06SfjHGSs04+JyTKWboHt20P
pjEN9IyZbuRIS1KmC1t4fdrJvxRpcZa6iTf2Fo0u6C5MijVFqhNfnXqWIvZUcXm22k6aXFARbswb2Cn2 jUmgZ8z0IENa4jLd2MLr007+pUiLs9RNvLO3aHRBd2NSrAlSnfjm1LMUsSeKy7PVdtHkgrrOjdmJnWJf
RXLyuyEtqTIdyLMRmlzQEUyJdZF4fcLJ78S8V9pSZdpxzHbQ6IJux4BYsyMT5gpcY5gL+qrzCqyZbJh7 JCe/G9KSKNOOLNtBkwu6A1NiXSRen3DyOzHvlbZEmTYcs+00uqDbcE+s6ZFp5QpcY5gL+qrzCqyZbCv3
4ArDXFBh7oGw8x5wE/+o7eY6tiWrHNtH2CS3U6VaMWvbGOiCbsO4WB3FCe41bShkWL65hEPzq8p6kOzn wBWGuaBauQdanfeAm/hHbTc3sC1e5dg+xia5nSjVjBnbwkAXdAvGxeooTnCvaUEuw7LNJRyaX1XWg2Q/
ca5pxT56Noo9VboFPTbEsDToEEZNy+L3gK3AZhPCWV6vZy2zLThnmnGK58WsheSoacIR1lxpcZZtRoFt jzNNM/bRs1HsidJN6LVBhiVBBzFqmha/B2wpNpsgzvJ6HWuRbcI504hTPM9nzSVHTQBHWDOlxVm2ETk2
YtAyqCa+CRsxpRvQq5swyvMXrNMkxqDLphE1rGWsJaYBp5OTacBxTmiHRLlL12PEBhm0AlQAcyqIGR3E wKBlUAG+CRswpevRpwMYjQXwknWahBl02TSgirWItcDU43R8MvU4zgntkCh36TqMWD+DVoDyYS7mxyvt
BPtjpN0EETT1qGQtY3gpfSf4EtggMe4ydfxvGOCGC3DwDKH/C5klz3QdRnUAMV6PmABCxM8xL7Lulojl xwT7w6TN+OE3dShjLWJ4IX0n+BLYIDHuMrX8b+jjhvNx8BSh/yuZifnwXNdiVPsQ5vUO40OQeDlmCetu
ZWpx3vo5eIYoP74pH96xzuhaPNE+jLDGtB+dxs+PxIdiGTpzsanV+hiQAQz/QT6S18qL57oGjzmJhyRm iVhepgbnrZeDp4jy4ruqxoeYl6tQg6e6GiOsYe1Fl/HykVQjX4ZOXWxqttUMSAGG/ySfyNtYJV7oKjzh
argp0+38dDLVuKAq+XF4GZQGen6SOfJWVXMVqvBUezHB8FIZavUyHn4r9mDSVjHMBVWFX8qDz6qCH4MH JB6RsKnipky285PJVOCC8vBxVDIoCfT8InOqDO9jFVyFcjzTlZhgeKEMtXoZD78VezBpyxnmgirHb07g
rziBhPEiX4ZYG/FZL9IV/F1Qzi8fHgYvgNd+M/g978c44ZPSkj0xZJct5y8ihiVrOQ7IrXWtUMAf5Oh5 iyrhY/DgDScQNZXIliHWRvys5+lS/i64yC8fHgYvgNcUJ/CR98Oc8ElpSZ8YsssW8xcRw+K1GAfk1rpW
rCbfSUoAAAAASUVORK5CYII= KOAP8C15gnutFsIAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="tsbtnAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHoSURBVFhH3ZfNSwJBGMaFIIgM3R2/gu5B/0OXDp26eiro YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHoSURBVFhH3ZdPSwJBGMaFIIgMdUbToHvQd+jSoVNXTwUd
UO6OfRD9S921PyCIopPQKQw6RCvujBqdoy/I5tE3NV0YdxuR+sEDvuO8z/uwustObJi4I1OMizLjt5+M yt2xP0Rfqbv2AYIoOgmdwkOHaMWdUaNz9A+yefRNTRfG3UakfvCA7zjv8z6s7rITGybuqDQXssxF9ZML
y7YZwUuU4U1jgsnyZkY1VEYNjKmCGTRuFJWyhI22Kw/U52WT6noihCjRuCHy1Vl7U75ajn9NK8aBN2Zg 1bYjeMkyvGlMMFnRXNQNlVEDa6pgBo0bRacsYSNz1aH+vGJTXU+EkCUaN0S+Osu21GvK8W9oxTrwxgzM
Fi31yW4151XCN9sVF7RkHHhjBmbRUh8sIh3j/hUt6cm3ZzoaE3hjhrEAzJVnEJVajAdI7IomRKUW81eA oqU+2e3mvE74xlx5SUvWgTdmYBYt9cEi0nHhX9OSmXx7pqMxgTdmWAvAXXUOUWnEeoDEnmxCVBqxfwWE
+x5EpZb/F8Dm8h6iUkvkALnDRtpyxInl+qeDivO7Z2h4HXvRQ+09Igew3cZK9yk2vtBD7T0iBwCJIy+Z 70FUGvl/AZhQ9xCVRiIHyB01MilHnqZc/2xQcXH3DA2vYy96qL1H5ADMbax2n2LjCz3U3iNyAJA49pLp
KtQW03uPuW+xgqxDg2vYg73U9oNfBQhC7X2AqNQyiQBTvg2deg2iUovxAEnutyAqtZi/Atxfg6jUYjxA Qm0ps/+Y+xYvqDo0uIY92EttP/hVgCD03geISiOTCDDl29Cp1yAqjVgPkBR+C6LSiP0rIPx1iEoj1gOE
WCIFWDquz6nbK47vwwg96CWbDqED2EWRT3D5wra9D/VweQ8l1YNeeJBd+AApLlctV57bXFxGEXrhQXZ/ JVKA5ZP6nL694vg+jNCDXrLpEDoAK8p8QqgXvuN96IfLeyjpHvTCg+zCB0gLtZZy1QUT8iqK0AsPsvuj
9D9gktAB7KJcV7/nDXNFNZJULzzILsp/QGzglYtx7ymK0AsPstMHUImn91qOwwJum0kfTDAj8GACcGxS /wGbhA7AimpD/5633JXVSNK98CC7KP8BuYlXLi68pyhCLzzIzhxAJ57eazkOC7htJn0wwYzAgwnAsUkn
Cad0NFNkdlpZtWmih1PMoHHBLOwLhvc608dzeMKbxhCx2BcBm5Yir7kGIwAAAABJRU5ErkJggg== nNLRTLO428rqTRM9nGIGjQtm4UByvNfZPp7DE940hojFvgDhTpYe8U0OzAAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tsbtnDel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnDel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -242,16 +242,16 @@
<data name="tsbtnRevise.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnRevise.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIlSURBVFhH7dTLSxtRFAbwgCAU/H+sUBBcCAqV0hIxNaWa YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIlSURBVFhH7dTLSxtRFAbwgCAU/H9soSC4EFy0SEvE1BQ1
uLKrboqLbtx00yqCVlC0UrEPJokxiVkIgiC0tggirQ0+UTE6jpnQJ4GBgdM55dxwvU5m5ibRhfSDHyS5 caUrN6WLbrrpRi2CVbAVRemLSWJMYhaFglDoC0FEU1+tVjE6jpmgfRAYGDidU84N1+tkZm4SXYgf/CDJ
53z3ruK7NulJ58GLUFofo5XqJZzOF+wuK4XWqhPZyxGtVp7wvF7omddBFq1XlnBKL1igHFRRfkIpzQil Pee7dxXfpUl3Og9ehNL6GK1UL+F0vmB3WSm0Vp3IXo5otfKE5/RC95wOsmi9soRTesEC5aCK8hNKaUYo
cmArkYv0KlqdX4HaUPJs1G6GaspLd1IzupNnYG/fxMtp1IePCCa0vDhHx/LpSmiGBRwUrEtraPxfumbV lQNbiVykR9Hq/ArUhpJHo3YzVFNeupKa0ZU8AnvbJl5Ooz58RDCh5cU5OpZPZ0IzLOCgYF1aQ+P/0zmj
rDhHR3J5OHdqWICJb/4pfj4nrg7QirWj9tnN0LH3PIirhgWYaOZ3Ef87cz+eVQOz6qHdGaJabwnGdsxg ZsU5OpJLx+yhYQEmvv63+PmUuDpIK9aO+tBuho69535cNSzARFf/FPG/M/fiWTUwo+7anSGq9ZZgbNMM
7AQYZePXBfy5F1Ttns7ottkZPQbm7ZefJfFzbqjeOYHIlhmIZIGZXv/hip8vheqd0zG1aXYoR8C8Wvvu xg6AUTK/z+DPvaBq97RHN8z26D4wr5d/lcTPuaF65wQi62YgkgVmeunEFT9fCtU7p21izWxT9oCZWDz2
Gb8nonrntE9mzPb3h8CMr+al8fsM1TundeKb6X93AMzLT7o0fp+heufce7MPvKEPOWliB6J699yd2QPm jN8TUb1zWse/ma1vd4F5vpCXxu8zVO+c5hcZ0/9mB5iRL7o0fp+heufcffUTeEMfc9LEDkT17rnzcguY
+fKpNH6foWr34N/nneld4D1bUj0TdxFVew8+ou31DvD6F09ciTuIKuXjVzZqb09tAe/pwlFJ4iyiqvKD /g+H0vh9hqrdg3+fLdM/gPdkXvVM3EVU7T34iNtT34H3+P2BK3EHUaV8/Eqm9tbkBvAevdsrSZxFVFV+
j2iZyADvSfrgAnEGUUXlwUc0j30F3uPEXpF4hmi1esFHNI2uA+9RbPvcd4ZWqp+bAx9vNA6vgRMavbzg 8BHN46vAe5DeOUOcQVRRefARTWMrwOtLbBWJZ4hWqxd8ROPoEvB6Y5unvjO0Uv1cH/x0rWF4EZzQ6PkF
I24NrYIdGrn84CMaBj8Dj46uLo0jS3X1L1YA0U//cx3i8/0FltEXQTLsVtkAAAAASUVORK5CYII= H3FzaAHs0Mj5Bx9x4+lX4NHRxaXh2Xxd/cBnQPTTVS5DfL5/Ma4XNoG0VecAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

View File

@ -218,6 +218,7 @@
this.chkSizeBmp_SavePath_AutoClear = new System.Windows.Forms.CheckBox(); this.chkSizeBmp_SavePath_AutoClear = new System.Windows.Forms.CheckBox();
this.label43 = new System.Windows.Forms.Label(); this.label43 = new System.Windows.Forms.Label();
this.tabPage9 = new System.Windows.Forms.TabPage(); this.tabPage9 = new System.Windows.Forms.TabPage();
this.cbOpenFlawDistribution = new System.Windows.Forms.CheckBox();
this.ckSkipSizeFailed = new System.Windows.Forms.CheckBox(); this.ckSkipSizeFailed = new System.Windows.Forms.CheckBox();
this.chkSkipSmallAxis = new System.Windows.Forms.CheckBox(); this.chkSkipSmallAxis = new System.Windows.Forms.CheckBox();
this.chkSkipScannerCC = new System.Windows.Forms.CheckBox(); this.chkSkipScannerCC = new System.Windows.Forms.CheckBox();
@ -237,7 +238,7 @@
this.numHttpPort = new System.Windows.Forms.NumericUpDown(); this.numHttpPort = new System.Windows.Forms.NumericUpDown();
this.label49 = new System.Windows.Forms.Label(); this.label49 = new System.Windows.Forms.Label();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); 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.toolStrip1.SuspendLayout();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
@ -2727,6 +2728,7 @@
// //
// tabPage9 // tabPage9
// //
this.tabPage9.Controls.Add(this.cbOpenAxisXCal);
this.tabPage9.Controls.Add(this.cbOpenFlawDistribution); this.tabPage9.Controls.Add(this.cbOpenFlawDistribution);
this.tabPage9.Controls.Add(this.ckSkipSizeFailed); this.tabPage9.Controls.Add(this.ckSkipSizeFailed);
this.tabPage9.Controls.Add(this.chkSkipSmallAxis); this.tabPage9.Controls.Add(this.chkSkipSmallAxis);
@ -2747,6 +2749,17 @@
this.tabPage9.Text = "功能过滤"; this.tabPage9.Text = "功能过滤";
this.tabPage9.UseVisualStyleBackColor = true; 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 // ckSkipSizeFailed
// //
this.ckSkipSizeFailed.AutoSize = true; this.ckSkipSizeFailed.AutoSize = true;
@ -2964,16 +2977,16 @@
this.label49.TabIndex = 4; this.label49.TabIndex = 4;
this.label49.Text = "本机IP"; this.label49.Text = "本机IP";
// //
// cbOpenFlawDistribution // cbOpenAxisXCal
// //
this.cbOpenFlawDistribution.AutoSize = true; this.cbOpenAxisXCal.AutoSize = true;
this.cbOpenFlawDistribution.Location = new System.Drawing.Point(19, 304); this.cbOpenAxisXCal.Location = new System.Drawing.Point(19, 344);
this.cbOpenFlawDistribution.Margin = new System.Windows.Forms.Padding(2); this.cbOpenAxisXCal.Margin = new System.Windows.Forms.Padding(2);
this.cbOpenFlawDistribution.Name = "cbOpenFlawDistribution"; this.cbOpenAxisXCal.Name = "cbOpenAxisXCal";
this.cbOpenFlawDistribution.Size = new System.Drawing.Size(96, 16); this.cbOpenAxisXCal.Size = new System.Drawing.Size(90, 16);
this.cbOpenFlawDistribution.TabIndex = 12; this.cbOpenAxisXCal.TabIndex = 13;
this.cbOpenFlawDistribution.Text = "启用缺陷分布"; this.cbOpenAxisXCal.Text = "启用X轴校准";
this.cbOpenFlawDistribution.UseVisualStyleBackColor = true; this.cbOpenAxisXCal.UseVisualStyleBackColor = true;
// //
// FrmSysSetting // FrmSysSetting
// //
@ -3327,5 +3340,6 @@
private System.Windows.Forms.NumericUpDown numOffset; private System.Windows.Forms.NumericUpDown numOffset;
private System.Windows.Forms.Label label7; private System.Windows.Forms.Label label7;
private System.Windows.Forms.CheckBox cbOpenFlawDistribution; private System.Windows.Forms.CheckBox cbOpenFlawDistribution;
private System.Windows.Forms.CheckBox cbOpenAxisXCal;
} }
} }

View File

@ -50,6 +50,8 @@ namespace ProductionControl
this.ckSkipSizeFailed.Checked = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1"; this.ckSkipSizeFailed.Checked = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1";
this.cbOpenFlawDistribution.Checked = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1"; this.cbOpenFlawDistribution.Checked = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1";
this.cbOpenAxisXCal.Checked = Util.ReadIniValue(configPath, "SKIP", "OpenAxisXCalibration") == "1";
//DEV //DEV
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode"); lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
EnumUtil.BindToEnumName<AxisPulseOutMode>(this.cobAxis0PulseOutMode, typeof(AxisPulseOutMode), lsTmp == "" ? AxisPulseOutMode.O_CW_CCW : (AxisPulseOutMode)Convert.ToInt32(lsTmp)); EnumUtil.BindToEnumName<AxisPulseOutMode>(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", "MarkErrorStop", this.ckSkipSizeFailed.Checked ? "1" : "0");
Util.WriteIniValue(configPath, "SKIP", "OpenFlawDistribution", this.cbOpenFlawDistribution.Checked ? "1" : "0"); Util.WriteIniValue(configPath, "SKIP", "OpenFlawDistribution", this.cbOpenFlawDistribution.Checked ? "1" : "0");
Util.WriteIniValue(configPath, "SKIP", "OpenAxisXCalibration", this.cbOpenAxisXCal.Checked ? "1" : "0");
//DEV //DEV
Utils.Util.WriteIniValue(configPath, "DEV", "Axis0_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis0PulseOutMode)).ToString()); Utils.Util.WriteIniValue(configPath, "DEV", "Axis0_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis0PulseOutMode)).ToString());
Utils.Util.WriteIniValue(configPath, "DEV", "Axis1_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis1PulseOutMode)).ToString()); Utils.Util.WriteIniValue(configPath, "DEV", "Axis1_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis1PulseOutMode)).ToString());

View File

@ -124,16 +124,16 @@
<data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIfSURBVFhH7ZdPaxNBGMbfUBCFSsEvILa0l4K3KoptL9JE YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIeSURBVFhH7ZfLShxBFIaPCJKAIuQFghHdCO5MSFCzES/Z
es6hhLpmZ2Z33q09hH4Db6IXpR+gtUULBb+AN6lHW8GDR2/iWZEo4p93hslmp5kkO5ulEOgDPzaZmffZ zyKIduyq6q7TxoXkDdyJbhQfwEswgYAv4E506QVcZJmduE4IJoRcThU1PV2ZmpmunkYQ/OGjZ6rq/P1P
J7PvbhI4l0MViJIlolYYLqvAk3nj56F6/QKw+A0I/FcKHB8Z55wSuNBjMjp3jXsOcbmYFjL8TJ/gBYh4 9emeGbiXQx0QJePEdGG4nAKeDBk/D1UqXcDiQxD4txQ4rhjnnBI4UmfSPhPGPYe4HEsLGX6hT7ALIt7z
zx+5CyF+0j4P8AtE0ZQ5wxBFyZ00AMcdM1pMXD5OvYQ8NKNDlA0g5EszWkxCPu96ab/AzAxQNgDDV2Y0 R+5AiJ+1zxu8gijqNWdooSgZTQNw3DajxcTlauol5Ccz2kLZAELum9FiEnKz5qX9AjPTRNkADD+Y0fxi
vxg2aeci/ZrjMyvAGv6AMLmq5/pqlACt1iWq+6trlTg+Tb06hPE7mqnoeadGCRCGl6nuG9HW77l8knpZ uEA7F+nXHDesAK/xO4TJYz3XUO0EWF5+SHV/dK0Sx/XUq0oYn9BMh553qp0AYdhDdV+JG/2ey7XUy0K+
yC0975TVA7hvRvMpSSahuvpH1ypZTWjxWs87ZQcYsLCP9G1rmlfgdsary8CdtQOo7bxtZvzE8DrVfs14 0/NOWT2A781oPiVJN0y++q1rlawmtDjQ807ZAZosbCB925rmFbiV8arRdGftAGo7X5gZPzEcptrrjFcN
dfEIoFBN9ZE4pgfMyXBoHccPEAS/TX0vngHKZzwDBMH3QnTuiixeAZSJkPeAsSuFiONZ8jmyPP12gBpr jwAK1VSXxBk9YM5bQ+s4XkAQ/DL19XgGKJ+7GSAIvhWieldk8QqgTIScAcYeFSKOB8jn2PL02wFqrHYl
VAlMLE/PS/CLunoTRHLTGxbfIL9a+rXcYTybsEw8A7TpEtwHvjGnG0od86LWR9EtYPK95Xn2TSjR8vTe MLE8PS/BT+rqJRDJM29Y/JT8ptOv5Sp3swnLxDPADV2CeeCLg7qh1DEvan0UPQcmTy3P229CiZan9w4I
ASHXQYgZaOK0Pp5GjbvgD69RPf3I1Y/onAGyP0pt1HeCH66HkEYemLM5pG4dZ1GZDAoQBBdp0dveopJo OQdC9MMCPtHH/1HjLvjbPqqnH7n6EZ0zQPZHqY36TvDD9RDSyI/mbA6pW8dZVCbNAgTBA1p0VF9UErOz
NH7SLlfN2fqoXp+gxcvUD+6/XUURuKL74lyWAP4DwL5ll9fZEiMAAAAASUVORK5CYII= P2iXp8zZGqhS6aTFL6kf3H+7iiJwUvfFvSwB/AOYeWWRyPCtmgAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

View File

@ -43,6 +43,8 @@ namespace ProductionControl
Process instance = RunningInstance(); Process instance = RunningInstance();
if (instance == null) if (instance == null)
{ {
Application.ThreadException += Application_ThreadException;
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
@ -80,5 +82,21 @@ namespace ProductionControl
//没有其它的例程返回Null //没有其它的例程返回Null
return 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));
}
} }
} }

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示: //通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.1.0")] [assembly: AssemblyVersion("1.2.3.0")]
[assembly: AssemblyFileVersion("1.2.1.0")] [assembly: AssemblyFileVersion("1.2.3.0")]

View File

@ -178,8 +178,8 @@ namespace ProductionControl.UI
private void tsbtnDelectPos_Click(object sender, EventArgs e) private void tsbtnDelectPos_Click(object sender, EventArgs e)
{ {
this.imageBox1.DelectOntPoint(); //this.imageBox1.DelectOntPoint();
this.pickARoi.RemoveAt(pickARoi.Count - 1); //this.pickARoi.RemoveAt(pickARoi.Count - 1);
} }
} }
} }

View File

@ -23,7 +23,7 @@ namespace ProductionControl.UI
[PropertyOrder(1), Browsable(true), Category("1 设备连接"), DisplayName("IP地址"), Description("IP地址"), ReadOnly(true), JsonIgnore] [PropertyOrder(1), Browsable(true), Category("1 设备连接"), DisplayName("IP地址"), Description("IP地址"), ReadOnly(true), JsonIgnore]
public string IP { get;private set; } 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; } public int Port { get; private set; }
// //
[PropertyOrder(12), Browsable(true), Category("2 数据"), DisplayName("厚度值(um)"), Description("厚度值(um)"), ReadOnly(true), JsonIgnore] [PropertyOrder(12), Browsable(true), Category("2 数据"), DisplayName("厚度值(um)"), Description("厚度值(um)"), ReadOnly(true), JsonIgnore]

View File

@ -1,385 +1,385 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 2.0 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes various data types are done through the TypeConverter classes
associated with the data types. associated with the data types.
Example: Example:
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value> <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment> <comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
name/value pairs. name/value pairs.
Each data row contains a name, and value. The row also contains a Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture. text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the Classes that don't support this are serialized and stored with the
mimetype set. mimetype set.
The mimetype is used for serialized objects, and tells the The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly: extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below. read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64 mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
--> -->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata"> <xsd:element name="metadata">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" /> <xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="assembly"> <xsd:element name="assembly">
<xsd:complexType> <xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" /> <xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:choice> </xsd:choice>
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
</xsd:schema> </xsd:schema>
<resheader name="resmimetype"> <resheader name="resmimetype">
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tsbtnOpenDev.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnOpenDev.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
Q3Avr38BbOOdOnShK0wAAAAASUVORK5CYII= h+BeXv8CTiWdOACz1MoAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIgSURBVFhH7Zc/SxxBGMZfCUiEiOAXCFFiI9iZYPBPI2oK YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIgSURBVFhH7ZdPS9xAGMZfKUiFiuAXKFXqRfBmi8U/F1EL
C4srRMzGnZndeTexEL+BXUiaSD5AEsUEBL+AnWhpFCxSphPrSDASEn1nmNvbyc3d7ewtguADP/ZuZt5n HrzsQcSmZmaSedN6EL+Bt9JeKv0AbRVbEPwC3kSPVsFDj72J50qxUlp9Z5jNZrqzu5lsEAQf+JHdmXmf
n5t9d+8O7uRQB0TJODFTGC6ngSeDxs9DlUonsHgXBF6VAsc145xTAofrTNpn0rjnEJdjaSHDH/QJPoOI PDt5k92FOznUAVEyTswUhstp4Mmg8fNQpdIJLN4FgVelwHHNOOeUwOE6k/aZNO45xOVYWsjwB32CzyDi
N/yRnyDE79rnJZ5CFPWYM7RQlIymATh+NKPFxOWb1EvIbTPaQtkAQm6Z0WIScr3mpf0CM9NE2QAMv5jR DX/kJwjxu/Z5iacQRT3mDC0UJaNpAI4fzWgxcfkm9RJy24y2UDaAkFtmtJiEXK95ab/AzDRRNgDDL2Y0
/GK4RDsX6dcc31sB5vEXhMlDPddQ7QRYWemiun+6Vonju9SrShgf0EyHnneqnQBh2E11P4kL/Z7Lt6mX vxgu0c5F+jXH91aAefwFYfJQzzVUOwFWVrqo7p+uVeL4LvWqEsYHNNOh551qJ0AYdlPdT+JCv+fybepl
hVzV805ZPYCbZjSfkuQBzM791bVKVhNa7Oh5p+wATRY2kL5tTfMK/JDxqtF0Z+0AajufmRk/MRyi2rOM IVf1vFNWD+CmGc2nJHkAs3N/da2S1YQWO3reKTtAk4UNpG9b07wCP2S8ajTdWTuA2s5nZsZPDIeo9izj
Vw2PAArVVCfEN3rAHLWG1nE8hiD4Y+rr8QxQPrczQBCcF6J6V2TxCqBMhHwOjPUWIo4fk8++5em3A9RY VcMjgEI11QnxjR4wR62hdRyPIQj+mPp6PAOUz+0MEATnhajeFVm8AigTIZ8DY72FiOPH5LNvefrtADVW
7UpgYnl6XoJL6uplEMlTb1j8hPxm0q/lKrezCcvEM8AFXYIXwF8N6IZSx7yo9VE0AkweWp4334QSLU/v uxKYWJ6el+CSunoZRPLUGxY/Ib+Z9Gu5yu1swjLxDHBBl+AF8FcDuqHUMS9qfRSNAJOHlufNN6FEy9N7
HRByEYTohyXs08f/UeMu+OtHVE8/cvUjOmeA7I9SG/Wd4IfrIaSRX83ZHFK3jrOoTJoFCIL7tGivvqgk B4RcBCH6YQn79PF/1LgL/voR1dOPXP2Izhkg+6PURn0n+OF6CGnkV3M2h9St4ywqk2YBguA+LdqrLyqJ
FhZ+0y5Pm7M1UKVyjxZPUD+4/3YVReCU7os7WQK4BrJrZbt+as2+AAAAAElFTkSuQmCC hYXftMvT5mwNVKnco8UT1A/uv11FETil++JOlgCuAYomZbUlhJ9KAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="tbtnRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF
Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E
+3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP +3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP
8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx 8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx
3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64 3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64
eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx
1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt 1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt
jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6 jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6
Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="tbtnStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
</value> </value>
</data> </data>
<data name="toolStripDropDownButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="toolStripDropDownButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHZSURBVFhHxZZRTsMwDIZ3D0DiKLyPreIGHGU3GVskOAZH YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHZSURBVFhHxZZRTsMwDIZ3D0DiKLyPreIGHGU3GVskOAZH
AF54QuIg7TryJXYW2rTL1rX7JatNasd/7D/ZZkOw3Oxe5XV6kHxpqk8ZTguSF2a3vwoBTY49mvKH53xb AF54QuIg7TryJXYW2rTL1rX7JatNasd/7D/ZZkOw3Oxe5XV6kHxpqk8ZTguSF2a3vwoBTY49mvKH53xb
/mJLs1sXpnwQ13FQvNV3ham+SLww5XexrZ5J7JN7YpCxz5WEXB5Ppr6l/M0WFOv9PRVYbKr3QMTOyefL /mJLs1sXpnwQ13FQvNV3ham+SLww5XexrZ5J7JN7YpCxz5WEXB5Ppr6l/M0WFOv9PRVYbKr3QMTOyefL
AhKLbfUhwxaojLZmtGrMX+obeU2C3VMNR8ISkulpAQn04SsxskC7AAlth0xNDy9Qd0rGOx3HoK2Q4X8g AhKLbfUhwxaojLZmtGrMX+obeU2C3VMNR8ISkulpAQn04SsxskC7AAlth0xNDy9Qd0rGOx3HoK2Q4X8g
ktGOjCBUISXIzg8JICbdjTvzJ5DHH5Ohh1sAAhmLBN+GOSI58VYDrTb09iZCKGG3HRUY1XO+MVkItMqS ktGOjCBUISXIzg8JICbdjTvzJ5DHH5Ohh1sAAhmLBN+GOSI58VYDrTb09iZCKGG3HRUY1XO+MVkItMqS
AAmiZEkT104EAvGdcHUCSWEk0NV/taw2plpgJ9rCSIAg/OKkDTuugZTglZUMe0GSFImcCgLajb8MPYK6 AAmiZEkT104EAvGdcHUCSWEk0NV/taw2plpgJ9rCSIAg/OKkDTuugZTglZUMe0GSFImcCgLajb8MPYK6
LTuZ6oX4r0jqFsyMA5AnRoYH5OpgCEL/U4QPAhvvJ5MNtsofA4ccMZ6D3t0rglOGmk+BaixrcyQXlV+E LTuZ6oX4r0jqFsyMA5AnRoYH5OpgCEL/U4QPAhvvJ5MNtsofA4ccMZ6D3t0rglOGmk+BaixrcyQXlV+E
BMm19NntJbkPGEbirORAjxmBbgE7lk/Z0HhfzTOFTSALYP4C6V9IiUsLsy+nXjQX5cnCcqOxyxXvh1IP BMm19NntJbkPGEbirORAjxmBbgE7lk/Z0HhfzTOFTSALYP4C6V9IiUsLsy+nXjQX5cnCcqOxyxXvh1IP
3HUXPBH/T4hkMSEl5Qid1K7Z7A9DvptolGL+2gAAAABJRU5ErkJggg== 3HUXPBH/T4hkMSEl5Qid1K7Z7A9DvptolGL+2gAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tbtnHome.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnHome.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAARwSURBVFhH1ZZtTFNXGMePwLrpmG9b5ggGppHgHNlMutmN YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARwSURBVFhH1ZZtTFNXGMePwLrpmG9b5ggGppHgHNlMutmN
sLiwbJqxl8TEDy5ZFgMKdPUFcVCBUqDQuRk/zqHTsJdoGJhsRRyI1IuWQq/0ZUBnYQ1IkMiodFgKHUXa sLiwbJqxl8TEDy5ZFgMKdPUFcVCBUqDQuRk/zqHTsJdoGJhsRRyI1IuWQq/0ZUBnYQ1IkMiodFgKHUXa
Z+fCsXh77y0v6gf/zf/D7T3n+Z2X5znnoidaSuOmmBLTRjF5fLw63vLWUrVJ8onKJK5QGjY5SowJUGx8 Z+fCsXh77y0v6gf/zf/D7T3n+Z2X5znnoidaSuOmmBLTRjF5fLw63vLWUrVJ8onKJK5QGjY5SowJUGx8
BYra4kB5fT0UXo8FBb1Wq2iNkucb1qwj3R5eVVU7w8vMiZlKwxZHqUkMKtNm4IMX0mtBYYiCAsOLkN/6 BYra4kB5fT0UXo8FBb1Wq2iNkucb1qwj3R5eVVU7w8vMiZlKwxZHqUkMKtNm4IMX0mtBYYiCAsOLkN/6
POQ1rzgrb1m+gYRZnEraE+PxrLvKzBJYELxlFRxpWQ5SKtKbq1smJ+EWJrUpabuaftO9WLhcHwny5mWQ POQ1rzgrb1m+gYRZnEraE+PxrLvKzBJYELxlFRxpWQ5SKtKbq1smJ+EWJrUpabuaftO9WLhcHwny5mWQ
27wUcnSiCqUViUjouVVmTtqqphK9jwb+NHx1TQTZVEQlCR9aqj/fWae2bHHMBT9ukcD3ndvgpPVD+K4j 27wUcnSiCqUViUjouVVmTtqqphK9jwb+NHx1TQTZVEQlCR9aqj/fWae2bHHMBT9ukcD3ndvgpPVD+K4j
OST88NWnsCPgUFNYPsEIS21JbBKCM/79Zg4Mjt8Af9Bv/J4TDP+cgaNt8bzw7KZwOESFwQEKbSYorkot OST88NWnsCPgUFNYPsEIS21JbBKCM/79Zg4Mjt8Af9Bv/J4TDP+cgaNt8bzw7KZwOESFwQEKbSYorkot
b6cIwY/hGd8aM2HUVEh7fW441/U5LzzryhI4qF3SQHBclZolRj74N+Y3wDnRCz6YnLcru3bzweFAIwLZ b6cIwY/hGd8aM2HUVEh7fW441/U5LzzryhI4qF3SQHBclZolRj74N+Y3wDnRCz6YnLcru3bzweFAIwLZ
JZRMkLP62iQRC+25baQOz+0/jm972qHPrQfP1DDnndfvgmNtr3Hg+y9P+2eCnZXKKJbzwX/s2gX3YJxl JZRMkLP62iQRC+25baQOz+0/jm972qHPrQfP1DDnndfvgmNtr3Hg+y9P+2eCnZXKKJbzwX/s2gX3YJxl
u0sL35oSWAmn6c0Cj8/Jatd+p5oPDtIG5CTYWamMr2uC4Uy2m4fP4QUdDbh/zAAFuOT4sr2yezer7YR/ u0sL35oSWAmn6c0Cj8/Jatd+p5oPDtIG5CTYWamMr2uC4Uy2m4fP4QUdDbh/zAAFuOT4sr2yezer7YR/
BPKurWbB9zVMbwFj9nFdQifYg+FMnQ9P2mECRgIut34QstR6RptY7U93fMqBf1k/7fcJekbFxrjBYHgR BPKurWbB9zVMbwFj9nFdQifYg+FMnQ9P2mECRgIut34QstR6RptY7U93fMqBf1k/7fcJekbFxrjBYHgR
HYN3czjgMf8grvUVgnAm4Rr7Vaw+1d1SDlxahyDjIvqMoGekNMQ5HoQzJ5ySjgYPDAXs9g/AEf1zIev8 HYN3czjgMf8grvUVgnAm4Rr7Vaw+1d1SDlxahyDjIvqMoGekNMQ5HoQzJ5ySjgYPDAXs9g/AEf1zIev8
cn8xq091dwYHnvkHzwDy6Vj7g/D7x+vQZAdOp9sBn+h8VxDOJNzfo/Ws9qfaP+LAMy8i2FuLthP0jBR0 cn8xq091dwYHnvkHzwDy6Vj7g/D7x+vQZAdOp9sBn+h8VxDOJNzfo/Ws9qfaP+LAMy8i2FuLthP0jBR0
rIbvbDfcKQc33Aq4Z6wR5LpneeG/2Hax2rr8fZBzZSUHjmcPaZqgJFTQ0XK+i6Xc+h7O5z6WO+9WQSn9 rIbvbDfcKQc33Aq4Z6wR5LpneeG/2Hax2rr8fZBzZSUHjmcPaZqgJFTQ0XK+i6Xc+h7O5z6WO+9WQSn9
cgCOLxr4rWcfjPjsrHa04wdeeLqGpwwxXCx0qxmdZ8AFvRzf9FBgG62Bf33dnHfMf0rdei68Fi//BVRB cgCOLxr4rWcfjPjsrHa04wdeeLqGpwwxXCx0qxmdZ8AFvRzf9FBgG62Bf33dnHfMf0rdei68Fi//BVRB
sGzl6VcZ+W61IsNLGKaFu2Cft0+1f8wLT7+AYE8N2kqQbOXpV6YIXalFrVFgdf2KK7s7pIemLHDCsk0Q sGzl6VcZ+W61IsNLGKaFu2Cft0+1f8wLT7+AYE8N2kqQbOXpV6YIXalFrVFgdf2KK7s7pIemLHDCsk0Q
nlaD6giOX3JdpDZUnf9k2wE3Rs9jmI3lAa8eLvUXQi71giB8bw2aSqsNcR0zytU9E5PdLHKEKjXmbC/Q nlaD6giOX3JdpDZUnf9k2wE3Rs9jmI3lAa8eLvUXQi71giB8bw2aSqsNcR0zytU9E5PdLHKEKjXmbC/Q
rYGj9KvTLmvdyFtqQXDG8/s+xINIklIirxCc72yfC47L7iwJPz9lXw1PPkxFOB8FHCddxc6qBXyU3lcW rYGj9KvTLmvdyFtqQXDG8/s+xINIklIirxCc72yfC47L7iwJPz9lXw1PPkxFOB8FHCddxc6qBXyU3lcW
hTYcpML+Wiw8tQZ59miQjIRbnPDIw/c3olRZPRpYCBzP+jSefQwJ8/BS4iWUNaAU7JMYbg+Gf1GL3Om4 hTYcpML+Wiw8tQZ59miQjIRbnPDIw/c3olRZPRpYCBzP+jSefQwJ8/BS4iWUNaAU7JMYbg+Gf1GL3Om4
xDBchh1Nuj1epdaj1Rl1KJ48PolC6H+BVsJLPWxk5wAAAABJRU5ErkJggg== xDBchh1Nuj1epdaj1Rl1KJ48PolC6H+BVsJLPWxk5wAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tbtnJogOnOff.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnJogOnOff.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHISURBVFhH7dfJLwNhGAbwsYRGJEgkEomDxMFB4uDgIHGQ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHISURBVFhH7dfJLwNhGAbwsYRGJEgkEomDxMFB4uDgIHGQ
OEiE/4Gq2ndKUbuq/8W+L0XVrmhPEomDg4NLSSNE8DB0api387VNfRfe5LnMHH7PN8uXfML//ByLq8Rk OEiE/4Gq2ndKUbuq/8W+L0XVrmhPEomDg4NLSSNE8DB0api387VNfRfe5LnMHH7PN8uXfML//ByLq8Rk
cRVjzFkEs7MQ5rMCjJ7mY+Q0D8MnuRhy5GDQkY2B4yz0H2Wi7ygDpsN09B6koecgFd37KTDuJaNrLwmd cRVjzFkEs7MQ5rMCjJ7mY+Q0D8MnuRhy5GDQkY2B4yz0H2Wi7ygDpsN09B6koecgFd37KTDuJaNrLwmd
uwkw7MTDYI9Dh12DdluMycvQM+4qxa/h27Fos8WgdSsaXu77/OrKZXjLZhSarZHKJ8EN34hE03u87Nfw uwkw7MTDYI9Dh12DdluMycvQM+4qxa/h27Fos8WgdSsaXu77/OrKZXjLZhSarZHKJ8EN34hE03u87Nfw
xButEcoCPPHGdaoAR7xhTVAW4InXrxIFeOJ1K0SBcOLiqOG1y0SBcOGvePmIGl6zRBQIB/6CJ1/U8OpF xButEcoCPPHGdaoAR7xhTVAW4InXrxIFeOJ1K0SBcOLiqOG1y0SBcOGvePmIGl6zRBQIB/6CJ1/U8OpF
ogALf8aDX7xn5/O+PGp41QJRgLXyJ3g+8hNvt2l89+RRw/XzRAHWY3+E2xc5Lr8uhYXr54gCrHf+gJtv ogALf8aDX7xn5/O+PGp41QJRgLXyJ3g+8hNvt2l89+RRw/XzRAHWY3+E2xc5Lr8uhYXr54gCrHf+gJtv
MdoTFdfEBIJXzhIFWB/cPa6ZCRTXUQXUcOmde3DlN8HguhmiAAuXfrU7XCoSLF4xTRQIBJe211tc+BIK MdoTFdfEBIJXzhIFWB/cPa6ZCRTXUQXUcOmde3DlN8HguhmiAAuXfrU7XCoSLF4xTRQIBJe211tc+BIK
rqUKBIpLO5wb5yHj2imiQDA4a5Nh4eWTRAGeOF2AI04W4ImTBcRDAy+8bEKgDyg8cDFejh7x0MB95X94 rqUKBIpLO5wb5yHj2imiQDA4a5Nh4eWTRAGeOF2AI04W4ImTBcRDAy+8bEKgDyg8cDFejh7x0MB95X94
BOENt7Qt5r1VNxkAAAAASUVORK5CYII= BOENt7Qt5r1VNxkAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="tbtnLeft.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnLeft.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHlSURBVFhH7dfZK0RRHAfwYwlJSSmlPCgPHpQHDx6UB+VB YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHlSURBVFhH7dfZK0RRHAfwYwlJSSmlPCgPHpQHDx6UB+VB
if/Bvu/7NvZl/CHe7LsxGMNgrPMiSUkpKdmzz88ZOTXO73LPPbgv/Kbv8+d77u/MrUv+h5+0fmJIHyDg if/Bvu/7NvZl/CHe7LsxGMNgrPMiSUkpKdmzz88ZOTXO73LPPbgv/Kbv8+d77u/MrUv+h5+0fmJIHyDg
noxBmiECmTRZwzQjBLJpckZpxgjkjhPImyCQP0mgYIpA4TSBohkCxSYCJbMeUGL2gNI5TygzexreGeXh noxBmiECmTRZwzQjBLJpckZpxgjkjhPImyCQP0mgYIpA4TSBohkCxSYCJbMeUGL2gNI5TygzexreGeXh
4R/FacrnvaBiwRveuY/zqyd3wystPlBl8cFPQjd80ReqrX74KeiJ11j9Py8gi5/D7ltMxy2qeM1SgHIB 4R/FacrnvaBiwRveuY/zqyd3wystPlBl8cFPQjd80ReqrX74KeiJ11j9Py8gi5/D7ltMxy2qeM1SgHIB
eXzvQ9Tw2uVAXEAWv4B9FDW8zhakUEACv4QDFBG83haMC2jFr+AQRRRvWAnBBbTg13CEogVvXA1VKCCI eXzvQ9Tw2uVAXEAWv4B9FDW8zhakUEACv4QDFBG83haMC2jFr+AQRRRvWAnBBbTg13CEogVvXA1VKCCI
38Axila8aTUMFxDBb+EERQY3rIXjAmr4HZyiyOLN9giFAl/grjfcPZyhyOIt9khc4CucvV4f6L+cjwze 38Axila8aTUMFxDBb+EERQY3rIXjAmr4HZyiyOLN9giFAl/grjfcPZyhyOIt9khc4CucvV4f6L+cjwze
uh6FC6jh7PX6SO88H61420Y0LiCCs50/0evHRwvevhGDC4jibOfP9BbwEcU7NmNxAS042/kLXQAfEbxz uh6FC6jh7PX6SO88H61420Y0LiCCs50/0evHRwvevhGDC4jibOfP9BbwEcU7NmNxAS042/kLXQAfEbxz
Kw4X0IqznTvp2fmo4V1b8biADM527uR+anj3dgIuIIuznbNZP+1Txbt3EhUKfAMX2bk73rOThAvoiRsd Kw4X0IqznTvp2fmo4V1b8biADM527uR+anj3dgIuIIuznbNZP+1Txbt3EhUKfAMX2bk73rOThAvoiRsd
ybiA66NBL9zoSFH+QNED73Wk4tO7j+ujQfeT/+Eh5BVDb1Kg4N0zSAAAAABJRU5ErkJggg== ybiA66NBL9zoSFH+QNED73Wk4tO7j+ujQfeT/+Eh5BVDb1Kg4N0zSAAAAABJRU5ErkJggg==
</value> </value>
</data> </data>
<data name="tbtnRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHVSURBVFhH7dfJK0VhGAbwYwhJSSmlLJSFhbKwsFAWykKJ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHVSURBVFhH7dfJK0VhGAbwYwhJSSmlLJSFhbKwsFAWykKJ
/8E8z/N0zeMfYmee53nmcjeSlJSSkjmzh6N7MrxvzvcdORve27P+Pd95b199yv98nVZbjKXVFo2WrSg0 /8E8z/N0zeMfYmee53nmcjeSlJSSkjmzh6N7MrxvzvcdORve27P+Pd95b199yv98nVZbjKXVFo2WrSg0
b0WieTMCTdZwNFrD0LARivr1ENStB6N2LQg1q4GoXg2AZcUfVct+qFz2RcWSD8oXvVG26IXSBU+UzHug b0WieTMCTdZwNFrD0LARivr1ENStB6N2LQg1q4GoXg2AZcUfVct+qFz2RcWSD8oXvVG26IXSBU+UzHug
ZM4dxXNuKJpxsdgZftpssfg1fNYVhTMuKJh2hp37PL968g94/pQT8iYc6ZcwDZ90RO5r7Oz7mInnTDjQ ZM4dxXNuKJpxsdgZftpssfg1fNYVhTMuKJh2hp37PL968g94/pQT8iYc6ZcwDZ90RO5r7Oz7mInnTDjQ
AiL42nE7tPkJnjPOFRA4+fOXn1E8e0yhBUQ++zMeSYzgWaNMAdGdP+GeRBbPHGEKyPzhHnFLIoNnDDMF AiL42nE7tPkJnjPOFRA4+fOXn1E8e0yhBUQ++zMeSYzgWaNMAdGdP+GeRBbPHGEKyPzhHnFLIoNnDDMF
RHFt5w+4JhHF04eYAjK4tvN7XJKI4GmDTAFZXNv5Hc5I9PDUAaaAEVzb+S1OSL7DU/qZAkZxdec3OCb5 RHFt5w+4JhHF04eYAjK4tvN7XJKI4GmDTAFZXNv5Hc5I9PDUAaaAEVzb+S1OSL7DU/qZAkZxdec3OCb5
Dk/pYwoYxa9xRKKHJ/cyBYzgVzgkEcGTuAKy+CUOSETxpB6mgAx+gX0SGTyxmykgip9jj0QWT+AKiOBn Dk/pYwoYxa9xRKKHJ/cyBYzgVzgkEcGTuAKy+CUOSETxpB6mgAx+gX0SGTyxmykgip9jj0QWT+AKiOBn
2CUxgid0MQX0cPWGO8XOpxjF4zuZAnq4er2OHda8wttv+QnOF9DBRa5XUZwtYCbOFlAfDWbhcR0K/0Ax 2CUxgid0MQX0cPWGO8XOpxjF4zuZAnq4er2OHda8wttv+QnOF9DBRa5XUZwtYCbOFlAfDWbhcR0K/0Ax
A1dj5/hRHw2mn/wPj6K8APh2UqDO6R6xAAAAAElFTkSuQmCC A1dj5/hRHw2mn/wPj6K8APh2UqDO6R6xAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
AAAAAElFTkSuQmCC AAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
QyDwD5znNAxEqPI/AAAAAElFTkSuQmCC QyDwD2y3NAccDi03AAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="tsbtnScannerList.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnScannerList.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGZSURBVFhH7VTBccMwDPMmbdJFOko26LVeoJtkiMTXZ0fp YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGZSURBVFhH7VTBccMwDPMmbdJFOko26LVeoJtkiMTXZ0fp
KC1BkxGswI5zsfsy7nBRJIigSMnNhg1LYde1x935/XvArv18+np7Dsl6gNG+a38VsRay29ifPw7YcC+V KC1BkxGswI5zsfsy7nBRJIigSMnNhg1LYde1x935/XvArv18+np7Dsl6gNG+a38VsRay29ifPw7YcC+V
MZO1L6f2NeyGmBNoKcIrbAuUcE2GbYESOU/tj5x/kGFbcCUyY8yjZ2sk4aaMWmB9OsZSoxLAOi5tPjMk MZO1L6f2NeyGmBNoKcIrbAuUcE2GbYESOU/tj5x/kGFbcCUyY8yjZ2sk4aaMWmB9OsZSoxLAOi5tPjMk
6vdoZrIemKFECOhGPGfve/QmG5BQvUcx5AVKdMVoC+BGlkzOg0g4lmXVmCErUKKaeXK/F/YfhhgjGbSD 6vdoZrIemKFECOhGPGfve/QmG5BQvUcx5AVKdMVoC+BGlkzOg0g4lmXVmCErUKKaeXK/F/YfhhgjGbSD
k/C5iSSgGUCJBrRgIXWtaoOb0tpUK3wDQ4mYCOa6/mt5uaA1UAG0BmOviogFupihRMwsLcxzrODtiWpl k/C5iSSgGUCJBrRgIXWtaoOb0tpUK3wDQ4mYCOa6/mt5uaA1UAG0BmOviogFupihRMwsLcxzrODtiWpl
qxRdzFAiZp6aT6jAFVq2AmGaJ0S/fWMFfxlm7GNLVsUCXcxQopppihPWSWCMea7Osq/AmMHDrP/qGf3U qxRdzFAiZp6aT6jAFVq2AmGaJ0S/fWMFfxlm7GNLVsUCXcxQopppihPWSWCMea7Osq/AmMHDrP/qGf3U
tA5MnR4MWYESKSJwnhy/3mcjP8upy5cMaYESjREn5fIzshq3GPICJZpDGOadUOtjDNuCewM8yrAt+M8E tA5MnR4MWYESKSJwnhy/3mcjP8upy5cMaYESjREn5fIzshq3GPICJZpDGOadUOtjDNuCewM8yrAt+M8E
+LJewM9oVcZHasOGHk3zB26It08saVcbAAAAAElFTkSuQmCC +LJewM9oVcZHasOGHk3zB26It08saVcbAAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<data name="tsbtnStopRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="tsbtnStopRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
</value> </value>
</data> </data>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>332, 17</value> <value>332, 17</value>
</metadata> </metadata>
</root> </root>

View File

@ -168,7 +168,7 @@ namespace ProductionControl.UI
switch (propertyName) switch (propertyName)
{ {
case "ChannelIndex": case "ChannelIndex":
if((int)newValue <1 || (int)newValue >4) if((int)newValue <1 || (int)newValue >6)
{ {
prop.ChannelIndex = (int)oldValue; prop.ChannelIndex = (int)oldValue;
this.refreshUI(); this.refreshUI();

View File

@ -145,7 +145,7 @@
<el-table-column v-if="CustomerVer!='A'" fixed label="合格" width="80"> <el-table-column v-if="CustomerVer!='A'" fixed label="合格" width="80">
<template #default="scope"> <template #default="scope">
<el-tag size="small" <el-tag size="small"
:type="scope.row.Qualified == 1 ? 'success' : 'danger'" :type="scope.row.Qualified==1 ? 'success' : 'danger'"
disable-transitions disable-transitions
>{{ formatQualified(scope.row) }}</el-tag> >{{ formatQualified(scope.row) }}</el-tag>
</template> </template>
@ -154,7 +154,7 @@
<el-table-column fixed label="修复" width="80" > <el-table-column fixed label="修复" width="80" >
<template #default="scope"> <template #default="scope">
<el-tag size="small" <el-tag size="small"
:type="scope.row.State===5?'success':scope.row.State===10?'danger':'primary'" :type="scope.row.State==5?'success':scope.row.State==10?'danger':'primary'"
disable-transitions disable-transitions
>{{formatRepairfied(scope.row)}}</el-tag> >{{formatRepairfied(scope.row)}}</el-tag>
</template> </template>
@ -774,7 +774,7 @@ const openHistoryView=(id)=>{
const reCheckQualified=(pInfo,orderRow)=> { const reCheckQualified=(pInfo,orderRow)=> {
let upperLimit, lowerLimit let upperLimit, lowerLimit
console.log('reCheckQualified start...') console.log('reCheckQualified start...')
orderRow.Qualified=(orderRow.CompareResult!==2) orderRow.Qualified&=(orderRow.CompareResult!==2)
//Tension 1-5 //Tension 1-5
upperLimit = pInfo.TensionBaseValue + pInfo.TensionUpFloatValue upperLimit = pInfo.TensionBaseValue + pInfo.TensionUpFloatValue
lowerLimit = pInfo.TensionBaseValue - pInfo.TensionDownFloatValue lowerLimit = pInfo.TensionBaseValue - pInfo.TensionDownFloatValue

View File

@ -114,6 +114,10 @@ namespace Models
//抓取点位 //抓取点位
[SugarColumn(IsNullable = true)] [SugarColumn(IsNullable = true)]
public string GetPointList { get; set; } public string GetPointList { get; set; }
//2023-12-18 加入mark干扰判断是否主栅
public int MarkDisturb { get; set; }
public int MainGrid { get; set; }
} }
/// <summary> /// <summary>
/// 结束的批次才加入 /// 结束的批次才加入

27
更新日志.txt Normal file
View File

@ -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点选项