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

View File

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

View File

@ -6,6 +6,7 @@ using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Newtonsoft.Json.Linq;
using ProductionControl.Utils;
@ -27,6 +28,9 @@ namespace ProductionControl
public static bool OpenMarkErrorStop;
//启用缺陷分布功能
public static bool OpenFlawDistribution;
//启用X轴校准 2023-12-20
public static bool OpenAxisXCalibration;
//DEV
public static int[] Axis_PulseOutMode=new int[4];
public static int[] Axis_MM2PulseNum = new int[4] { 5000, 5000, 5000, 1000};//1mm对应脉冲数
@ -106,19 +110,19 @@ namespace ProductionControl
//
if (Defect_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_SavePath, Defect_SavePath_AutoClear, false);
DeleteFiles(Config.Defect_SavePath, Defect_SavePath_AutoClear, true);
if (Defect_Compress_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_Compress_SavePath, Defect_Compress_SavePath_AutoClear, false);
DeleteFiles(Config.Defect_Compress_SavePath, Defect_Compress_SavePath_AutoClear, true);
if (Defect_Small_SavePath_AutoClear >= 0)
DeleteFiles(Config.Defect_Small_SavePath, Defect_Small_SavePath_AutoClear, false);
DeleteFiles(Config.Defect_Small_SavePath, Defect_Small_SavePath_AutoClear, true);
//
if (SizeBmp_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_SavePath, SizeBmp_SavePath_AutoClear, false);
DeleteFiles(Config.SizeBmp_SavePath, SizeBmp_SavePath_AutoClear, true);
if (SizeBmp_Compare_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_Compare_SavePath, SizeBmp_Compare_SavePath_AutoClear, false);
DeleteFiles(Config.SizeBmp_Compare_SavePath, SizeBmp_Compare_SavePath_AutoClear, true);
if (SizeBmp_Zoom_Image_SavePath_AutoClear >= 0)
DeleteFiles(Config.SizeBmp_Zoom_Image_SavePath, SizeBmp_Zoom_Image_SavePath_AutoClear, false);
DeleteFiles(Config.SizeBmp_Zoom_Image_SavePath, SizeBmp_Zoom_Image_SavePath_AutoClear, true);
});
}
@ -198,6 +202,7 @@ namespace ProductionControl
OpenMarkErrorStop = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1";
OpenFlawDistribution = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1";
OpenAxisXCalibration = Util.ReadIniValue(configPath, "SKIP", "OpenAxisXCalibration") == "1";
//DEV
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[0] = Convert.ToInt32(lsTmp);
@ -343,32 +348,62 @@ namespace ProductionControl
/// <param name="dirPath"></param>
/// <param name="days"></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);
API.OutputDebugString($"清除{delDate.ToString("yyyyMMdd")}前记录:{dirPath}。");
string[] file_list = Directory.GetFiles(dirPath);
if(days>0)
file_list = file_list.Select(file => new FileInfo(file))
.Where(f=>f.CreationTime<= delDate)
//删除dirPath中的过期文件
string[] files_list = Directory.GetFiles(dirPath);
if (days > 0)
files_list = files_list.Select(file => new FileInfo(file))
.Where(f => f.CreationTime <= delDate)
.Select(x => x.FullName)
.ToArray();
foreach (string file in file_list)
foreach (string file in files_list)
{
try {
try
{
API.OutputDebugString($"清除文件:{file}...");
File.Delete(file);
} catch(Exception ex) {
}
catch (Exception ex)
{
API.OutputDebugString($"Ex1:{ex.Message}");
}
}
string[] dirsList = Directory.GetDirectories(dirPath, "20*");
foreach (string dir in dirsList)
{
string[] file_list = Directory.GetFiles(dir);
if (days > 0)
file_list = file_list.Select(file => new FileInfo(file))
.Where(f => f.CreationTime <= delDate)
.Select(x => x.FullName)
.ToArray();
foreach (string file in file_list)
{
try {
API.OutputDebugString($"清除文件:{file}...");
File.Delete(file);
} catch (Exception ex) {
API.OutputDebugString($"Ex1:{ex.Message}");
}
}
}
//
if (delDir)
{
int dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd"));
int dateNum = 0;
if (days > 1)
dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd"));
else if (days > 0)
dateNum = Convert.ToInt32(delDate.ToString("yyyyMMdd")) - 1;
string floderName;
string[] dirList = Directory.GetDirectories(dirPath,"20*");
foreach (string dir in dirList)
@ -391,5 +426,41 @@ namespace ProductionControl
}
}
public static long GetHardDiskSpace(string str_HardDiskName)
{
long result = 0L;
try
{
str_HardDiskName += ":\\";
DriveInfo[] drives = DriveInfo.GetDrives();
DriveInfo[] array = drives;
foreach (DriveInfo driveInfo in array)
{
if (driveInfo.Name == str_HardDiskName)
{
result = driveInfo.TotalFreeSpace / 1073741824;
}
}
}
catch {
result = 0;
}
return result;
}
public static bool CheckDisk(int max = 10)
{
string path = Config.Defect_SavePath;
string volume = path.Substring(0, path.IndexOf(':'));
long freespace = GetHardDiskSpace(volume);
if (freespace < max)
{
string tip = $"当前{volume}硬盘容量:{freespace}GB小于{max}GB。注意清理";
MessageBox.Show(tip, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
return true;
}
}
}

View File

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

View File

