Commit 10ae6846 刘韬

1

1 个父辈 026477d4
......@@ -21,7 +21,7 @@ namespace DeviceLibrary.AutoScanAndLabel
/// <returns></returns>
public static Point ClockwiseRotation(Point lable, Point center, double angle)
{
angle += 83;
//angle += 83;
double theta = angle * Math.PI / 180;
double x_new = (lable.X - center.X) * Math.Cos(theta) - (lable.Y - center.Y) * Math.Sin(theta) + center.X;
double y_new = (lable.X - center.X) * Math.Sin(theta) + (lable.Y - center.Y) * Math.Cos(theta) + center.Y;
......@@ -29,7 +29,24 @@ namespace DeviceLibrary.AutoScanAndLabel
return new Point((int)x_new, (int)y_new);
}
public static double distance(Point p1, Point p2)
{
double result;
result = Math.Sqrt((p1.X - p2.X) * (p1.X - p2.X) + (p1.Y - p2.Y) * (p1.Y - p2.Y));
return result;
} /// <summary>
/// 以指定点为中心,测算指定角度,指定长度位置的点
/// </summary>
/// <param name="p1">原点</param>
/// <param name="angle">角度</param>
/// <param name="distance">距离</param>
/// <returns></returns>
public static Point PointWithAngle(Point p1, double angle, double distance)
{
var x2 = p1.X + distance * Math.Cos(angle / 180 * Math.PI);
var y2 = p1.Y + distance * Math.Sin(angle / 180 * Math.PI);
return new Point((int)x2, (int)y2);
}
static void ImageSave(Bitmap bitmap)
{
string filepath = Application.StartupPath + "\\image\\Labeling\\";
......
......@@ -73,10 +73,10 @@ namespace BLL
foreach (var m in tp.Value.MatchCollections) {
LogNet.log.Info($"开始解析关键字:{m.Key}");
//LogNet.log.Info($"匹配到关键字:{m.Key}");
string matchlist = m.Value.barcodeInfo.Text + "\t";
string matchlist = m.Value.barcodeInfo.Text + "\t/\t";
foreach (var item in m.Value.Matchs)
{
matchlist += $"{item.colName},{item.isMatch}\t";
matchlist += $"{item.colName},{item.isMatch},{item.matchDesc}\t/\t";
}
LogNet.log.Info(matchlist);
}
......
......@@ -739,11 +739,23 @@ namespace BLL
var filtercode = code.Substring(startIndex, length);
if (codeMatch[i].MatchISNumber)
{
string numStr= System.Text.RegularExpressions.Regex.Replace(filtercode, @"[^\d]*", "");
if (!int.TryParse(numStr, out int res))
LogNet.log.Info($"开始匹配数字 [{filtercode}]");
string analysisReason = $"\"{filtercode}\"";
if (!int.TryParse(filtercode, out int res))
{
ismatch = false;
filtercode = res.ToString();
MatchAnalysis.AddMatch(codeMatch[i].Keyword, ismatch, codeMatch[i].CodeID, $"是否为数字", $"NG");
analysisReason += $" NG";
}
else
{
filtercode = res.ToString();
analysisReason += $" OK";
}
MatchAnalysis.AddMatch(codeMatch[i].Keyword, ismatch, codeMatch[i].CodeID, $"是否为数字", analysisReason);
}
//最小
......
......@@ -148,7 +148,7 @@ namespace SmartScan
UsrCodeExtractList ctl = sender as UsrCodeExtractList;
foreach (FaceButton btn in matchButton.Keys)
{
if (matchButton[btn] != ctl) continue;
if (!btn.HoldPress) continue;
flowLayoutPanel1.Controls.Remove(btn);
Controls.Remove(matchButton[btn].GetPanel());
matchButton.Remove(btn);
......
......@@ -264,7 +264,40 @@ UsrKeywordlabeling_UpdateLabel 修改关键字 Modify keywords Arial,12,,
UsrKeywordlabeling_SaveLabel 确认 Confirm Arial,12,,
FrmKeyCollection_FrmKeyCollection 选择关键字 Select keywords Arial,12,,
FrmKeyCollection_faceButton1 确认 Confirm Arial,12,,
FrmDataFilePreview_BtnCancel 取消 Cancel 微软雅黑,12,,
FrmDataFilePreview_BtnOK 确认 OK 微软雅黑,12,,
FrmDataFilePreview_LblEncoding 编码格式 Encoding Format 微软雅黑,12,,
FrmDataFilePreview_FrmDataFilePreview 文件预览 File Preview 微软雅黑,12,,
FrmDataFilePreview_BtnCancel 取消 Cancel Arial,13,,
FrmDataFilePreview_BtnOK 确认 OK Arial,14,,
FrmDataFilePreview_LblEncoding 编码格式 Encoding Format Arial,15,,
FrmDataFilePreview_FrmDataFilePreview 文件预览 File Preview Arial,16,,
Dialog_ReplaceData ReplaceData
UsrWorkMode2_ChkAutoPrint 自动打印 Arial,12,,
UsrWorkMode2_ChkPromptAfterPrinting 打印完成后提示 Arial,12,,
UsrWorkMode2_ChkTriggerOpenLight 触发信号亮灯 Arial,12,,
UsrWorkMode2_ChkPrintCompletedClear 标签打印完成后清除数据 Arial,12,,
UsrWorkMode2_ChkOpenMaximize 软件打开最大化 Arial,12,,
UsrWorkMode2_ChkOpenEnterWork 软件打开自动进入工作 Arial,12,,
UsrWorkMode2_ChkLabelEmptyCheck 标签空内容校验 Arial,12,,
UsrWorkMode2_ChkSelectPN 通过服务器查询PN Arial,12,,
UsrWorkMode2_LblDefaultLabel 默认打印标签 Arial,12,,
UsrWorkMode2_RdoVertical 纵向打印 Arial,12,,
UsrWorkMode2_RdoLandscape 横向打印 Arial,12,,
UsrWorkMode2_LblPrint 打印机 Arial,12,,
UsrWorkMode2_RdoNoImage 不保存 Arial,12,,
UsrWorkMode2_RdoCondense 压缩图 Arial,12,,
UsrWorkMode2_RdoOriginal 原始图 Arial,12,,
UsrWorkMode2_LblHistoryImage 追溯图像保存 Arial,12,,
FrmSetPlus_ChkAutoPrint 自动打印 Arial,12,,
FrmSetPlus_ChkPromptAfterPrinting 打印完成后提示 Arial,12,,
FrmSetPlus_ChkTriggerOpenLight 触发信号亮灯 Arial,12,,
FrmSetPlus_ChkPrintCompletedClear 标签打印完成后清除数据 Arial,12,,
FrmSetPlus_ChkOpenMaximize 软件打开最大化 Arial,12,,
FrmSetPlus_ChkOpenEnterWork 软件打开自动进入工作 Arial,12,,
FrmSetPlus_ChkLabelEmptyCheck 标签空内容校验 Arial,12,,
FrmSetPlus_ChkSelectPN 通过服务器查询PN Arial,12,,
FrmSetPlus_LblDefaultLabel 默认打印标签 Arial,12,,
FrmSetPlus_RdoVertical 纵向打印 Arial,12,,
FrmSetPlus_RdoLandscape 横向打印 Arial,12,,
FrmSetPlus_LblPrint 打印机 Arial,12,,
FrmSetPlus_RdoNoImage 不保存 Arial,12,,
FrmSetPlus_RdoCondense 压缩图 Arial,12,,
FrmSetPlus_RdoOriginal 原始图 Arial,12,,
FrmSetPlus_LblHistoryImage 追溯图像保存 Arial,12,,
......@@ -267,4 +267,86 @@ FrmDataFilePreview_BtnCancel 取消 取消 微软雅黑,12,,
FrmDataFilePreview_BtnOK 确认 确认 微软雅黑,12,,
FrmDataFilePreview_LblEncoding 编码格式 编码格式 微软雅黑,12,,
FrmDataFilePreview_FrmDataFilePreview 文件预览 文件预览 微软雅黑,12,,
UsrWorkMode2_ChkAutoPrint 自动打印 自动打印 Arial,12,,
UsrWorkMode2_ChkPromptAfterPrinting 打印完成后提示 打印完成后提示 Arial,12,,
UsrWorkMode2_ChkTriggerOpenLight 触发信号亮灯 触发信号亮灯 Arial,12,,
UsrWorkMode2_ChkPrintCompletedClear 标签打印完成后清除数据 标签打印完成后清除数据 Arial,12,,
UsrWorkMode2_ChkOpenMaximize 软件打开最大化 软件打开最大化 Arial,12,,
UsrWorkMode2_ChkOpenEnterWork 软件打开自动进入工作 软件打开自动进入工作 Arial,12,,
UsrWorkMode2_ChkLabelEmptyCheck 标签空内容校验 标签空内容校验 Arial,12,,
UsrWorkMode2_ChkSelectPN 通过服务器查询PN 通过服务器查询PN Arial,12,,
UsrWorkMode2_LblDefaultLabel 默认打印标签 默认打印标签 Arial,12,,
UsrWorkMode2_RdoVertical 纵向打印 纵向打印 Arial,12,,
UsrWorkMode2_RdoLandscape 横向打印 横向打印 Arial,12,,
UsrWorkMode2_LblPrint 打印机 打印机 Arial,12,,
UsrWorkMode2_RdoNoImage 不保存 不保存 Arial,12,,
UsrWorkMode2_RdoCondense 压缩图 压缩图 Arial,12,,
UsrWorkMode2_RdoOriginal 原始图 原始图 Arial,12,,
UsrWorkMode2_LblHistoryImage 追溯图像保存 追溯图像保存 Arial,12,,
FrmSetPlus_CboLanguage 简体中文 简体中文 Arial,12,,
FrmSetPlus_ChkAutoPrint 自动打印 自动打印 Arial,12,,
FrmSetPlus_ChkPromptAfterPrinting 打印完成后提示 打印完成后提示 Arial,12,,
FrmSetPlus_ChkTriggerOpenLight 触发信号亮灯 触发信号亮灯 Arial,12,,
FrmSetPlus_ChkPrintCompletedClear 标签打印完成后清除数据 标签打印完成后清除数据 Arial,12,,
FrmSetPlus_ChkOpenMaximize 软件打开最大化 软件打开最大化 Arial,12,,
FrmSetPlus_ChkOpenEnterWork 软件打开自动进入工作 软件打开自动进入工作 Arial,12,,
FrmSetPlus_ChkLabelEmptyCheck 标签空内容校验 标签空内容校验 Arial,12,,
FrmSetPlus_ChkSelectPN 通过服务器查询PN 通过服务器查询PN Arial,12,,
FrmSetPlus_LblDefaultLabel 默认打印标签 默认打印标签 Arial,12,,
FrmSetPlus_RdoVertical 纵向打印 纵向打印 Arial,12,,
FrmSetPlus_RdoLandscape 横向打印 横向打印 Arial,12,,
FrmSetPlus_LblPrint 打印机 打印机 Arial,12,,
FrmSetPlus_RdoNoImage 不保存 不保存 Arial,12,,
FrmSetPlus_RdoCondense 压缩图 压缩图 Arial,12,,
FrmSetPlus_RdoOriginal 原始图 原始图 Arial,12,,
FrmSetPlus_LblHistoryImage 追溯图像保存 追溯图像保存 Arial,12,,
FrmSetPlus_pnlCode 条码 条码 Arial,12,,
FrmSetPlus_pnlCodeOp 条码操作 条码操作 Arial,12,,
FrmSetPlus_BtnTemplateValite 模板验证 模板验证 Arial,12,,
FrmSetPlus_BtnExtractCode 提取 提取 Arial,12,,
FrmSetPlus_pnlImg 图片 图片 Arial,12,,
FrmSetPlus_pnlImgOp 图片操作 图片操作 Arial,12,,
FrmSetPlus_BtnCloseLight 关闭光源 关闭光源 Arial,12,,
FrmSetPlus_BtnOpenLight 打开光源 打开光源 Arial,12,,
FrmSetPlus_BtnCameraImage 获取设备图像 获取设备图像 Arial,12,,
FrmSetPlus_BtnLocalImage 打开本地图片 打开本地图片 Arial,12,,
FrmSetPlus_BtnScanCode 识别 识别 Arial,12,,
FrmSetPlus_BtnSaveImage 图片另存 图片另存 Arial,12,,
FrmSetPlus_pnlMaterial 模板 模板 Arial,12,,
FrmSetPlus_pnlMaterialOp 模板操作 模板操作 Arial,12,,
FrmSetPlus_BtnAddMate 新建模板 新建模板 Arial,12,,
FrmSetPlus_BtnDelMate 删除模板 删除模板 Arial,12,,
FrmSetPlus_BtnRenameMate 重命名 重命名 Arial,12,,
FrmSetPlus_btn_adddatetime 添加日期时间 添加日期时间 Arial,12,,
FrmSetPlus_LblContent 生成条件 生成条件 Arial,12,,
FrmSetPlus_LblPlaces 数字位数 数字位数 Arial,12,,
FrmSetPlus_ChkReelIDFillZero 位数不足前面补0 位数不足前面补0 Arial,12,,
FrmSetPlus_LblPrefix 开头字符串 开头字符串 Arial,12,,
FrmSetPlus_LblPostfix 结尾字符串 结尾字符串 Arial,12,,
FrmSetPlus_btn_setriid 切换自动RI 切换自动RI Arial,12,,
FrmSetPlus_BtnAppendKey 添加到生成条件 添加到生成条件 Arial,12,,
FrmSetPlus_BtnUpdateKey 更新 更新 Arial,12,,
FrmSetPlus_BtnDelKey 删除 删除 Arial,12,,
FrmSetPlus_BtnAddKey 添加 添加 Arial,12,,
FrmSetPlus_UpdateLabel 修改关键字 修改关键字 Arial,12,,
FrmSetPlus_AddLabel 添加 添加 Arial,12,,
FrmSetPlus_SaveLabel 确认 确认 Arial,12,,
FrmSetPlus_Xoffset X轴偏移量 X轴偏移量 Arial,12,,
FrmSetPlus_Yoffset Y轴偏移量 Y轴偏移量 Arial,12,,
FrmSetPlus_LabelRotation 标签旋转角度 标签旋转角度 Arial,12,,
FrmSetPlus_RotateAngle 以特征码顺时针旋转角度 以特征码顺时针旋转角度 Arial,12,,
FrmCodeExtract_ChkMatchingSplit 条码分割字符 条码分割字符 Arial,12,,
FrmCodeExtract_ChkMaxLength 最大长度 最大长度 Arial,12,,
FrmCodeExtract_ChkMinLength 最小长度 最小长度 Arial,12,,
FrmCodeExtract_LblKeyword 选择关键字 选择关键字 Arial,12,,
FrmCodeExtract_LblSplitPart 获取分割部分 获取分割部分 Arial,12,,
FrmCodeExtract_ChkLengthEnd 截取至结尾 截取至结尾 Arial,12,,
FrmCodeExtract_ChkMatchingSplit 条码分割字符 条码分割字符 Arial,12,,
FrmCodeExtract_ChkMaxLength 最大长度 最大长度 Arial,12,,
FrmCodeExtract_ChkMinLength 最小长度 最小长度 Arial,12,,
FrmCodeExtract_LblKeyword 选择关键字 选择关键字 Arial,12,,
FrmCodeExtract_LblSplitPart 获取分割部分 获取分割部分 Arial,12,,
FrmCodeExtract_ChkLengthEnd 截取至结尾 截取至结尾 Arial,12,,
FrmCodeExtract_ChoMatchMiddleType 匹配数量等于 匹配数量等于 Arial,12,,
Dialog_ReplaceData ReplaceData ReplaceData Arial,12,,
using Asa.FaceControl;
using BLL;
using Model;
using SmartScan.PlusSettingFrm;
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace SmartScan
{
public partial class FrmSetPlus2 : System.Windows.Forms.Form
{
private readonly Dictionary<FaceButton, Model.ISetMenu> menu = new();
public FrmSetPlus2()
{
InitializeComponent();
return;
//Language.SetLanguage(this);
// this.SizeChanged += FrmSetPlus_SizeChanged;
// this.FormClosing += FrmSetPlus_FormClosing;
//this.Width = 1024;
//this.Height = 738;
this.Top = 15;
this.Left = 0;
WebService.Open(BLLCommon.config.WebService);//启动条码匹配服务
LogNet.log = log4net.LogManager.GetLogger("SmartScan");
}
private void FrmSetPlus_FormClosing(object sender, FormClosingEventArgs e)
{
return;
e.Cancel = true;
ShowWindow(this.Handle, SW_HIDE);
//this.WindowState = FormWindowState.Minimized;
//this.Hide();
}
private void FrmSetPlus_SizeChanged(object sender, EventArgs e)
{
return;
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
}
}
private void FrmSet_Load(object sender, EventArgs e)
{
return;
}
private void BtnMenu_Click(object sender, EventArgs e)
{
foreach (FaceButton button in menu.Keys)
{
bool rtn = button == sender;
button.HoldPress = rtn;
menu[button].GetPanel().Visible = rtn;
}
}
private void BtnOK_Click(object sender, EventArgs e)
{
foreach (FaceButton button in menu.Keys)
menu[button].Save();
string text = Language.Dialog(Model.LanguageDialogKey.SAVE_SUCCEED);
new FaceMessageBox("", text, MessageBoxButtons.OK).ShowDialog();
BLLCommon.extension.Update();
DialogResult = DialogResult.OK;
//WindowState = FormWindowState.Minimized;
ShowWindow(this.Handle, SW_HIDE);
}
public const int SW_HIDE = 0;
[DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
private void BtnCancel_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
FrmSet_Load(this, EventArgs.Empty);
WindowState = FormWindowState.Minimized;
Hide();
}
private void BtnApply_Click(object sender, EventArgs e)
{
foreach (FaceButton button in menu.Keys)
menu[button].Save();
string text = Language.Dialog(Model.LanguageDialogKey.SAVE_SUCCEED);
new FaceMessageBox("", text, MessageBoxButtons.OK).ShowDialog();
BLLCommon.extension.Update();
}
private void CboLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
return;
}
private void BtnHistory_Click(object sender, EventArgs e)
{
FrmRetrospect frm = new FrmRetrospect();
frm.WindowState = FormWindowState.Maximized;
frm.Show();
}
}
}
<?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>
</root>
\ No newline at end of file
......@@ -140,7 +140,7 @@ namespace SmartScan
//
// CboLanguage
//
this.CboLanguage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.CboLanguage.Anchor = System.Windows.Forms.AnchorStyles.None;
this.CboLanguage.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.CboLanguage.BorderStyle = Asa.FaceControl.ControlShape.Rectangle;
this.CboLanguage.BorderWidth = 2;
......@@ -228,7 +228,8 @@ namespace SmartScan
//
// FrmSetPlus
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.AutoSize = true;
this.ClientSize = new System.Drawing.Size(1024, 730);
this.Controls.Add(this.but_Labeling);
......@@ -245,7 +246,6 @@ namespace SmartScan
this.Icon = global::SmartScan.Properties.Resources.NEO_64;
this.MinimizeBox = false;
this.Name = "FrmSetPlus";
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "FrmSet";
this.Load += new System.EventHandler(this.FrmSet_Load);
this.Controls.SetChildIndex(this.BtnMaterial, 0);
......
......@@ -43,7 +43,7 @@ namespace SmartScan
}
private void FrmSet_Load(object sender, EventArgs e)
{
{
foreach (FaceButton button in menu.Keys)
{
Controls.Remove(menu[button].GetPanel());
......@@ -87,25 +87,6 @@ namespace SmartScan
}
}
private void BtnUnlock_Click(object sender, EventArgs e)
{
//if (BtnUnlock.HoldPress)
//{
// BtnUnlock.HoldPress = false;
//}
//else
//{
// DialogResult dr = new FrmUnlock().ShowDialog();
// if (dr == DialogResult.OK)
// BtnUnlock.HoldPress = true;
// else
// return;
//}
//foreach (FaceButton button in menu.Keys)
// menu[button].SetUnlock(BtnUnlock.HoldPress);
}
private void BtnOK_Click(object sender, EventArgs e)
{
foreach (FaceButton button in menu.Keys)
......
......@@ -4,6 +4,7 @@ using DeviceLibrary.AutoScanAndLabel;
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.EMMA;
using DocumentFormat.OpenXml.Wordprocessing;
using log4net.Repository.Hierarchy;
using MemoryRead;
using Model;
using Newtonsoft.Json;
......@@ -34,11 +35,14 @@ namespace SmartScan.PlusSettingFrm
Language.SetLanguage(this);
ClockwiseAngle.Items.Add(0.ToString());
ClockwiseAngle.Items.Add(83.ToString());
ClockwiseAngle.Items.Add(90.ToString());
ClockwiseAngle.Items.Add(180.ToString());
ClockwiseAngle.Items.Add(270.ToString());
ClockwiseAngle.Items.Add(340.ToString());
LabelAngle.Items.Add(0.ToString());
LabelAngle.Items.Add(90.ToString());
LabelAngle.Items.Add(180.ToString());
LabelAngle.Items.Add(270.ToString());
......@@ -260,8 +264,10 @@ namespace SmartScan.PlusSettingFrm
item.key = "";
}
}
public static Point LabelingAngle(string keyvalue, AMatch aMatch, System.Drawing.Point centrality, bool isvaor, int PlateW, out int angle,bool isQRCode)
public static Point LabelingAngle(string keyvalue, AMatch aMatch, System.Drawing.Point centrality, bool isvaor, int PlateW, out int angle,string codeType)
{
Point lable = aMatch.Points;
Point newpoint = aMatch.Points;
var Data = labels.FirstOrDefault(a => a.value == keyvalue);
......@@ -274,10 +280,10 @@ namespace SmartScan.PlusSettingFrm
if (Data!=null)
{
RotateAngle = Data.ClockwiseAngle;
//X += Data.X; Y += Data.Y;
LogUtil.info($"关键字{Data.key}={Data.value};顺时针旋转角度={Data.ClockwiseAngle};xy偏移{Data.X};{Data.Y};标签角度:{Data.LabelAngle}");
//X += Data.X; Y += Data.Y;
}
newpoint = Overwritelabel(centrality, aMatch.Points, isvaor, PlateW, aMatch.Angle, RotateAngle, out angle, isQRCode);
LogUtil.info($"关键字:{Data.key}={Data.value}; 标签随盘心角度={RotateAngle}; xy偏移{Data.X}; {Data.Y}; 标签本体旋转角度:{Data.LabelAngle}");
newpoint = Overwritelabel(centrality, aMatch.Points, isvaor, PlateW, aMatch.Angle, RotateAngle, Data.LabelAngle, out angle, codeType);
//if (Data != null&&Data.LabelAngle > 0)
//{
// angle = Data.LabelAngle;
......@@ -289,39 +295,65 @@ namespace SmartScan.PlusSettingFrm
{
newpoint = MaterialEdit.PointWithAngle(newpoint, angle, Data.Y);
}
LogUtil.info($"处理后角度={angle};处理后贴标位置:{newpoint};标签变换角度:{Data.LabelAngle}");
LogUtil.info($"处理后角度={angle};处理后贴标位置:{newpoint};");
return new Point(newpoint.X, newpoint.Y);
}
public static Point Overwritelabel(Point centrality, Point lable, bool isvaor, int PlateW, int Angle,int RotateAngle, out int angle,bool isQRCode)
//
// 270° (上)
// ↑
//180° ←┼→ 0° (右)
// ↓
// 90° (下)
public static Point Overwritelabel(Point centrality, Point lable, bool isvaor, int PlateW, int Angle,int RotateAngle,int labelangle, out int angle,string codeType)
{
Point Points = LabelingPosition.ClockwiseRotation(lable, centrality, RotateAngle);
if (isvaor)
{
if (isQRCode)
if (codeType.StartsWith("QR Code"))
{
int deg = Angle;
deg += 90;
if (deg > 360)
deg = deg - 360;
angle = ScanningCameraAngle(deg, RotateAngle);
angle = ScanningCameraAngle(deg,0);
}
else
else if (codeType.StartsWith("Data Matrix"))
{
angle = ScanningCameraAngle(Angle, RotateAngle);
angle = ScanningCameraAngle(Angle, 0);
}
Angle = Angle + 270;
var dc1 = LabelingPosition.distance(LabelingPosition.PointWithAngle(lable, Angle, 50), centrality);
var dc2 = LabelingPosition.distance(LabelingPosition.PointWithAngle(lable, Angle + 180, 50), centrality);
//if (dc2 > dc1)
// Angle = Angle + 180;
if (Angle > 360)
Angle = Angle - 360;
LogUtil.info($"结合盘心计算后, dc1:{dc1}, dc2:{dc2}, deg:{Angle}");
angle = Angle + 83 + labelangle;
if (angle > 360)
angle = angle - 360;
if (angle > 360)
angle = angle - 360;
}
else
{
angle = OldAngleAlgo(centrality, lable, PlateW);
}
LogNet.log.Info($"是否id相机={isvaor};新标签位置:{Points};输入角度:{Angle},设定偏转:{RotateAngle},转换后角度:{angle}");
Point Points = LabelingPosition.ClockwiseRotation(lable, centrality, 83 + RotateAngle);
LogNet.log.Info($"是否id相机={isvaor};新标签位置:{Points};输入角度:{Angle},设定盘心偏转:{RotateAngle},设定标签旋转:{labelangle},转换后角度:{angle}");
return Points;
}
public static int ScanningCameraAngle(int angles, int RotateAngle)
{
//ID MVS相机, 右侧为正角度, 左侧为负角度
int angle;
int rotationAngle = RotateAngle+80;// 83;
int rotationAngle = RotateAngle;// 83;
if (angles < 0)
{
angle = angles * -1 + rotationAngle;
......
......@@ -52,7 +52,7 @@ namespace SmartScan
foreach (Process process in processcollection)
{
if (process.Id != currentproc.Id)
{
{
// 如果进程的句柄为0,即代表没有找到该窗体,即该窗体隐藏的情况时
if (process.MainWindowHandle.ToInt32().Equals(0))
{
......
......@@ -128,6 +128,12 @@
<Compile Include="PlusSettingFrm\FrmKeyCollection.Designer.cs">
<DependentUpon>FrmKeyCollection.cs</DependentUpon>
</Compile>
<Compile Include="PlusSettingFrm\FrmSetPlus - 复制.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="PlusSettingFrm\FrmSetPlus - 复制.Designer.cs">
<DependentUpon>FrmSetPlus - 复制.cs</DependentUpon>
</Compile>
<Compile Include="PlusSettingFrm\FrmSetPlus.cs">
<SubType>Form</SubType>
</Compile>
......@@ -323,6 +329,9 @@
<EmbeddedResource Include="PlusSettingFrm\FrmKeyCollection.resx">
<DependentUpon>FrmKeyCollection.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PlusSettingFrm\FrmSetPlus - 复制.resx">
<DependentUpon>FrmSetPlus - 复制.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="PlusSettingFrm\FrmSetPlus.resx">
<DependentUpon>FrmSetPlus.cs</DependentUpon>
</EmbeddedResource>
......
......@@ -168,7 +168,7 @@ namespace SmartScan
BLLCommon.mateEdit.CurrntBitmap?.Dispose();
Bitmap bitmap = null;
MemoryStream stream = null;
bool isQRCode = false;
try
{
if (bitmapData == null)
......@@ -237,7 +237,7 @@ namespace SmartScan
{
if (aMatch.CodeType == "QR Code")
{
isQRCode = true;
LogNet.log.Info("条码数据为QR Code");
}
LogNet.log.Info($"条码数据类型为{aMatch.CodeType}");
......@@ -245,7 +245,7 @@ namespace SmartScan
string key = ConfigHelper.Config.Get("Label_Key", "");
workCodeKeyword.TryGetValue(key, out String Value);
LogNet.log.Info("模板匹配结果:" + rtn + $";关键字{key}:{Value};匹配成功条码xy:X={aMatch.Points.X};Y={aMatch.Points.Y},中心点x={bitmapData.X};y={bitmapData.Y},角度={aMatch.Angle},料盘尺寸={bitmapData.PlateW};匹配成功条码:{string.Join(", ", aMatch.IsCodeUsed)}");
point = UsrKeywordlabeling.LabelingAngle(Value, aMatch, new Point(bitmapData.X, bitmapData.Y), bitmapData.IsIDCamera, bitmapData.PlateW, out angle, isQRCode);
point = UsrKeywordlabeling.LabelingAngle(Value, aMatch, new Point(bitmapData.X, bitmapData.Y), bitmapData.IsIDCamera, bitmapData.PlateW, out angle, aMatch.CodeType);
//point =UsrCustomlabeling.LabelingAngle_New(mateName, aMatch, new Point(bitmapData.X, bitmapData.Y), bitmapData.IsIDCamera, bitmapData.PlateW, out angle);
}
Dictionary<string, string> keys = new Dictionary<string, string>();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!