Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
NS100
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 10ae6846
由
刘韬
编写于
2025-03-03 11:07:01 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
026477d4
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
447 行增加
和
54 行删除
BLL/LabelingPosition.cs
BLL/MatchAnalysis.cs
BLL/MaterialEdit.cs
SmartScan/Form/FrmCodeExtract.cs
SmartScan/Language/en-US.lngres
SmartScan/Language/zh-CN.lngres
SmartScan/PlusSettingFrm/FrmSetPlus - 复制.Designer.cs
SmartScan/PlusSettingFrm/FrmSetPlus - 复制.cs
SmartScan/PlusSettingFrm/FrmSetPlus - 复制.resx
SmartScan/PlusSettingFrm/FrmSetPlus.Designer.cs
SmartScan/PlusSettingFrm/FrmSetPlus.cs
SmartScan/PlusSettingFrm/UsrKeywordlabeling.cs
SmartScan/Program.cs
SmartScan/SmartScan.csproj
SmartScan/WebCallWork.cs
BLL/LabelingPosition.cs
查看文件 @
10ae684
...
...
@@ -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\\"
;
...
...
BLL/MatchAnalysis.cs
查看文件 @
10ae684
...
...
@@ -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
);
}
...
...
BLL/MaterialEdit.cs
查看文件 @
10ae684
...
...
@@ -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
);
}
//最小
...
...
SmartScan/Form/FrmCodeExtract.cs
查看文件 @
10ae684
...
...
@@ -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
);
...
...
SmartScan/Language/en-US.lngres
查看文件 @
10ae684
...
...
@@ -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,,
SmartScan/Language/zh-CN.lngres
查看文件 @
10ae684
...
...
@@ -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,,
SmartScan/PlusSettingFrm/FrmSetPlus - 复制.Designer.cs
0 → 100644
查看文件 @
10ae684
此文件的差异被折叠,
点击展开。
SmartScan/PlusSettingFrm/FrmSetPlus - 复制.cs
0 → 100644
查看文件 @
10ae684
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
();
}
}
}
SmartScan/PlusSettingFrm/FrmSetPlus - 复制.resx
0 → 100644
查看文件 @
10ae684
<?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
SmartScan/PlusSettingFrm/FrmSetPlus.Designer.cs
查看文件 @
10ae684
...
...
@@ -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
);
...
...
SmartScan/PlusSettingFrm/FrmSetPlus.cs
查看文件 @
10ae684
...
...
@@ -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
)
...
...
SmartScan/PlusSettingFrm/UsrKeywordlabeling.cs
查看文件 @
10ae684
...
...
@@ -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
isQRCod
e
)
public
static
Point
LabelingAngle
(
string
keyvalue
,
AMatch
aMatch
,
System
.
Drawing
.
Point
centrality
,
bool
isvaor
,
int
PlateW
,
out
int
angle
,
string
codeTyp
e
)
{
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
;
...
...
SmartScan/Program.cs
查看文件 @
10ae684
...
...
@@ -52,7 +52,7 @@ namespace SmartScan
foreach
(
Process
process
in
processcollection
)
{
if
(
process
.
Id
!=
currentproc
.
Id
)
{
{
// 如果进程的句柄为0,即代表没有找到该窗体,即该窗体隐藏的情况时
if
(
process
.
MainWindowHandle
.
ToInt32
().
Equals
(
0
))
{
...
...
SmartScan/SmartScan.csproj
查看文件 @
10ae684
...
...
@@ -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>
...
...
SmartScan/WebCallWork.cs
查看文件 @
10ae684
...
...
@@ -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
,
isQRCod
e
);
point
=
UsrKeywordlabeling
.
LabelingAngle
(
Value
,
aMatch
,
new
Point
(
bitmapData
.
X
,
bitmapData
.
Y
),
bitmapData
.
IsIDCamera
,
bitmapData
.
PlateW
,
out
angle
,
aMatch
.
CodeTyp
e
);
//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!
Cancel
请
注册
或
登录
后发表评论