@ -159,7 +159,7 @@
this.Name = "FrmLogin";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "自动化视觉检测系统 - v1.2.1";
this.Text = "自动化视觉检测系统 - v1.2.3";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmLogin_FormClosed);
this.Load += new System.EventHandler(this.FrmLogin_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();

View File

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

View File

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

View File

@ -643,20 +643,20 @@
<value>
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
</value>
</data>
<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
x/7nqf//l632H+iA/1+i5f6/DpC89MJVpOiRhQwnVDl1wbH6wmUPAjT/fwyV+Q90wH90B7wLkPr/wlX0
/0MbgRv3THjVodqoBx6Y8f1/7iRC0AFPbAT/3zfl+nzflCcQqhUveOkm2gtl4gekOOChOf9/kPpHFgIz
gdEmATUCBfzLUlb5Fiu/EeiA/1Ah/IAsB1gK/L/vwPX5pbvo3vfBUu1f4xXSfqcpN/7NUVv3Jlftz7dY
gdEmATUCBfzLUlb5Fiu/EeiA/1Ah/IAsB1gK/L/vwPX5pbvo3vfBUu1f4xXSfqcpN/7NUVv3Klftz7dY
hf80d8AzB+H/rz3F/38Ilv7/LU4BrPdfrhoYjzpg1AGjDhh1wNB3wM9s1ee/UhSv0s0BT92k/l8uDfkP
LM89/tdrsUGlGP6HarG9CZAxA7YHJgMd8JMmDrgU7/Z/44o1/+es34NXwxMrfoOH5tz3qO6A9QdO/1+x
8yhBB4DAXWNB/vumvDMJOeBLrDyopoyFasMPSHEADDyyEPR4Ziv8BN0BH5LVvv3NUZ32PUZOEaqUMCDH
ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAIoH3zw7A9x2
ATDwzkdS7l2glB/QwuRfmcrG/wrJaDdS4gCqgFEHjDpg3YFT9WAHrNtTDxUaBcMZMDAAAHCV3zql/rK2
AAAAAElFTkSuQmCC
</value>
</data>
@ -677,61 +677,61 @@
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALjSURBVFhH7ZbpS1RRHIZvTU0mQgRFEPSHBAUVbVhkm1pp
mWZmOjrjMs64t0JfIooyx9z3ZVxzGTUbTdOEchlnXx0N+tRXIRDezj3Mhekyls7cSYheeL6dw/Ne7uF3
mWZm4zLjMs64t0JfIooyx9z3ZVxzGTUbTdOEchlnXx0N+tRXIRDezj3Mhekyls7cSYheeL6dw/Ne7uF3
DvPPpGj6AAqn96Pg0z7kT+1B3tRu5E7ugvJjGJQToVBMhCBnfAeyx8QqzxbhQuQr65HLP4hJgW3wbBMm
G5VnjYqEK+CPPFO7VZgC/sozhCgg0e79sZZcMR7aVqxlwor1jFg+Ji7hy2XvtwRW4Hdy8uWrrNyzlGFL
ZGlF373lspEACvxBDoUmZCWylRF5ltMQ+VdvufQd418Bvnxk+Ynvfz62/alnCytX8uXpw34U4MuHlx9j
eOkRhpYe+jxw0lHRNyJ3+5KnDW2wADntq97ywaUHGHTfh8Z9D5rFYkLhmqfdl1wyuIECfPmAuwgDRNi/
WIB+Vz4hD32uXPQ5leuWp2rWWYAv71vMQy+R9boU6HXm4K1TTulxZBOy0G3PDJ68xyVHtzObkIluRwa6
HDJ02aXoZLGlo8OWhnarhCK4vNMpQ6dDig57GoFI7Klot6VAbbsLtTUZbZZktFruUFrMSRTB5GoiU9tT
eOkRhpYe+jxw0lHRNyJ3+5KnDW2wADntq97ywaUHGHTfh8Z9D5rFYkLhmqfdlzx1cAMF+PIBdxEGiLB/
sQD9rnxCHvpcuehzKtctT9GsswBf3reYh14i63Up0OvMwVunnNLjyCZkodueGTx5j0uObmc2IRPdjgx0
OWToskvRyWJLR4ctDe3WVIrg8k6nDJ0OKTrsaQQisaeg3SaB2nYXamsy2izJaLXcobSYkyiCydVEprZL
0GYjImsSWq23KS2WRMItNJsT0GSKpzSyGOMDkv9yn7fYiMiaiGZrApotRGKJQ5M5Do3mG2gwXUeDMRb1
hDoWQwzFbzkbb3mj9SYaLERkjiXEoN58DXWmq0R2BbXGaNQYolCjj0I1oUofiaqFyMDk7Pjk5Nx4rTVF
ExkRGS+jmsVwicguolJ/AZUL51FBKNdFUAKSc2FL8Gd7pSECFfpzlPKFs3ijO0MpI6jmw6GaCxdGzoW9
vfizvUx3GirdKZTOn0Tp3Am8JpTMHqcIKufCluDP9pK5Y3g1exQvWWaOUIIi50IfE7zZ/mLmMJ5/OUQJ
qpwLfUzwZvuzzwf/jpxLxiSzU5DZHkjYEpsm58KW2DQ5lxTy2Nw0+f8ELwzzE/paGgzH1hR8AAAAAElF
qpwLfUzwZvuzzwf/jpxLxiSzU5DZHkjYEpsm58KW2DQ5Fwl5bG6a/H+CF4b5CYMsGgInG2iLAAAAAElF
TkSuQmCC
</value>
</data>
<data name="tsbtnSizeImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMBxpyAIWpuCIGiN7NOlwQaLDB1s
CKxBCw00bJCowWppagoCoTlqyIiCyLSE8uQs64qzD+uyzMPQPE/MQLCeNN6GCk4sDYz7T3fvvc/Lbzi4
E5REwZF43Z2WFaLb4ke2kxUXfbSKUocxejgBIV0S7jVxuOp/gCOZ73RfTIxirVg52l7Y1k34ItZLQgYA
fnUUvgIIGQVO8QlYW1wXm437dWiscFmbMXB3nuUE2Ntw2GjCErZWXI5GOTuU+mbRJXf5ALJ7d0RuwDoI
M6nwV6EjPhUwsLV+VXTNI/UBWuLuZ4BTwLuoxKWStge0sZnoeHooPvkyFTamLNf6SNo/yEDRAYScgktl
CAJaFpiJNMQnASLGFND6J+ABPIAH8IDSBwR1ydC9Jub9MwAu9cLe2DlkPiISUgFl6JGAVJBlxzKq2Skm
5uxtjlRRAJsDLlhZdsHCqo1zYFeE11sbnDcFB6w6DmBpy5kTkG1beFhpE+HmnIABJuHpvlKiMe7yAXyE
iQlJ5t0IfgewzxnA/K06VoO25u4ngI8oJV19p2F6HifSKnYahAHDa/7/jb8BFCQewAMsDrfpHWCxmdAS
339OIHgD1J71QoDsMyIAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHLSURBVFhH7dY9SAJhGMBxpyAIWpuCIGiN7EuXBhssMmyw
IbAGLTSwqEEiB6ulqSkIguaoISUKIjszKE/Osq44yw8u0zzsSz2xAuHqyeJtqODE0qC4/3T33vu8/IaD
O9GfKDqcqgnrWTG6LX5UC1Xm62E0tPYGZwbTEDM8wKUuBcHeKzhUBk72ZOQo3oyXou2Fbc1MLOLdFGQB
ENLG4TOAVNLglB2Drcnl26jfq0FjhcvWiIO77TQnwC4hYL0BT2PNRBca5e1AEZhBl/zlA3jduy11A95K
zlOqUAU64kOREbY6pImvehQBQEv8fQ9wAkQ7nfarGXtEn5yOj3MDqYmnyRtjxhIYuuZC/QkoOoDsosGv
jkFEz0LCxEFqAuDWmAFm6B4EgAAQAALg7wOihofYpS7p/TUAofDC7tgZZD8ickoFJeiRiFJRJUdKutEp
I2ftEkemKICNPhesLLtgwYrxDjikRK2tznlecIB1Zx+WNp05Aa9tiQ/KMSkxnxPQl0h7OoJqNMZfPoD3
cBkpz74b0a8A9jELmLvQJqvQ1tx9B/AerWYqw7pE552J07BTII6MPOf/3/gTQEESAALAsuM2vwEsmBkt
Cf3nRKIXmuv1PdX+ZZIAAAAASUVORK5CYII=
</value>
</data>
<data name="tsbtnLight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
h8hfV8RzuqW13GsAAAAASUVORK5CYII=
h8hfUyBzuFLSYqkAAAAASUVORK5CYII=
</value>
</data>
<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();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProductInfo));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
this.groupBox10 = new System.Windows.Forms.GroupBox();
this.panel10 = new System.Windows.Forms.Panel();
this.numTensionDownFloatValue = new System.Windows.Forms.NumericUpDown();
@ -73,6 +73,7 @@
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnAddFile = new System.Windows.Forms.ToolStripButton();
this.tsbtnNewBatchId = new System.Windows.Forms.ToolStripButton();
this.tbtnGetPos = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
@ -102,6 +103,11 @@
this.label3 = new System.Windows.Forms.Label();
this.txtSpec = new System.Windows.Forms.TextBox();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.groupBox7 = new System.Windows.Forms.GroupBox();
this.panel6 = new System.Windows.Forms.Panel();
this.label24 = new System.Windows.Forms.Label();
this.cbMainGrid = new System.Windows.Forms.CheckBox();
this.cbMarkDisturb = new System.Windows.Forms.CheckBox();
this.groupBox6 = new System.Windows.Forms.GroupBox();
this.panel5 = new System.Windows.Forms.Panel();
this.label21 = new System.Windows.Forms.Label();
@ -115,7 +121,6 @@
this.tabPage2 = new System.Windows.Forms.TabPage();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.flpQualifiedPannel = new System.Windows.Forms.FlowLayoutPanel();
this.tbtnGetPos = new System.Windows.Forms.ToolStripButton();
this.groupBox10.SuspendLayout();
this.panel10.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numTensionDownFloatValue)).BeginInit();
@ -144,6 +149,8 @@
this.groupBox4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).BeginInit();
this.tabPage3.SuspendLayout();
this.groupBox7.SuspendLayout();
this.panel6.SuspendLayout();
this.groupBox6.SuspendLayout();
this.panel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numMarkSize)).BeginInit();
@ -663,6 +670,16 @@
this.tsbtnNewBatchId.Visible = false;
this.tsbtnNewBatchId.Click += new System.EventHandler(this.tsbtnNewBatchId_Click);
//
// tbtnGetPos
//
this.tbtnGetPos.Image = ((System.Drawing.Image)(resources.GetObject("tbtnGetPos.Image")));
this.tbtnGetPos.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tbtnGetPos.Name = "tbtnGetPos";
this.tbtnGetPos.Size = new System.Drawing.Size(60, 53);
this.tbtnGetPos.Text = "点位抓取";
this.tbtnGetPos.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
this.tbtnGetPos.Click += new System.EventHandler(this.tbtnGetPos_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
@ -828,46 +845,46 @@
//
this.dgvBatchList.AllowUserToAddRows = false;
this.dgvBatchList.AllowUserToDeleteRows = false;
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dgvBatchList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dgvBatchList.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dgvBatchList.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvBatchList.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colBatchId,
this.colTargetCount,
this.colCompleteCount,
this.colCreateTime});
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle6.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvBatchList.DefaultCellStyle = dataGridViewCellStyle6;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvBatchList.DefaultCellStyle = dataGridViewCellStyle2;
this.dgvBatchList.Dock = System.Windows.Forms.DockStyle.Fill;
this.dgvBatchList.Location = new System.Drawing.Point(2, 16);
this.dgvBatchList.Margin = new System.Windows.Forms.Padding(2);
this.dgvBatchList.MultiSelect = false;
this.dgvBatchList.Name = "dgvBatchList";
this.dgvBatchList.ReadOnly = true;
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dgvBatchList.RowHeadersDefaultCellStyle = dataGridViewCellStyle7;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dgvBatchList.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dgvBatchList.RowHeadersVisible = false;
this.dgvBatchList.RowHeadersWidth = 62;
dataGridViewCellStyle8.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.dgvBatchList.RowsDefaultCellStyle = dataGridViewCellStyle8;
dataGridViewCellStyle4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.dgvBatchList.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.dgvBatchList.RowTemplate.Height = 30;
this.dgvBatchList.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dgvBatchList.Size = new System.Drawing.Size(405, 203);
@ -993,6 +1010,7 @@
//
// tabPage3
//
this.tabPage3.Controls.Add(this.groupBox7);
this.tabPage3.Controls.Add(this.groupBox6);
this.tabPage3.Controls.Add(this.groupBox5);
this.tabPage3.Location = new System.Drawing.Point(4, 22);
@ -1004,6 +1022,62 @@
this.tabPage3.Text = "图纸资料";
this.tabPage3.UseVisualStyleBackColor = true;
//
// groupBox7
//
this.groupBox7.BackColor = System.Drawing.SystemColors.ActiveCaption;
this.groupBox7.Controls.Add(this.panel6);
this.groupBox7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox7.Location = new System.Drawing.Point(2, 218);
this.groupBox7.Margin = new System.Windows.Forms.Padding(2);
this.groupBox7.Name = "groupBox7";
this.groupBox7.Padding = new System.Windows.Forms.Padding(2);
this.groupBox7.Size = new System.Drawing.Size(409, 102);
this.groupBox7.TabIndex = 34;
this.groupBox7.TabStop = false;
this.groupBox7.Text = "参数设置";
//
// panel6
//
this.panel6.BackColor = System.Drawing.Color.White;
this.panel6.Controls.Add(this.label24);
this.panel6.Controls.Add(this.cbMainGrid);
this.panel6.Controls.Add(this.cbMarkDisturb);
this.panel6.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel6.Location = new System.Drawing.Point(2, 16);
this.panel6.Margin = new System.Windows.Forms.Padding(2);
this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(405, 84);
this.panel6.TabIndex = 0;
//
// label24
//
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(30, 18);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(161, 12);
this.label24.TabIndex = 5;
this.label24.Text = "在非[默认Mark]的情况下生效";
//
// cbMainGrid
//
this.cbMainGrid.AutoSize = true;
this.cbMainGrid.Location = new System.Drawing.Point(199, 47);
this.cbMainGrid.Name = "cbMainGrid";
this.cbMainGrid.Size = new System.Drawing.Size(72, 16);
this.cbMainGrid.TabIndex = 1;
this.cbMainGrid.Text = "是否主栅";
this.cbMainGrid.UseVisualStyleBackColor = true;
//
// cbMarkDisturb
//
this.cbMarkDisturb.AutoSize = true;
this.cbMarkDisturb.Location = new System.Drawing.Point(32, 47);
this.cbMarkDisturb.Name = "cbMarkDisturb";
this.cbMarkDisturb.Size = new System.Drawing.Size(120, 16);
this.cbMarkDisturb.TabIndex = 0;
this.cbMarkDisturb.Text = "是否存在Mark干扰";
this.cbMarkDisturb.UseVisualStyleBackColor = true;
//
// groupBox6
//
this.groupBox6.BackColor = System.Drawing.SystemColors.ActiveCaption;
@ -1071,9 +1145,9 @@
"空心圆",
"实心圆带栅线",
"空心圆带栅线",
"圆环",
"半圆环",
"十字线"});
"矩形",
"候补1",
"候补2"});
this.cbMarkType.Location = new System.Drawing.Point(70, 65);
this.cbMarkType.Margin = new System.Windows.Forms.Padding(2);
this.cbMarkType.Name = "cbMarkType";
@ -1161,16 +1235,6 @@
this.flpQualifiedPannel.Size = new System.Drawing.Size(416, 326);
this.flpQualifiedPannel.TabIndex = 0;
//
// tbtnGetPos
//
this.tbtnGetPos.Image = ((System.Drawing.Image)(resources.GetObject("tbtnGetPos.Image")));
this.tbtnGetPos.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tbtnGetPos.Name = "tbtnGetPos";
this.tbtnGetPos.Size = new System.Drawing.Size(60, 53);
this.tbtnGetPos.Text = "点位抓取";
this.tbtnGetPos.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
this.tbtnGetPos.Click += new System.EventHandler(this.tbtnGetPos_Click);
//
// FrmProductInfo
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -1223,6 +1287,9 @@
this.groupBox4.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dgvBatchList)).EndInit();
this.tabPage3.ResumeLayout(false);
this.groupBox7.ResumeLayout(false);
this.panel6.ResumeLayout(false);
this.panel6.PerformLayout();
this.groupBox6.ResumeLayout(false);
this.panel5.ResumeLayout(false);
this.panel5.PerformLayout();
@ -1320,5 +1387,10 @@
private System.Windows.Forms.ComboBox cmbDefectModelFile;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.ToolStripButton tbtnGetPos;
private System.Windows.Forms.GroupBox groupBox7;
private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.CheckBox cbMainGrid;
private System.Windows.Forms.CheckBox cbMarkDisturb;
private System.Windows.Forms.Label label24;
}
}

View File

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

View File

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

View File

@ -44,6 +44,8 @@
this.tsbtnAdd = new System.Windows.Forms.ToolStripButton();
this.tsbtnDel = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnClone = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnSetting = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.tsbtnClasses = new System.Windows.Forms.ToolStripButton();
@ -67,8 +69,6 @@
this.colReviseStepName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colModifyCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colModifyTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.tsbtnClone = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this.toolStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
@ -143,6 +143,25 @@
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 56);
//
// tsbtnClone
//
this.tsbtnClone.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClone.Image")));
this.tsbtnClone.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
this.tsbtnClone.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbtnClone.Name = "tsbtnClone";
this.tsbtnClone.Size = new System.Drawing.Size(52, 53);
this.tsbtnClone.Text = " 克隆 ";
this.tsbtnClone.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
this.tsbtnClone.ToolTipText = "克隆当前流程";
this.tsbtnClone.Visible = false;
this.tsbtnClone.Click += new System.EventHandler(this.tsbtnClone_Click);
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new System.Drawing.Size(6, 56);
this.toolStripSeparator5.Visible = false;
//
// tsbtnSetting
//
this.tsbtnSetting.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSetting.Image")));
@ -264,7 +283,7 @@
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle8;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(0, 56);
this.dataGridView1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.dataGridView1.Margin = new System.Windows.Forms.Padding(2);
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
@ -408,23 +427,6 @@
this.colModifyTime.ReadOnly = true;
this.colModifyTime.Width = 150;
//
// tsbtnClone
//
this.tsbtnClone.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClone.Image")));
this.tsbtnClone.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
this.tsbtnClone.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbtnClone.Name = "tsbtnClone";
this.tsbtnClone.Size = new System.Drawing.Size(52, 53);
this.tsbtnClone.Text = " 克隆 ";
this.tsbtnClone.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
this.tsbtnClone.ToolTipText = "克隆当前流程";
this.tsbtnClone.Click += new System.EventHandler(this.tsbtnClone_Click);
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new System.Drawing.Size(6, 56);
//
// FrmProductList
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@ -434,7 +436,7 @@
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.toolStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "FrmProductList";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

View File

@ -1,186 +1,186 @@
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ProductionControl
{
public partial class FrmProductList : Form
{
Service.ProductService service = new Service.ProductService();
public Models.Product Product { get; private set; }
public FrmProductList(bool isProductRevise=false)
{
InitializeComponent();
this.tsbtnAdd.Enabled=this.tsbtnDel.Enabled =this.tsbtnSetting.Enabled= !isProductRevise;
this.tsbtnRevise.Visible=isProductRevise;
if (isProductRevise)
{
this.Text = "产品基准厚度校正";
}
#region dataGridView设置
dataGridView1.AutoGenerateColumns = false;//自动创建列
dataGridView1.AllowUserToAddRows = dataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
dataGridView1.AllowUserToResizeRows = true;//用户调整行大小
//dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
//显示行号与列宽度自动调整
dataGridView1.RowHeadersVisible = true;
dataGridView1.RowHeadersWidth = 50;
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
dataGridView1.RowPostPaint += (sender, e) =>//序号列头
{
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
};
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
//for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
// dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
//行列交叉处标题
//if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
#endregion
}
private void initDataView(int selIndex = -1)
{
Product = null;
var list = service.GetListNav();
tsslCount.Text = $"共 {list.Count} 条记录";
int liIndex = 0;
if (selIndex > 0) liIndex = selIndex;
else if (this.dataGridView1.CurrentRow!=null)
liIndex=this.dataGridView1.CurrentRow.Index;
dataGridView1.DataSource = new BindingSource(list, null);
if (dataGridView1.Rows.Count > liIndex)
dataGridView1.CurrentCell = dataGridView1[1, liIndex];
}
private void FrmProductList_Load(object sender, EventArgs e)
{
initDataView();
}
private void tsbtnRefresh_Click(object sender, EventArgs e)
{
initDataView();
}
private void tsbtnAdd_Click(object sender, EventArgs e)
{
FrmProductInfo frm = new FrmProductInfo();
frm.ShowDialog();
initDataView();
}
private void tsbtnDel_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView1.CurrentRow == null)
return;
if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
if (!service.DelNav(list[liIndex]))
throw new Exception("删除失败!");
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
//initDataView();
this.dataGridView1.Rows.RemoveAt(liIndex);
if(this.dataGridView1.Rows.Count == 0)
initDataView();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tsbtnSetting_Click(object sender, EventArgs e)
{
if(this.dataGridView1.CurrentRow == null) return;
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
FrmProductStep frm = new FrmProductStep(list[liIndex]);
frm.ShowDialog();
initDataView();
}
private void tsbtnRevise_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView1.CurrentRow == null)
throw new Exception("请选择要校正的产品!");
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1)
throw new Exception("此产品未设置校正流程!");
if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Product=list[liIndex];
this.DialogResult = DialogResult.Yes;
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tsbtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (!this.tsbtnAdd.Enabled) return;
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
FrmProductInfo frm = new FrmProductInfo(list[liIndex]);
frm.ShowDialog(this);
initDataView();
}
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (list[i].ClassesInfo != null)
dataGridView1.Rows[i].Cells["colClasses"].Value = list[i].ClassesInfo.Name;
if (list[i].StepInfo != null)
dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name;
if (list[i].ReviseStepInfo != null)
dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name;
}
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void tsbtnClasses_Click(object sender, EventArgs e)
{
FrmClassesSingle frm = new FrmClassesSingle(0, "产品类型管理");
if(frm.ShowDialog() == DialogResult.OK)
{
this.initDataView();
}
}
private void tsbtnDefectClasses_Click(object sender, EventArgs e)
{
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ProductionControl
{
public partial class FrmProductList : Form
{
Service.ProductService service = new Service.ProductService();
public Models.Product Product { get; private set; }
public FrmProductList(bool isProductRevise=false)
{
InitializeComponent();
this.tsbtnAdd.Enabled=this.tsbtnDel.Enabled =this.tsbtnSetting.Enabled= !isProductRevise;
this.tsbtnRevise.Visible=isProductRevise;
if (isProductRevise)
{
this.Text = "产品基准厚度校正";
}
#region dataGridView设置
dataGridView1.AutoGenerateColumns = false;//自动创建列
dataGridView1.AllowUserToAddRows = dataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
dataGridView1.AllowUserToResizeRows = true;//用户调整行大小
//dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
//显示行号与列宽度自动调整
dataGridView1.RowHeadersVisible = true;
dataGridView1.RowHeadersWidth = 50;
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
dataGridView1.RowPostPaint += (sender, e) =>//序号列头
{
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
};
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
//for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
// dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
//行列交叉处标题
//if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
#endregion
}
private void initDataView(int selIndex = -1)
{
Product = null;
var list = service.GetListNav();
tsslCount.Text = $"共 {list.Count} 条记录";
int liIndex = 0;
if (selIndex > 0) liIndex = selIndex;
else if (this.dataGridView1.CurrentRow!=null)
liIndex=this.dataGridView1.CurrentRow.Index;
dataGridView1.DataSource = new BindingSource(list, null);
if (dataGridView1.Rows.Count > liIndex)
dataGridView1.CurrentCell = dataGridView1[1, liIndex];
}
private void FrmProductList_Load(object sender, EventArgs e)
{
initDataView();
}
private void tsbtnRefresh_Click(object sender, EventArgs e)
{
initDataView();
}
private void tsbtnAdd_Click(object sender, EventArgs e)
{
FrmProductInfo frm = new FrmProductInfo();
frm.ShowDialog();
initDataView();
}
private void tsbtnDel_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView1.CurrentRow == null)
return;
if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
if (!service.DelNav(list[liIndex]))
throw new Exception("删除失败!");
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
//initDataView();
this.dataGridView1.Rows.RemoveAt(liIndex);
if(this.dataGridView1.Rows.Count == 0)
initDataView();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tsbtnSetting_Click(object sender, EventArgs e)
{
if(this.dataGridView1.CurrentRow == null) return;
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
FrmProductStep frm = new FrmProductStep(list[liIndex]);
frm.ShowDialog();
initDataView();
}
private void tsbtnRevise_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView1.CurrentRow == null)
throw new Exception("请选择要校正的产品!");
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1)
throw new Exception("此产品未设置校正流程!");
if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Product=list[liIndex];
this.DialogResult = DialogResult.Yes;
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tsbtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (!this.tsbtnAdd.Enabled) return;
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
FrmProductInfo frm = new FrmProductInfo(list[liIndex]);
frm.ShowDialog(this);
initDataView();
}
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (list[i].ClassesInfo != null)
dataGridView1.Rows[i].Cells["colClasses"].Value = list[i].ClassesInfo.Name;
if (list[i].StepInfo != null)
dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name;
if (list[i].ReviseStepInfo != null)
dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name;
}
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void tsbtnClasses_Click(object sender, EventArgs e)
{
FrmClassesSingle frm = new FrmClassesSingle(0, "产品类型管理");
if(frm.ShowDialog() == DialogResult.OK)
{
this.initDataView();
}
}
private void tsbtnDefectClasses_Click(object sender, EventArgs e)
{
}
private void tsbtnClone_Click(object sender, EventArgs e)
@ -234,6 +234,8 @@ namespace ProductionControl
AssistStepInfo = list[liIndex].AssistStepInfo,
ProductAssistProcessList = new List<ProductAssistProcess>(),
MarkType = list[liIndex].MarkType,
MarkSize = list[liIndex].MarkSize,
MapPath = "",
GetPointList = "",
//OrderList = new List<Order>(),
@ -347,5 +349,5 @@ namespace ProductionControl
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">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMqSURBVFhH7ZdNSFRRHMVPRYug2klBtKisQAhKKRAECapV
VAtBCHJljjqOg+P4NWZToTBlRuYgY2o5E4YkCIoh2CIIop1tggKhRQVtjIjog7ofHYd/oM5742jOIvDA
j//7OP97rnfue85gXf+lzCBy7BAKTByFyZrAHrmVPdk4inQcPSqBDzYBuxRe/6QTGDYPcEZaUqSHMCGH
mYsD5jF4nBOwmaLieMmVqZAhkvp7T04zk7mHUjWA7/Y+m1fJ/DhLzzOSHUQzsWuNDJ9e5i5KbD8bsoBE
uMv0I1f1cdn72JAFJMZdOoph20uzoHpgFp7/KxLjLBvFYWKXQ0X5yEUxTfrImLrDR9PB54REOUt347bt
pjEN9IyZbuRIS1KmC1t4fdrJvxRpcZa6iTf2Fo0u6C5MijVFqhNfnXqWIvZUcXm22k6aXFARbswb2Cn2
RXLyuyEtqTIdyLMRmlzQEUyJdZF4fcLJ78S8V9pSZdpxzHbQ6IJux4BYsyMT5gpcY5gL+qrzCqyZbJh7
4ArDXFBh7oGw8x5wE/+o7eY6tiWrHNtH2CS3U6VaMWvbGOiCbsO4WB3FCe41bShkWL65hEPzq8p6kOzn
ca5pxT56Noo9VboFPTbEsDToEEZNy+L3gK3AZhPCWV6vZy2zLThnmnGK58WsheSoacIR1lxpcZZtRoFt
YtAyqCa+CRsxpRvQq5swyvMXrNMkxqDLphE1rGWsJaYBp5OTacBxTmiHRLlL12PEBhm0AlQAcyqIGR3E
BPtjpN0EETT1qGQtY3gpfSf4EtggMe4ydfxvGOCGC3DwDKH/C5klz3QdRnUAMV6PmABCxM8xL7Lulojl
ZWpx3vo5eIYoP74pH96xzuhaPNE+jLDGtB+dxs+PxIdiGTpzsanV+hiQAQz/QT6S18qL57oGjzmJhyRm
argp0+38dDLVuKAq+XF4GZQGen6SOfJWVXMVqvBUezHB8FIZavUyHn4r9mDSVjHMBVWFX8qDz6qCH4MH
rziBhPEiX4ZYG/FZL9IV/F1Qzi8fHgYvgNd+M/g978c44ZPSkj0xZJct5y8ihiVrOQ7IrXWtUMAf5Oh5
rCbfSUoAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMwSURBVFhH7ZdPSFRRGMVPRYug2klBtKisQAhKKRAECapV
VAtBCHKTOv4fHEdHx8wKJdOMzEHGzHImDEkQFEOwRRBEu9oEBUKLEtoYEdEfunPv7Th8gTrvjaM5i8AD
P77353z3XO+785zBuv5LmUFk2CHkmAhy4zWKPXIrfbIR5OkIelUUszYKuxRe/6yjGDYPcUZaEqSHMCGH
qYsDZjF4nBOwqRKL4DVXplSGiOvvPTlNTeY+CtUAftgHbF4l8+MsPU9JdhCNxK41MnxymbsosANsSAMS
4S4zgEzVz2XvZ0MakBh36RCGbR/NgroDs/D8X5EYZ9kQDhO7HCrEj1wI06SfjHGSs04+JyTKWboHt20P
jUmgZ8z0IENa4jLd2MLr007+pUiLs9RNvLO3aHRBd2NSrAlSnfjm1LMUsSeKy7PVdtHkgrrOjdmJnWJf
JCe/G9KSKNOOLNtBkwu6A1NiXSRen3DyOzHvlbZEmTYcs+00uqDbcE+s6ZFp5QpcY5gL+qrzCqyZbCv3
wBWGuaBauQdanfeAm/hHbTc3sC1e5dg+xia5nSjVjBnbwkAXdAvGxeooTnCvaUEuw7LNJRyaX1XWg2Q/
jzNNM/bRs1HsidJN6LVBhiVBBzFqmha/B2wpNpsgzvJ6HWuRbcI504hTPM9nzSVHTQBHWDOlxVm2ETk2
wKBlUAG+CRswpevRpwMYjQXwknWahBl02TSgirWItcDU43R8MvU4zgntkCh36TqMWD+DVoDyYS7mxyvt
xwT7w6TN+OE3dShjLWJ4IX0n+BLYIDHuMrX8b+jjhvNx8BSh/yuZifnwXNdiVPsQ5vUO40OQeDlmCetu
iVhepgbnrZeDp4jy4ruqxoeYl6tQg6e6GiOsYe1Fl/HykVQjX4ZOXWxqttUMSAGG/ySfyNtYJV7oKjzh
JB6RsKnipky285PJVOCC8vBxVDIoCfT8InOqDO9jFVyFcjzTlZhgeKEMtXoZD78VezBpyxnmgirHb07g
iyrhY/DgDScQNZXIliHWRvys5+lS/i64yC8fHgYvgNcUJ/CR98Oc8ElpSZ8YsssW8xcRw+K1GAfk1rpW
KOAP8C15gnutFsIAAAAASUVORK5CYII=
</value>
</data>
<data name="tsbtnAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHoSURBVFhH3ZfNSwJBGMaFIIgM3R2/gu5B/0OXDp26eiro
UO6OfRD9S921PyCIopPQKQw6RCvujBqdoy/I5tE3NV0YdxuR+sEDvuO8z/uwustObJi4I1OMizLjt5+M
y7YZwUuU4U1jgsnyZkY1VEYNjKmCGTRuFJWyhI22Kw/U52WT6noihCjRuCHy1Vl7U75ajn9NK8aBN2Zg
Fi31yW4151XCN9sVF7RkHHhjBmbRUh8sIh3j/hUt6cm3ZzoaE3hjhrEAzJVnEJVajAdI7IomRKUW81eA
+x5EpZb/F8Dm8h6iUkvkALnDRtpyxInl+qeDivO7Z2h4HXvRQ+09Igew3cZK9yk2vtBD7T0iBwCJIy+Z
KtQW03uPuW+xgqxDg2vYg73U9oNfBQhC7X2AqNQyiQBTvg2deg2iUovxAEnutyAqtZi/Atxfg6jUYjxA
WCIFWDquz6nbK47vwwg96CWbDqED2EWRT3D5wra9D/VweQ8l1YNeeJBd+AApLlctV57bXFxGEXrhQXZ/
9D9gktAB7KJcV7/nDXNFNZJULzzILsp/QGzglYtx7ymK0AsPstMHUImn91qOwwJum0kfTDAj8GACcGxS
Cad0NFNkdlpZtWmih1PMoHHBLOwLhvc608dzeMKbxhCx2BcBm5Yir7kGIwAAAABJRU5ErkJggg==
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHoSURBVFhH3ZdPSwJBGMaFIIgMdUbToHvQd+jSoVNXTwUd
yt2xP0Rfqbv2AYIoOgmdwkOHaMWdUaNz9A+yefRNTRfG3UakfvCA7zjv8z6s7rITGybuqDQXssxF9ZML
1bYjeMkyvGlMMFnRXNQNlVEDa6pgBo0bRacsYSNz1aH+vGJTXU+EkCUaN0S+Osu21GvK8W9oxTrwxgzM
oqU+2e3mvE74xlx5SUvWgTdmYBYt9cEi0nHhX9OSmXx7pqMxgTdmWAvAXXUOUWnEeoDEnmxCVBqxfwWE
70FUGvl/AZhQ9xCVRiIHyB01MilHnqZc/2xQcXH3DA2vYy96qL1H5ADMbax2n2LjCz3U3iNyAJA49pLp
Qm0ps/+Y+xYvqDo0uIY92EttP/hVgCD03geISiOTCDDl29Cp1yAqjVgPkBR+C6LSiP0rIPx1iEoj1gOE
JVKA5ZP6nL694vg+jNCDXrLpEDoAK8p8QqgXvuN96IfLeyjpHvTCg+zCB0gLtZZy1QUT8iqK0AsPsvuj
/wGbhA7AimpD/5633JXVSNK98CC7KP8BuYlXLi68pyhCLzzIzhxAJ57eazkOC7htJn0wwYzAgwnAsUkn
nNLRTLO428rqTRM9nGIGjQtm4UByvNfZPp7DE940hojFvgDhTpYe8U0OzAAAAABJRU5ErkJggg==
</value>
</data>
<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">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIlSURBVFhH7dTLSxtRFAbwgCAU/H+sUBBcCAqV0hIxNaWa
uLKrboqLbtx00yqCVlC0UrEPJokxiVkIgiC0tggirQ0+UTE6jpnQJ4GBgdM55dxwvU5m5ibRhfSDHyS5
53z3ruK7NulJ58GLUFofo5XqJZzOF+wuK4XWqhPZyxGtVp7wvF7omddBFq1XlnBKL1igHFRRfkIpzQil
cmArkYv0KlqdX4HaUPJs1G6GaspLd1IzupNnYG/fxMtp1IePCCa0vDhHx/LpSmiGBRwUrEtraPxfumbV
rDhHR3J5OHdqWICJb/4pfj4nrg7QirWj9tnN0LH3PIirhgWYaOZ3Ef87cz+eVQOz6qHdGaJabwnGdsxg
7AQYZePXBfy5F1Ttns7ottkZPQbm7ZefJfFzbqjeOYHIlhmIZIGZXv/hip8vheqd0zG1aXYoR8C8Wvvu
Gb8nonrntE9mzPb3h8CMr+al8fsM1TundeKb6X93AMzLT7o0fp+heufce7MPvKEPOWliB6J699yd2QPm
+fKpNH6foWr34N/nneld4D1bUj0TdxFVew8+ou31DvD6F09ciTuIKuXjVzZqb09tAe/pwlFJ4iyiqvKD
j2iZyADvSfrgAnEGUUXlwUc0j30F3uPEXpF4hmi1esFHNI2uA+9RbPvcd4ZWqp+bAx9vNA6vgRMavbzg
I24NrYIdGrn84CMaBj8Dj46uLo0jS3X1L1YA0U//cx3i8/0FltEXQTLsVtkAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIlSURBVFhH7dTLSxtRFAbwgCAU/H9soSC4EFy0SEvE1BQ1
caUrN6WLbrrpRi2CVbAVRemLSWJMYhaFglDoC0FEU1+tVjE6jpmgfRAYGDidU84N1+tkZm4SXYgf/CDJ
Pee7dxXfpUl3Og9ehNL6GK1UL+F0vmB3WSm0Vp3IXo5otfKE5/RC95wOsmi9soRTesEC5aCK8hNKaUYo
lQNbiVykR9Hq/ArUhpJHo3YzVFNeupKa0ZU8AnvbJl5Ooz58RDCh5cU5OpZPZ0IzLOCgYF1aQ+P/0zmj
ZsU5OpJLx+yhYQEmvv63+PmUuDpIK9aO+tBuho69535cNSzARFf/FPG/M/fiWTUwo+7anSGq9ZZgbNMM
xg6AUTK/z+DPvaBq97RHN8z26D4wr5d/lcTPuaF65wQi62YgkgVmeunEFT9fCtU7p21izWxT9oCZWDz2
jN8TUb1zWse/ma1vd4F5vpCXxu8zVO+c5hcZ0/9mB5iRL7o0fp+heufcffUTeEMfc9LEDkT17rnzcguY
/g+H0vh9hqrdg3+fLdM/gPdkXvVM3EVU7T34iNtT34H3+P2BK3EHUaV8/Eqm9tbkBvAevdsrSZxFVFV+
8BHN46vAe5DeOUOcQVRRefARTWMrwOtLbBWJZ4hWqxd8ROPoEvB6Y5unvjO0Uv1cH/x0rWF4EZzQ6PkF
H3FzaAHs0Mj5Bx9x4+lX4NHRxaXh2Xxd/cBnQPTTVS5DfL5/Ma4XNoG0VecAAAAASUVORK5CYII=
</value>
</data>
<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.label43 = new System.Windows.Forms.Label();
this.tabPage9 = new System.Windows.Forms.TabPage();
this.cbOpenFlawDistribution = new System.Windows.Forms.CheckBox();
this.ckSkipSizeFailed = new System.Windows.Forms.CheckBox();
this.chkSkipSmallAxis = new System.Windows.Forms.CheckBox();
this.chkSkipScannerCC = new System.Windows.Forms.CheckBox();
@ -237,7 +238,7 @@
this.numHttpPort = new System.Windows.Forms.NumericUpDown();
this.label49 = new System.Windows.Forms.Label();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.cbOpenFlawDistribution = new System.Windows.Forms.CheckBox();
this.cbOpenAxisXCal = new System.Windows.Forms.CheckBox();
this.toolStrip1.SuspendLayout();
this.groupBox1.SuspendLayout();
this.panel1.SuspendLayout();
@ -2727,6 +2728,7 @@
//
// tabPage9
//
this.tabPage9.Controls.Add(this.cbOpenAxisXCal);
this.tabPage9.Controls.Add(this.cbOpenFlawDistribution);
this.tabPage9.Controls.Add(this.ckSkipSizeFailed);
this.tabPage9.Controls.Add(this.chkSkipSmallAxis);
@ -2747,6 +2749,17 @@
this.tabPage9.Text = "功能过滤";
this.tabPage9.UseVisualStyleBackColor = true;
//
// cbOpenFlawDistribution
//
this.cbOpenFlawDistribution.AutoSize = true;
this.cbOpenFlawDistribution.Location = new System.Drawing.Point(19, 306);
this.cbOpenFlawDistribution.Margin = new System.Windows.Forms.Padding(2);
this.cbOpenFlawDistribution.Name = "cbOpenFlawDistribution";
this.cbOpenFlawDistribution.Size = new System.Drawing.Size(96, 16);
this.cbOpenFlawDistribution.TabIndex = 12;
this.cbOpenFlawDistribution.Text = "启用缺陷分布";
this.cbOpenFlawDistribution.UseVisualStyleBackColor = true;
//
// ckSkipSizeFailed
//
this.ckSkipSizeFailed.AutoSize = true;
@ -2964,16 +2977,16 @@
this.label49.TabIndex = 4;
this.label49.Text = "本机IP";
//
// cbOpenFlawDistribution
// cbOpenAxisXCal
//
this.cbOpenFlawDistribution.AutoSize = true;
this.cbOpenFlawDistribution.Location = new System.Drawing.Point(19, 304);
this.cbOpenFlawDistribution.Margin = new System.Windows.Forms.Padding(2);
this.cbOpenFlawDistribution.Name = "cbOpenFlawDistribution";
this.cbOpenFlawDistribution.Size = new System.Drawing.Size(96, 16);
this.cbOpenFlawDistribution.TabIndex = 12;
this.cbOpenFlawDistribution.Text = "启用缺陷分布";
this.cbOpenFlawDistribution.UseVisualStyleBackColor = true;
this.cbOpenAxisXCal.AutoSize = true;
this.cbOpenAxisXCal.Location = new System.Drawing.Point(19, 344);
this.cbOpenAxisXCal.Margin = new System.Windows.Forms.Padding(2);
this.cbOpenAxisXCal.Name = "cbOpenAxisXCal";
this.cbOpenAxisXCal.Size = new System.Drawing.Size(90, 16);
this.cbOpenAxisXCal.TabIndex = 13;
this.cbOpenAxisXCal.Text = "启用X轴校准";
this.cbOpenAxisXCal.UseVisualStyleBackColor = true;
//
// FrmSysSetting
//
@ -3327,5 +3340,6 @@
private System.Windows.Forms.NumericUpDown numOffset;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.CheckBox cbOpenFlawDistribution;
private System.Windows.Forms.CheckBox cbOpenAxisXCal;
}
}

View File

@ -50,6 +50,8 @@ namespace ProductionControl
this.ckSkipSizeFailed.Checked = Util.ReadIniValue(configPath, "SKIP", "MarkErrorStop") == "1";
this.cbOpenFlawDistribution.Checked = Util.ReadIniValue(configPath, "SKIP", "OpenFlawDistribution") == "1";
this.cbOpenAxisXCal.Checked = Util.ReadIniValue(configPath, "SKIP", "OpenAxisXCalibration") == "1";
//DEV
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
EnumUtil.BindToEnumName<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", "OpenFlawDistribution", this.cbOpenFlawDistribution.Checked ? "1" : "0");
Util.WriteIniValue(configPath, "SKIP", "OpenAxisXCalibration", this.cbOpenAxisXCal.Checked ? "1" : "0");
//DEV
Utils.Util.WriteIniValue(configPath, "DEV", "Axis0_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis0PulseOutMode)).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">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIfSURBVFhH7ZdPaxNBGMbfUBCFSsEvILa0l4K3KoptL9JE
es6hhLpmZ2Z33q09hH4Db6IXpR+gtUULBb+AN6lHW8GDR2/iWZEo4p93hslmp5kkO5ulEOgDPzaZmffZ
J7PvbhI4l0MViJIlolYYLqvAk3nj56F6/QKw+A0I/FcKHB8Z55wSuNBjMjp3jXsOcbmYFjL8TJ/gBYh4
zx+5CyF+0j4P8AtE0ZQ5wxBFyZ00AMcdM1pMXD5OvYQ8NKNDlA0g5EszWkxCPu96ab/AzAxQNgDDV2Y0
vxg2aeci/ZrjMyvAGv6AMLmq5/pqlACt1iWq+6trlTg+Tb06hPE7mqnoeadGCRCGl6nuG9HW77l8knpZ
yC0975TVA7hvRvMpSSahuvpH1ypZTWjxWs87ZQcYsLCP9G1rmlfgdsary8CdtQOo7bxtZvzE8DrVfs14
dfEIoFBN9ZE4pgfMyXBoHccPEAS/TX0vngHKZzwDBMH3QnTuiixeAZSJkPeAsSuFiONZ8jmyPP12gBpr
VAlMLE/PS/CLunoTRHLTGxbfIL9a+rXcYTybsEw8A7TpEtwHvjGnG0od86LWR9EtYPK95Xn2TSjR8vTe
ASHXQYgZaOK0Pp5GjbvgD69RPf3I1Y/onAGyP0pt1HeCH66HkEYemLM5pG4dZ1GZDAoQBBdp0dveopJo
NH7SLlfN2fqoXp+gxcvUD+6/XUURuKL74lyWAP4DwL5ll9fZEiMAAAAASUVORK5CYII=
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIeSURBVFhH7ZfLShxBFIaPCJKAIuQFghHdCO5MSFCzES/Z
zyKIduyq6q7TxoXkDdyJbhQfwEswgYAv4E506QVcZJmduE4IJoRcThU1PV2ZmpmunkYQ/OGjZ6rq/P1P
9emeGbiXQx0QJePEdGG4nAKeDBk/D1UqXcDiQxD4txQ4rhjnnBI4UmfSPhPGPYe4HEsLGX6hT7ALIt7z
R+5AiJ+1zxu8gijqNWdooSgZTQNw3DajxcTlauol5Ccz2kLZAELum9FiEnKz5qX9AjPTRNkADD+Y0fxi
uEA7F+nXHDesAK/xO4TJYz3XUO0EWF5+SHV/dK0Sx/XUq0oYn9BMh553qp0AYdhDdV+JG/2ey7XUy0K+
0/NOWT2A781oPiVJN0y++q1rlawmtDjQ807ZAZosbCB925rmFbiV8arRdGftAGo7X5gZPzEcptrrjFcN
jwAK1VSXxBk9YM5bQ+s4XkAQ/DL19XgGKJ+7GSAIvhWieldk8QqgTIScAcYeFSKOB8jn2PL02wFqrHYl
MLE8PS/BT+rqJRDJM29Y/JT8ptOv5Sp3swnLxDPADV2CeeCLg7qh1DEvan0UPQcmTy3P229CiZan9w4I
OQdC9MMCPtHH/1HjLvjbPqqnH7n6EZ0zQPZHqY36TvDD9RDSyI/mbA6pW8dZVCbNAgTBA1p0VF9UErOz
P2iXp8zZGqhS6aTFL6kf3H+7iiJwUvfFvSwB/AOYeWWRyPCtmgAAAABJRU5ErkJggg==
</value>
</data>
<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();
if (instance == null)
{
Application.ThreadException += Application_ThreadException;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
@ -80,5 +82,21 @@ namespace ProductionControl
//没有其它的例程返回Null
return null;
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
Exception ex = e.Exception;
using (StreamWriter sw = new StreamWriter(Directory.GetCurrentDirectory() + "\\Log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sw.WriteLine("Global捕获到未处理异常" + ex.GetType().ToString());
sw.WriteLine("异常信息:" + ex.Message);
sw.WriteLine("异常堆栈:" + ex.StackTrace);
sw.WriteLine();
}
MessageBox.Show(string.Format("捕获到未处理异常:{0}\r\n异常信息{1}\r\n异常堆栈{2}", ex.GetType(), ex.Message, ex.StackTrace));
}
}
}

View File

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

View File

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

View File

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

View File

@ -1,385 +1,385 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, 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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<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>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: 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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
<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="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<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">
<value>
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
Q3Avr38BbOOdOnShK0wAAAAASUVORK5CYII=
</value>
</data>
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIgSURBVFhH7Zc/SxxBGMZfCUiEiOAXCFFiI9iZYPBPI2oK
C4srRMzGnZndeTexEL+BXUiaSD5AEsUEBL+AnWhpFCxSphPrSDASEn1nmNvbyc3d7ewtguADP/ZuZt5n
n5t9d+8O7uRQB0TJODFTGC6ngSeDxs9DlUonsHgXBF6VAsc145xTAofrTNpn0rjnEJdjaSHDH/QJPoOI
N/yRnyDE79rnJZ5CFPWYM7RQlIymATh+NKPFxOWb1EvIbTPaQtkAQm6Z0WIScr3mpf0CM9NE2QAMv5jR
/GK4RDsX6dcc31sB5vEXhMlDPddQ7QRYWemiun+6Vonju9SrShgf0EyHnneqnQBh2E11P4kL/Z7Lt6mX
hVzV805ZPYCbZjSfkuQBzM791bVKVhNa7Oh5p+wATRY2kL5tTfMK/JDxqtF0Z+0AajufmRk/MRyi2rOM
Vw2PAArVVCfEN3rAHLWG1nE8hiD4Y+rr8QxQPrczQBCcF6J6V2TxCqBMhHwOjPUWIo4fk8++5em3A9RY
7UpgYnl6XoJL6uplEMlTb1j8hPxm0q/lKrezCcvEM8AFXYIXwF8N6IZSx7yo9VE0AkweWp4334QSLU/v
HRByEYTohyXs08f/UeMu+OtHVE8/cvUjOmeA7I9SG/Wd4IfrIaSRX83ZHFK3jrOoTJoFCIL7tGivvqgk
FhZ+0y5Pm7M1UKVyjxZPUD+4/3YVReCU7os7WQK4BrJrZbt+as2+AAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF
Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E
+3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP
8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx
3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64
eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx
1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt
jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6
Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAP5SURBVFhH7ZfLS1RxFMen9i37G9q2aW2vRVZW6ujMaA/t
3Sqj2lRgUdGD1FWbzAiCgt5Fj0UvBKWiBxRBJFTYk7BNRiXp3E+/7+/cO2M4OnNNaFEHjji/e8/3+/ud
1+/cxH8pJkEmU52trT0YW1OpA7INYcYnwdKljdTU4DWTiaeRXV1dQwgXT4KVK6cMVFX1sW4dvH0LHz/C
hw+lqd6VjbMVhrBC2NIlm8m0smABPHoE3d3Q1ATbtpWmelc2snUYwgphS5Ogvn5ab1lZlj174Pt3SKdh
8WKoqipN9a7C8OMHwhCWMEP44pKtqblGZSV8+gTt7f4UI2JcTGVz7JhhLFmCMEP4sSWoqytn4UI4ftzi
qNPIA4VIxlLZOGKfE8JymMIOaQoLzc2TB5PJHlasgJ8/YceOvDvHo7LduRMGB2H5cjy24wjpRoqLUxPz
58OdO5ZA+r8QcBxVKJ48gdu3PZ44QrrfJWhsnPqtsrKfLVvs9GvXQjJZGDSOVlfDhg2QzcLmzYhDXCFt
XrLp9FEqKuDVKzh/HsrLLY5aU06oqSjDdSKp1iMCPdfv2lo1HnO91hYtMgxhXbli2G7ddcn2kNbEGU3v
ragIaG2FL18glTLC+nro6IBz52DTJti9G06fhpMn4dQpe0frly7ZmouzT7xDh+DsWThyxDDkSW1MJd3S
gudynEaeSEwaSia7PGl/P7S15U995ow1lP37vSEbN8LVq/DmjW1GTae3F7/xCxfg2TPzyIsXcPgwXL9u
Kjx5TWtfv/oDek7HnQjS6dneVRcvwvPn9qJcqz6wd6+t6bSrV8O8ebB9uyXpjBlw86aV2KxZMHcuPH1q
G7t7F59LJ07A/ft2mCicL18al+MMUqk5Cf0puAEZqBxFLJKeHnsmAnll5kwLza1btgGdXDF2ieY38vCh
xX39egvVaBsYNQSKpbrggwdw4wZcvmxluWuXeUCbUcwfP4auLnO/Qibbe/fsmZLPbsTRQ+DzIEpCkUdJ
KFXyKMnkdmW41pYtg1Wr7ER6LgJ5ZevWfNeU15R8USlG1aEkdPnyWxJGkivD16/zZSgjEci9Ao5CI8AI
XL9VnsN7xvDnwojKUNiOY0QZSnKNSCdR61yzZmIbURD4xBy1EUlyrbizc+JbsTDHasWS3GXU0GBemIjL
qLkZhoZ8RRW9jCT+OtauVcPv3uUTqxDBWCobVZLGM2E5zKLXcSR+IFFi9fX92UCiNv75s0/SkgcSicYn
P5Lt22djlU4jT2hTpWgUtoEBhBF7JJP4oVQtVAmkRhN3KJWNbHX7xR1KJbmxXCX0/n38sVw2znbcY7kk
92EyvLGUqrKxNjy+D5NI/uqn2T8gicQvLhCMCTT1/YYAAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripDropDownButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHZSURBVFhHxZZRTsMwDIZ3D0DiKLyPreIGHGU3GVskOAZH
AF54QuIg7TryJXYW2rTL1rX7JatNasd/7D/ZZkOw3Oxe5XV6kHxpqk8ZTguSF2a3vwoBTY49mvKH53xb
/mJLs1sXpnwQ13FQvNV3ham+SLww5XexrZ5J7JN7YpCxz5WEXB5Ppr6l/M0WFOv9PRVYbKr3QMTOyefL
AhKLbfUhwxaojLZmtGrMX+obeU2C3VMNR8ISkulpAQn04SsxskC7AAlth0xNDy9Qd0rGOx3HoK2Q4X8g
ktGOjCBUISXIzg8JICbdjTvzJ5DHH5Ohh1sAAhmLBN+GOSI58VYDrTb09iZCKGG3HRUY1XO+MVkItMqS
AAmiZEkT104EAvGdcHUCSWEk0NV/taw2plpgJ9rCSIAg/OKkDTuugZTglZUMe0GSFImcCgLajb8MPYK6
LTuZ6oX4r0jqFsyMA5AnRoYH5OpgCEL/U4QPAhvvJ5MNtsofA4ccMZ6D3t0rglOGmk+BaixrcyQXlV+E
BMm19NntJbkPGEbirORAjxmBbgE7lk/Z0HhfzTOFTSALYP4C6V9IiUsLsy+nXjQX5cnCcqOxyxXvh1IP
3HUXPBH/T4hkMSEl5Qid1K7Z7A9DvptolGL+2gAAAABJRU5ErkJggg==
</value>
</data>
<data name="tbtnHome.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAARwSURBVFhH1ZZtTFNXGMePwLrpmG9b5ggGppHgHNlMutmN
sLiwbJqxl8TEDy5ZFgMKdPUFcVCBUqDQuRk/zqHTsJdoGJhsRRyI1IuWQq/0ZUBnYQ1IkMiodFgKHUXa
Z+fCsXh77y0v6gf/zf/D7T3n+Z2X5znnoidaSuOmmBLTRjF5fLw63vLWUrVJ8onKJK5QGjY5SowJUGx8
BYra4kB5fT0UXo8FBb1Wq2iNkucb1qwj3R5eVVU7w8vMiZlKwxZHqUkMKtNm4IMX0mtBYYiCAsOLkN/6
POQ1rzgrb1m+gYRZnEraE+PxrLvKzBJYELxlFRxpWQ5SKtKbq1smJ+EWJrUpabuaftO9WLhcHwny5mWQ
27wUcnSiCqUViUjouVVmTtqqphK9jwb+NHx1TQTZVEQlCR9aqj/fWae2bHHMBT9ukcD3ndvgpPVD+K4j
OST88NWnsCPgUFNYPsEIS21JbBKCM/79Zg4Mjt8Af9Bv/J4TDP+cgaNt8bzw7KZwOESFwQEKbSYorkot
b6cIwY/hGd8aM2HUVEh7fW441/U5LzzryhI4qF3SQHBclZolRj74N+Y3wDnRCz6YnLcru3bzweFAIwLZ
JZRMkLP62iQRC+25baQOz+0/jm972qHPrQfP1DDnndfvgmNtr3Hg+y9P+2eCnZXKKJbzwX/s2gX3YJxl
u0sL35oSWAmn6c0Cj8/Jatd+p5oPDtIG5CTYWamMr2uC4Uy2m4fP4QUdDbh/zAAFuOT4sr2yezer7YR/
BPKurWbB9zVMbwFj9nFdQifYg+FMnQ9P2mECRgIut34QstR6RptY7U93fMqBf1k/7fcJekbFxrjBYHgR
HYN3czjgMf8grvUVgnAm4Rr7Vaw+1d1SDlxahyDjIvqMoGekNMQ5HoQzJ5ySjgYPDAXs9g/AEf1zIev8
cn8xq091dwYHnvkHzwDy6Vj7g/D7x+vQZAdOp9sBn+h8VxDOJNzfo/Ws9qfaP+LAMy8i2FuLthP0jBR0
rIbvbDfcKQc33Aq4Z6wR5LpneeG/2Hax2rr8fZBzZSUHjmcPaZqgJFTQ0XK+i6Xc+h7O5z6WO+9WQSn9
cgCOLxr4rWcfjPjsrHa04wdeeLqGpwwxXCx0qxmdZ8AFvRzf9FBgG62Bf33dnHfMf0rdei68Fi//BVRB
sGzl6VcZ+W61IsNLGKaFu2Cft0+1f8wLT7+AYE8N2kqQbOXpV6YIXalFrVFgdf2KK7s7pIemLHDCsk0Q
nlaD6giOX3JdpDZUnf9k2wE3Rs9jmI3lAa8eLvUXQi71giB8bw2aSqsNcR0zytU9E5PdLHKEKjXmbC/Q
rYGj9KvTLmvdyFtqQXDG8/s+xINIklIirxCc72yfC47L7iwJPz9lXw1PPkxFOB8FHCddxc6qBXyU3lcW
hTYcpML+Wiw8tQZ59miQjIRbnPDIw/c3olRZPRpYCBzP+jSefQwJ8/BS4iWUNaAU7JMYbg+Gf1GL3Om4
xDBchh1Nuj1epdaj1Rl1KJ48PolC6H+BVsJLPWxk5wAAAABJRU5ErkJggg==
</value>
</data>
<data name="tbtnJogOnOff.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHISURBVFhH7dfJLwNhGAbwsYRGJEgkEomDxMFB4uDgIHGQ
OEiE/4Gq2ndKUbuq/8W+L0XVrmhPEomDg4NLSSNE8DB0api387VNfRfe5LnMHH7PN8uXfML//ByLq8Rk
cRVjzFkEs7MQ5rMCjJ7mY+Q0D8MnuRhy5GDQkY2B4yz0H2Wi7ygDpsN09B6koecgFd37KTDuJaNrLwmd
uwkw7MTDYI9Dh12DdluMycvQM+4qxa/h27Fos8WgdSsaXu77/OrKZXjLZhSarZHKJ8EN34hE03u87Nfw
xButEcoCPPHGdaoAR7xhTVAW4InXrxIFeOJ1K0SBcOLiqOG1y0SBcOGvePmIGl6zRBQIB/6CJ1/U8OpF
ogALf8aDX7xn5/O+PGp41QJRgLXyJ3g+8hNvt2l89+RRw/XzRAHWY3+E2xc5Lr8uhYXr54gCrHf+gJtv
MdoTFdfEBIJXzhIFWB/cPa6ZCRTXUQXUcOmde3DlN8HguhmiAAuXfrU7XCoSLF4xTRQIBJe211tc+BIK
rqUKBIpLO5wb5yHj2imiQDA4a5Nh4eWTRAGeOF2AI04W4ImTBcRDAy+8bEKgDyg8cDFejh7x0MB95X94
BOENt7Qt5r1VNxkAAAAASUVORK5CYII=
</value>
</data>
<data name="tbtnLeft.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHlSURBVFhH7dfZK0RRHAfwYwlJSSmlPCgPHpQHDx6UB+VB
if/Bvu/7NvZl/CHe7LsxGMNgrPMiSUkpKdmzz88ZOTXO73LPPbgv/Kbv8+d77u/MrUv+h5+0fmJIHyDg
noxBmiECmTRZwzQjBLJpckZpxgjkjhPImyCQP0mgYIpA4TSBohkCxSYCJbMeUGL2gNI5TygzexreGeXh
4R/FacrnvaBiwRveuY/zqyd3wystPlBl8cFPQjd80ReqrX74KeiJ11j9Py8gi5/D7ltMxy2qeM1SgHIB
eXzvQ9Tw2uVAXEAWv4B9FDW8zhakUEACv4QDFBG83haMC2jFr+AQRRRvWAnBBbTg13CEogVvXA1VKCCI
38Axila8aTUMFxDBb+EERQY3rIXjAmr4HZyiyOLN9giFAl/grjfcPZyhyOIt9khc4CucvV4f6L+cjwze
uh6FC6jh7PX6SO88H61420Y0LiCCs50/0evHRwvevhGDC4jibOfP9BbwEcU7NmNxAS042/kLXQAfEbxz
Kw4X0IqznTvp2fmo4V1b8biADM527uR+anj3dgIuIIuznbNZP+1Txbt3EhUKfAMX2bk73rOThAvoiRsd
ybiA66NBL9zoSFH+QNED73Wk4tO7j+ujQfeT/+Eh5BVDb1Kg4N0zSAAAAABJRU5ErkJggg==
</value>
</data>
<data name="tbtnRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHVSURBVFhH7dfJK0VhGAbwYwhJSSmlLJSFhbKwsFAWykKJ
/8E8z/N0zeMfYmee53nmcjeSlJSSkjmzh6N7MrxvzvcdORve27P+Pd95b199yv98nVZbjKXVFo2WrSg0
b0WieTMCTdZwNFrD0LARivr1ENStB6N2LQg1q4GoXg2AZcUfVct+qFz2RcWSD8oXvVG26IXSBU+UzHug
ZM4dxXNuKJpxsdgZftpssfg1fNYVhTMuKJh2hp37PL968g94/pQT8iYc6ZcwDZ90RO5r7Oz7mInnTDjQ
AiL42nE7tPkJnjPOFRA4+fOXn1E8e0yhBUQ++zMeSYzgWaNMAdGdP+GeRBbPHGEKyPzhHnFLIoNnDDMF
RHFt5w+4JhHF04eYAjK4tvN7XJKI4GmDTAFZXNv5Hc5I9PDUAaaAEVzb+S1OSL7DU/qZAkZxdec3OCb5
Dk/pYwoYxa9xRKKHJ/cyBYzgVzgkEcGTuAKy+CUOSETxpB6mgAx+gX0SGTyxmykgip9jj0QWT+AKiOBn
2CUxgid0MQX0cPWGO8XOpxjF4zuZAnq4er2OHda8wttv+QnOF9DBRa5XUZwtYCbOFlAfDWbhcR0K/0Ax
A1dj5/hRHw2mn/wPj6K8APh2UqDO6R6xAAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMlSURBVFhH5VZJaBRREC1cQD15cD8oCnoQRBFEEHG5iCCK
Ry9uGBDBqLjnII2YmV+dMQRElBg0YMzM/38SArmJShQ8iTuoiOJ2UFBwAzcUtar/757u6e4sppOLDx7T
XfWqfvWf+gtkDuUuB4kSNNZBjzPKWocJUiyDnPObBv9jeQM63NnWOwyQ+VOhwQ1L4gNId71V9AO6YQoo
sdubRolXQIurlKgNOsQsq0iHwhOxAnxKUW9VvUCLGhK/jwUzlThnVXF0FiaRfx4VoBNjfSq86GkToXBX
YpBPJQ5YpYEU88nWRHG3oeh8ToxJ5iv6S1baLBYap1Pz/KoSfjTdLPaByq+2Siq0MJN8xSrtwOg1qqi1
GQlKuFWibuisn2q9FXAzafxUpf13StFoEvNyqTgeg9YjjSMEhdtCmuzoDVYUzwKDwr12yAqkWBsJypLQ
3Dwa2o+9DAy8mYShchPJnrwyBktu4HgB+UV2aAMtzkSCsqISl72P63UGOgozoBV/RgKzYNB8jOoC+DDx
ofKHIoFplPiaZuoWFPFJot+n2S822OwWvRWg8VpgjzH3kP7D/bQ0F4JqHGv0YlOyllgSd2jK53q6CNIK
6Goan7zD5d6ZJZmwVDVuj+uJEluh1RljVVVIK0A3LIgkMbwERXea50+CxqURPe94CndabwrSCuDfcDIp
znv2vsBnyoX6NxRzE8q4xFqj4NxKdNJfVpNeQFmsCGx8JA8E3c44+5QMblg/d/oM0PHK7+34BYq5yZ4t
KxTxgZe7xfkaL8DfB7izT+IPmtIj3nuWKOXuBx+XOgMMhS2Zfz1D4qNoAXxJCAoQa6wMoP34BPuUHXj5
anxeKcBxRoDOPw0K0LjHSocGfM9oc757Y/E+40FhT6iAu8Y4ROCrnT+WFC+sMbbnn02/PA4Cyt1Iub8F
4wQXXd522/Bt4DCkO4DoooY5Sr+19L6VZmozPW/pF1mrxA6KO0w8Tc/3bF5DvoOW8nNMAQy+qfKyC4uG
lHRwxVDOLybn9bg4Q/ImpNx1dsQU8KHCd0ONSI1SoFtSQzrRsNwHNR6kD1yVeIr+xwD4C6zOdhgd9skK
AAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMxSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
afGmhyr4D3gQRKHW7r7ddDFt1IoXQehJ9CCiUMGrHrQXEb1YBEGKepEqhVo/2pKmyc7zvc28Nmk3u2kT
CkJ/MGTzezPzfjtvdjYJFEIx6AmJ2C+VvuzXBi07XsokLftZIdmPig4HMLRySBp0ySTzQyGUlmsygV4M
rwyyCVGpN/MdEz9QiD2g6PagTOxUKWPrSamPhjFFZWAbvsjfkZ1Can2hnBm3uYCQCXGkXNGchLaIYd9q
tWAXUiuwP0XbmxLQyXy64kmIWxbdhEulgaVnFaAHkXKFatgjjq9pP0PKQcyC2ohpD6ha9lPIyOcKcWPX
vGHZ2lDspsdxCQESgcNIuYId1XPh22jARc61WPS0ZCz2z+Lmhd+5qVdmZyIJuOwkWg7h5CdATeTeLCa9
OvcnbNjD4o79jFXX+WTVGDl5B7ZiyjyEk5+AkJF7L3xXa1yoqEzYoKMBi27GtOULaCC5MeFbqbF+utch
RAjS9whYkxUmKcfqjPS0SnLvQlrutaTnPoSMmVmxprLjcBILwksAP7fVTEqW/FWTBd3xG3QPpnDQlIL6
5n44Fzbtx+EEPe+QIshLgGTR7YqemSzcxM1qjan5RpG4XIjgSgUEL0xmogNwHEPKh0jgcwTBsLl0fq7G
JiqbgO7PeoDW4MVKiAReAjpu0327L/1K+z33fD02CEcxLA82jmXWiGyQ3UWmGCLYS0CA0hrWzWNioHgZ
f1o67tNtGBkIWnQn5/lTgFQxRKCnAIZoEqJqwn4qG9kvkjGxIOLcrDFhD2KYI4D3B68CUsUQQX4CBPgb
LmbRMH/rRUzoYeP1Ia+Oasz9XZp29hN0r76AUmi/DnvbEnCsxYKzrSkIIr1+AkphQ8CGgP9HgNwHh5Cq
Kup7YEctmZr3EDAOXIDfz/K1gg2tLRKZWJC03FukisHm+6hTBR0IUlWFpENnPr/9CKliSBo9EtTSP9Fp
WNbBZNZfsRFIsDfgkETob56b///ELVeCNeCpOpKedkRU2Xj5mZBruFVpsCPoriML39ySrNWcu9ephlss
QyDwD5znNAxEqPI/AAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbtnScannerList.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGZSURBVFhH7VTBccMwDPMmbdJFOko26LVeoJtkiMTXZ0fp
KC1BkxGswI5zsfsy7nBRJIigSMnNhg1LYde1x935/XvArv18+np7Dsl6gNG+a38VsRay29ifPw7YcC+V
MZO1L6f2NeyGmBNoKcIrbAuUcE2GbYESOU/tj5x/kGFbcCUyY8yjZ2sk4aaMWmB9OsZSoxLAOi5tPjMk
6vdoZrIemKFECOhGPGfve/QmG5BQvUcx5AVKdMVoC+BGlkzOg0g4lmXVmCErUKKaeXK/F/YfhhgjGbSD
k/C5iSSgGUCJBrRgIXWtaoOb0tpUK3wDQ4mYCOa6/mt5uaA1UAG0BmOviogFupihRMwsLcxzrODtiWpl
qxRdzFAiZp6aT6jAFVq2AmGaJ0S/fWMFfxlm7GNLVsUCXcxQopppihPWSWCMea7Osq/AmMHDrP/qGf3U
tA5MnR4MWYESKSJwnhy/3mcjP8upy5cMaYESjREn5fIzshq3GPICJZpDGOadUOtjDNuCewM8yrAt+M8E
+LJewM9oVcZHasOGHk3zB26It08saVcbAAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbtnStopRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>332, 17</value>
</metadata>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, 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="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<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>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: 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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<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:sequence>
<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="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<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">
<value>
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
h+BeXv8CTiWdOACz1MoAAAAASUVORK5CYII=
</value>
</data>
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIgSURBVFhH7ZdPS9xAGMZfKUiFiuAXKFXqRfBmi8U/F1EL
HrzsQcSmZmaSedN6EL+Bt9JeKv0AbRVbEPwC3kSPVsFDj72J50qxUlp9Z5jNZrqzu5lsEAQf+JHdmXmf
PDt5k92FOznUAVEyTswUhstp4Mmg8fNQpdIJLN4FgVelwHHNOOeUwOE6k/aZNO45xOVYWsjwB32CzyDi
DX/kJwjxu/Z5iacQRT3mDC0UJaNpAI4fzWgxcfkm9RJy24y2UDaAkFtmtJiEXK95ab/AzDRRNgDDL2Y0
vxgu0c5F+jXH91aAefwFYfJQzzVUOwFWVrqo7p+uVeL4LvWqEsYHNNOh551qJ0AYdlPdT+JCv+fybepl
IVf1vFNWD+CmGc2nJHkAs3N/da2S1YQWO3reKTtAk4UNpG9b07wCP2S8ajTdWTuA2s5nZsZPDIeo9izj
VcMjgEI11QnxjR4wR62hdRyPIQj+mPp6PAOUz+0MEATnhajeFVm8AigTIZ8DY72FiOPH5LNvefrtADVW
uxKYWJ6el+CSunoZRPLUGxY/Ib+Z9Gu5yu1swjLxDHBBl+AF8FcDuqHUMS9qfRSNAJOHlufNN6FEy9N7
B4RcBCH6YQn79PF/1LgL/voR1dOPXP2Izhkg+6PURn0n+OF6CGnkV3M2h9St4ywqk2YBguA+LdqrLyqJ
hYXftMvT5mwNVKnco8UT1A/uv11FETil++JOlgCuAYomZbUlhJ9KAAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF
Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E
+3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP
8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx
3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64
eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx
1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt
jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6
Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAP5SURBVFhH7ZfLb0xxFMeHvaW/wdbG2nOhKNpOOzOtVutt
pYINkhLEI22tbBSRSEi8icfCK5IK4pEQiWhC6x2pjQoa7dyP3/d37p2pdNqZW00sOMlpOr97z/f7+53X
79zEfykmQSZTla2p2RdbU6m9sg1hxibBkiVNVFfjNZOJp5FdbW1jCBdPgmXLJvVXVvayejW8fQsfP8KH
D6Wp3pWNsxWGsELY0iWbybQzfz48egR37kBzM2zeXJrqXdnI1mEIK4QtTYK6uik906dn2bkTvn+HdBoW
LYLKytJU7yoMP34gDGEJM4QvLtnq6itUVMCnT9DR4U8xLMbFVDZHjhjG4sUIM4QfXYLa2jIWLICjRy2O
Oo08UIhkNJWNI/Y5ISyHKeyQprDQ0jJxIJnsYulS+PkTtm7Nu3MsKttt22BgABoa8NiOI6QbLi5Ozcyb
B7duWQLp/0LAcVShePIEbt70eOII6X6XoKlp8reKij42brTTr1oFyWRh0DhaVQVr10I2Cxs2IA5xhbR5
yabThygvh1ev4OxZKCuzOGpNOaGmogzXiaRajwj0XL9ratR4zPVaW7jQMIR16ZJhu3XXJTtCWhNnNLWn
vDygvR2+fIFUygjr6uDwYThzBtavhx074ORJOH4cTpywd7R+4YKtuTj7xGtthdOn4eBBw5AntTGVdFsb
nstxGnkiMWEwmez0pH19sH9//tSnTllD2bPHG7JuHVy+DG/e2GbUdF6/xm/83Dl49sw88uIFHDgAV6+a
Ck9e09rXr/6AntNxJ4J0epZ31fnz8Py5vSjXqg/s2mVrOu2KFTB3LmzZYkk6bRpcv24lNnMmzJkDT5/a
xu7exefSsWNw/74dJgrny5fG5TiDVGp2Qn8KbkAGKkcRi6Sry56JQF6ZMcNCc+OGbUAnV4xdovmNPHxo
cV+zxkI10gZGDIFiqS744AFcuwYXL1pZbt9uHtBmFPPHj6Gz09yvkMn23j17puSzG3HkEPg8iJJQ5FES
SpU8SjK5XRmutfp6WL7cTqTnIpBXNm3Kd015TckXlWJUHUpCly+/JWEkuTLs7s6XoYxEIPcKOAqNACNw
/VZ5Du0ZQ58LIypDYTuOYWUoyTUinUStc+XK8W1EQeATc8RGJMm14tu3x78VC3O0VizJXUaNjeaF8biM
WlpgcNBXVNHLSOKvY+1aNfzuXT6xChGMprJRJWk8E5bDLHodR+IHEiVWb++fDSRq458/+yQteSCRaHzy
I9nu3TZW6TTyhDZVikZh6+9HGLFHMokfStVClUBqNHGHUtnIVrdf3KFUkhvLVULv38cfy2XjbMc8lkty
HyZDG0upKhtrw2P7MInkr36a/QOSSPwC7XWMAdQj9psAAAAASUVORK5CYII=
</value>
</data>
<data name="toolStripDropDownButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHZSURBVFhHxZZRTsMwDIZ3D0DiKLyPreIGHGU3GVskOAZH
AF54QuIg7TryJXYW2rTL1rX7JatNasd/7D/ZZkOw3Oxe5XV6kHxpqk8ZTguSF2a3vwoBTY49mvKH53xb
/mJLs1sXpnwQ13FQvNV3ham+SLww5XexrZ5J7JN7YpCxz5WEXB5Ppr6l/M0WFOv9PRVYbKr3QMTOyefL
AhKLbfUhwxaojLZmtGrMX+obeU2C3VMNR8ISkulpAQn04SsxskC7AAlth0xNDy9Qd0rGOx3HoK2Q4X8g
ktGOjCBUISXIzg8JICbdjTvzJ5DHH5Ohh1sAAhmLBN+GOSI58VYDrTb09iZCKGG3HRUY1XO+MVkItMqS
AAmiZEkT104EAvGdcHUCSWEk0NV/taw2plpgJ9rCSIAg/OKkDTuugZTglZUMe0GSFImcCgLajb8MPYK6
LTuZ6oX4r0jqFsyMA5AnRoYH5OpgCEL/U4QPAhvvJ5MNtsofA4ccMZ6D3t0rglOGmk+BaixrcyQXlV+E
BMm19NntJbkPGEbirORAjxmBbgE7lk/Z0HhfzTOFTSALYP4C6V9IiUsLsy+nXjQX5cnCcqOxyxXvh1IP
3HUXPBH/T4hkMSEl5Qid1K7Z7A9DvptolGL+2gAAAABJRU5ErkJggg==
</value>
</data>
<data name="tbtnHome.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAARwSURBVFhH1ZZtTFNXGMePwLrpmG9b5ggGppHgHNlMutmN
sLiwbJqxl8TEDy5ZFgMKdPUFcVCBUqDQuRk/zqHTsJdoGJhsRRyI1IuWQq/0ZUBnYQ1IkMiodFgKHUXa
Z+fCsXh77y0v6gf/zf/D7T3n+Z2X5znnoidaSuOmmBLTRjF5fLw63vLWUrVJ8onKJK5QGjY5SowJUGx8
BYra4kB5fT0UXo8FBb1Wq2iNkucb1qwj3R5eVVU7w8vMiZlKwxZHqUkMKtNm4IMX0mtBYYiCAsOLkN/6
POQ1rzgrb1m+gYRZnEraE+PxrLvKzBJYELxlFRxpWQ5SKtKbq1smJ+EWJrUpabuaftO9WLhcHwny5mWQ
27wUcnSiCqUViUjouVVmTtqqphK9jwb+NHx1TQTZVEQlCR9aqj/fWae2bHHMBT9ukcD3ndvgpPVD+K4j
OST88NWnsCPgUFNYPsEIS21JbBKCM/79Zg4Mjt8Af9Bv/J4TDP+cgaNt8bzw7KZwOESFwQEKbSYorkot
b6cIwY/hGd8aM2HUVEh7fW441/U5LzzryhI4qF3SQHBclZolRj74N+Y3wDnRCz6YnLcru3bzweFAIwLZ
JZRMkLP62iQRC+25baQOz+0/jm972qHPrQfP1DDnndfvgmNtr3Hg+y9P+2eCnZXKKJbzwX/s2gX3YJxl
u0sL35oSWAmn6c0Cj8/Jatd+p5oPDtIG5CTYWamMr2uC4Uy2m4fP4QUdDbh/zAAFuOT4sr2yezer7YR/
BPKurWbB9zVMbwFj9nFdQifYg+FMnQ9P2mECRgIut34QstR6RptY7U93fMqBf1k/7fcJekbFxrjBYHgR
HYN3czjgMf8grvUVgnAm4Rr7Vaw+1d1SDlxahyDjIvqMoGekNMQ5HoQzJ5ySjgYPDAXs9g/AEf1zIev8
cn8xq091dwYHnvkHzwDy6Vj7g/D7x+vQZAdOp9sBn+h8VxDOJNzfo/Ws9qfaP+LAMy8i2FuLthP0jBR0
rIbvbDfcKQc33Aq4Z6wR5LpneeG/2Hax2rr8fZBzZSUHjmcPaZqgJFTQ0XK+i6Xc+h7O5z6WO+9WQSn9
cgCOLxr4rWcfjPjsrHa04wdeeLqGpwwxXCx0qxmdZ8AFvRzf9FBgG62Bf33dnHfMf0rdei68Fi//BVRB
sGzl6VcZ+W61IsNLGKaFu2Cft0+1f8wLT7+AYE8N2kqQbOXpV6YIXalFrVFgdf2KK7s7pIemLHDCsk0Q
nlaD6giOX3JdpDZUnf9k2wE3Rs9jmI3lAa8eLvUXQi71giB8bw2aSqsNcR0zytU9E5PdLHKEKjXmbC/Q
rYGj9KvTLmvdyFtqQXDG8/s+xINIklIirxCc72yfC47L7iwJPz9lXw1PPkxFOB8FHCddxc6qBXyU3lcW
hTYcpML+Wiw8tQZ59miQjIRbnPDIw/c3olRZPRpYCBzP+jSefQwJ8/BS4iWUNaAU7JMYbg+Gf1GL3Om4
xDBchh1Nuj1epdaj1Rl1KJ48PolC6H+BVsJLPWxk5wAAAABJRU5ErkJggg==
</value>
</data>
<data name="tbtnJogOnOff.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHISURBVFhH7dfJLwNhGAbwsYRGJEgkEomDxMFB4uDgIHGQ
OEiE/4Gq2ndKUbuq/8W+L0XVrmhPEomDg4NLSSNE8DB0api387VNfRfe5LnMHH7PN8uXfML//ByLq8Rk
cRVjzFkEs7MQ5rMCjJ7mY+Q0D8MnuRhy5GDQkY2B4yz0H2Wi7ygDpsN09B6koecgFd37KTDuJaNrLwmd
uwkw7MTDYI9Dh12DdluMycvQM+4qxa/h27Fos8WgdSsaXu77/OrKZXjLZhSarZHKJ8EN34hE03u87Nfw
xButEcoCPPHGdaoAR7xhTVAW4InXrxIFeOJ1K0SBcOLiqOG1y0SBcOGvePmIGl6zRBQIB/6CJ1/U8OpF
ogALf8aDX7xn5/O+PGp41QJRgLXyJ3g+8hNvt2l89+RRw/XzRAHWY3+E2xc5Lr8uhYXr54gCrHf+gJtv
MdoTFdfEBIJXzhIFWB/cPa6ZCRTXUQXUcOmde3DlN8HguhmiAAuXfrU7XCoSLF4xTRQIBJe211tc+BIK
rqUKBIpLO5wb5yHj2imiQDA4a5Nh4eWTRAGeOF2AI04W4ImTBcRDAy+8bEKgDyg8cDFejh7x0MB95X94
BOENt7Qt5r1VNxkAAAAASUVORK5CYII=
</value>
</data>
<data name="tbtnLeft.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHlSURBVFhH7dfZK0RRHAfwYwlJSSmlPCgPHpQHDx6UB+VB
if/Bvu/7NvZl/CHe7LsxGMNgrPMiSUkpKdmzz88ZOTXO73LPPbgv/Kbv8+d77u/MrUv+h5+0fmJIHyDg
noxBmiECmTRZwzQjBLJpckZpxgjkjhPImyCQP0mgYIpA4TSBohkCxSYCJbMeUGL2gNI5TygzexreGeXh
4R/FacrnvaBiwRveuY/zqyd3wystPlBl8cFPQjd80ReqrX74KeiJ11j9Py8gi5/D7ltMxy2qeM1SgHIB
eXzvQ9Tw2uVAXEAWv4B9FDW8zhakUEACv4QDFBG83haMC2jFr+AQRRRvWAnBBbTg13CEogVvXA1VKCCI
38Axila8aTUMFxDBb+EERQY3rIXjAmr4HZyiyOLN9giFAl/grjfcPZyhyOIt9khc4CucvV4f6L+cjwze
uh6FC6jh7PX6SO88H61420Y0LiCCs50/0evHRwvevhGDC4jibOfP9BbwEcU7NmNxAS042/kLXQAfEbxz
Kw4X0IqznTvp2fmo4V1b8biADM527uR+anj3dgIuIIuznbNZP+1Txbt3EhUKfAMX2bk73rOThAvoiRsd
ybiA66NBL9zoSFH+QNED73Wk4tO7j+ujQfeT/+Eh5BVDb1Kg4N0zSAAAAABJRU5ErkJggg==
</value>
</data>
<data name="tbtnRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHVSURBVFhH7dfJK0VhGAbwYwhJSSmlLJSFhbKwsFAWykKJ
/8E8z/N0zeMfYmee53nmcjeSlJSSkjmzh6N7MrxvzvcdORve27P+Pd95b199yv98nVZbjKXVFo2WrSg0
b0WieTMCTdZwNFrD0LARivr1ENStB6N2LQg1q4GoXg2AZcUfVct+qFz2RcWSD8oXvVG26IXSBU+UzHug
ZM4dxXNuKJpxsdgZftpssfg1fNYVhTMuKJh2hp37PL968g94/pQT8iYc6ZcwDZ90RO5r7Oz7mInnTDjQ
AiL42nE7tPkJnjPOFRA4+fOXn1E8e0yhBUQ++zMeSYzgWaNMAdGdP+GeRBbPHGEKyPzhHnFLIoNnDDMF
RHFt5w+4JhHF04eYAjK4tvN7XJKI4GmDTAFZXNv5Hc5I9PDUAaaAEVzb+S1OSL7DU/qZAkZxdec3OCb5
Dk/pYwoYxa9xRKKHJ/cyBYzgVzgkEcGTuAKy+CUOSETxpB6mgAx+gX0SGTyxmykgip9jj0QWT+AKiOBn
2CUxgid0MQX0cPWGO8XOpxjF4zuZAnq4er2OHda8wttv+QnOF9DBRa5XUZwtYCbOFlAfDWbhcR0K/0Ax
A1dj5/hRHw2mn/wPj6K8APh2UqDO6R6xAAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMlSURBVFhH5VZJaBRREC1cQD15cD8oCnoQRBFEEHG5iCCK
Ry9uGBDBqLh7kEacmV+dMQRElCgaMGbm/z8JgdxEJQqexB1URHE7KCi4gRuKWtX/d0/3dHcW08nFB4/p
rnpVv/pP/QUyh3KXgkQJGg9BtzPCWocIUiyBnPObBv9jeQPa3ZnWOwSQhZOhwQ3L4gNId61V9AG6YRIo
sdObRolXQIurlKgV2sUMq0iHwuOxAnxKkbOqHqBFHYnfx4KZSpyzqjg6ihPIP4cK0ImxPhVe9LSJULgj
McinEvus0kCKuWRrorjbUHI+J8Yk8xX9JcttFguNU6l5ftUIP5puFntAFVZaJRVanE6+Uo22f/QaVdTb
jAQl3BpRF3TkJltvFdxMGj/VaP+dUjSaxLxcqo7HoPVw4whB4ZaQJjt6g5XEs8CgcLcdsgopVkeCsiQ0
N4+EtqMvAwNvJmGo/HiyJ6+MgZIbOF5AYYEd2kCL05GgrKjEZe/jepyB9uI0aMGfkcAsGDQfo7YAPkx8
qMKBSGAaJb6mmboFJXyS6Pdp9ot1NrtFTwVovBbYY8w/pP9wLy3N+aAaRxu92JCsJZbFHZry2Z4ugrQC
OpvGJu9w+XdmSSYsVY1b43qixBZocUZZVQ3SCtAN8yJJDC9ByZ3i+ZOgcXFEzzuewu3Wm4K0Avg3nEyK
8569N/CZciH3hmJuQgUXWWsUnFuJDvrL6tILqIhlgY2P5P6gyxljn5LBDevnTp8BOl75vQ2/QCk/0bNl
hRI+8HKfcb7GC/D3Ae7sE/iDpvSw954lyvn7wcelzgBD4ZnMv54h8VG0AL4kBAWIVVYG0HZsnH3KDrx8
NT6vFuA4w0AXngYFaNxlpYMDvme0Ot+9sXif8aCwO1TAXWMcJPDVzh9LihfWGNvzz6ZfHgcA5a6n3N+C
cYKLLm+7rfg2cBjSHUB0UsMcod96et9MM7WRnjf1iaxVYhvFHSSeoud7Nq8h30HLhVmmAAbfVHnZhUWD
Sjq4YqgUFpLzelycIXkTUu4aO2IK+FDhu6FGpEYp0i2pIZ1oWOmFGvfTB65IPEX/YwD8BXmPdhMXTqCo
AAAAAElFTkSuQmCC
</value>
</data>
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMxSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
afGmhyL4D3gQRKHW7r7ddDFt1IoXQehJ9CCiUMGrHrQXEb1YBMGKepEqhVo/2pKmyc7zvc28Nmk3u2kT
CkJ/MGTzezPzfjtvdjYJFEIx6AmJ2C+UvuzXBi37qZRJWvazQrIfFB0OYGjlkDTokknmh0IoLddkAr0Y
XhlkE6JSb+Y7Jr6vEHtA0e1BmdipUsbWk1IfDWOKysA2fJ6/IzuF1PpC6R63uYCQCXGkXNGchLaIYd9s
tWAXUiuwP0XbmxLQyXy64kmIWxbdhEulgaVnFaAHkXKFatgjjq9pP0XKQcyC2ohpD6ha9mPIyOcKcWPX
vGHZ2lDshsdxCQESgcNIuYId1TPh22jABc61WPS0ZCz2z+Lmhd+5qZdnZyIJuOQkWg7h5CdATeReLya9
MvcnbNjD4o79jFXX+WTVGDl5G7ZiyjyEk5+AkJF7J3xXa1yoqEzYoKMBi27GtOULaCC5MeFbqbF+utsh
RAjS9whYkxUmKcfqjPS0SnJvQ1rulaTn3oeMmVmxprLjcBILwksAP7fVTEqW/GWTBd3x63QPpnDQlIL6
5n44GzbtR+EEPeeQIshLgGTR7YqemSzcxM1qjan5RpG4XIjgSgUEz09mogNwHEPKh0jgcwTBsLl0fq7G
JiqbgO7PeoDW4MVKiAReAjpu0X27L/5K+z33fD02CEcxLA82jmXWiGyQ3UGmGCLYS0CA0hrWzWNioHgZ
f1o67tFtGBkIWnQn5/lTgFQxRKCnAIZoEqJqwn4iG9kvkjGxIOLcrDFhD2KYI4D3B68CUsUQQX4CBPgb
LmbRMH/rRUzoYeP1Aa+Oasz9XZp29mN0r76AUmi/BnvbEnCsxYIzrSkIIr1+AkphQ8CGgP9HgNwHh5Cq
Kup7YEctmZr3EDAOXIDfz/K1gg2tLRKZWJC03BukisHm+6hTBR0IUlWFpENnPr/9EKliSBo9EtTSP9Fp
WNbBZNZfsRFIsDfgkETob56b///ELVeCNeCpOpKedkRU2Xj5mZCruFVpsCPoriML39ySrNWcu9ephlss
QyDwD2y3NAccDi03AAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbtnScannerList.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGZSURBVFhH7VTBccMwDPMmbdJFOko26LVeoJtkiMTXZ0fp
KC1BkxGswI5zsfsy7nBRJIigSMnNhg1LYde1x935/XvArv18+np7Dsl6gNG+a38VsRay29ifPw7YcC+V
MZO1L6f2NeyGmBNoKcIrbAuUcE2GbYESOU/tj5x/kGFbcCUyY8yjZ2sk4aaMWmB9OsZSoxLAOi5tPjMk
6vdoZrIemKFECOhGPGfve/QmG5BQvUcx5AVKdMVoC+BGlkzOg0g4lmXVmCErUKKaeXK/F/YfhhgjGbSD
k/C5iSSgGUCJBrRgIXWtaoOb0tpUK3wDQ4mYCOa6/mt5uaA1UAG0BmOviogFupihRMwsLcxzrODtiWpl
qxRdzFAiZp6aT6jAFVq2AmGaJ0S/fWMFfxlm7GNLVsUCXcxQopppihPWSWCMea7Osq/AmMHDrP/qGf3U
tA5MnR4MWYESKSJwnhy/3mcjP8upy5cMaYESjREn5fIzshq3GPICJZpDGOadUOtjDNuCewM8yrAt+M8E
+LJewM9oVcZHasOGHk3zB26It08saVcbAAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbtnStopRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>332, 17</value>
</metadata>
</root>

View File

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

View File

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

View File

@ -114,6 +114,10 @@ namespace Models
//抓取点位
[SugarColumn(IsNullable = true)]
public string GetPointList { get; set; }
//2023-12-18 加入mark干扰判断是否主栅
public int MarkDisturb { get; set; }
public int MainGrid { get; set; }
}
/// <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点选项