Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 89781f01
由
LN
编写于
2020-09-09 13:29:03 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
扫码代码更新
1 个父辈
db900060
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
331 行增加
和
112 行删除
source/CodeLibrary/CodeLibrary.csproj
source/CodeLibrary/CodeResourceControl.cs
source/CodeLibrary/FrmCodeDecode.Designer.cs
source/CodeLibrary/FrmCodeDecode.cs
source/CodeLibrary/FrmCodeLearn.Designer.cs
source/CodeLibrary/FrmCodeLearn.cs
source/CodeLibrary/HDCodeHelper.cs
source/CodeLibrary/HDCodeLearnHelper.cs
source/CodeLibrary/ZXingCodeHelper.cs
source/CodeLibrary/camera/Basler.cs
source/CodeLibrary/camera/Common.cs
source/CodeLibrary/camera/HIK.cs
source/CodeLibrary/CodeLibrary.csproj
查看文件 @
89781f0
...
...
@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CodeLibrary</RootNamespace>
<AssemblyName>CodeLibrary</AssemblyName>
<TargetFrameworkVersion>v4.
0
</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.
5
</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
...
...
@@ -22,6 +22,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
...
...
@@ -30,11 +31,11 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Basler.Pylon, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e389355f398382ab, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Basler.Pylon.dll</HintPath>
<Reference Include="Basler.Pylon">
<HintPath>..\..\dll\Basler.Pylon.dll</HintPath>
</Reference>
<Reference Include="halcondotnet">
<HintPath>..\dll\halcondotnet.dll</HintPath>
...
...
@@ -55,6 +56,9 @@
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="zxing">
<HintPath>..\dll\zxing.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="camera\Basler.cs" />
...
...
@@ -84,6 +88,7 @@
<Compile Include="ImageHelper.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="CodeResourceControl.cs" />
<Compile Include="ZXingCodeHelper.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FrmBase.resx">
...
...
source/CodeLibrary/CodeResourceControl.cs
查看文件 @
89781f0
...
...
@@ -85,6 +85,10 @@ namespace CodeLibrary
NoIdLog
(
id
,
defaultStr
);
}
}
if
(
strCurLanguage
==
null
)
{
strCurLanguage
=
""
;
}
return
strCurLanguage
;
}
public
static
string
GetString
(
string
id
,
string
defaultStr
,
params
object
[]
param
)
...
...
source/CodeLibrary/FrmCodeDecode.Designer.cs
查看文件 @
89781f0
此文件的差异被折叠,
点击展开。
source/CodeLibrary/FrmCodeDecode.cs
查看文件 @
89781f0
此文件的差异被折叠,
点击展开。
source/CodeLibrary/FrmCodeLearn.Designer.cs
查看文件 @
89781f0
...
...
@@ -66,9 +66,9 @@
//
this
.
btnStop
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
btnStop
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
btnStop
.
Location
=
new
System
.
Drawing
.
Point
(
949
,
51
);
this
.
btnStop
.
Location
=
new
System
.
Drawing
.
Point
(
949
,
49
);
this
.
btnStop
.
Name
=
"btnStop"
;
this
.
btnStop
.
Size
=
new
System
.
Drawing
.
Size
(
144
,
3
5
);
this
.
btnStop
.
Size
=
new
System
.
Drawing
.
Size
(
144
,
3
2
);
this
.
btnStop
.
TabIndex
=
3
;
this
.
btnStop
.
Text
=
"结束学习"
;
this
.
btnStop
.
UseVisualStyleBackColor
=
true
;
...
...
@@ -78,9 +78,9 @@
//
this
.
btnOpen
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
btnOpen
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
btnOpen
.
Location
=
new
System
.
Drawing
.
Point
(
949
,
1
3
);
this
.
btnOpen
.
Location
=
new
System
.
Drawing
.
Point
(
949
,
1
2
);
this
.
btnOpen
.
Name
=
"btnOpen"
;
this
.
btnOpen
.
Size
=
new
System
.
Drawing
.
Size
(
144
,
3
5
);
this
.
btnOpen
.
Size
=
new
System
.
Drawing
.
Size
(
144
,
3
2
);
this
.
btnOpen
.
TabIndex
=
1
;
this
.
btnOpen
.
Text
=
"开始学习"
;
this
.
btnOpen
.
UseVisualStyleBackColor
=
true
;
...
...
@@ -104,9 +104,9 @@
//
this
.
btnExit
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
btnExit
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
btnExit
.
Location
=
new
System
.
Drawing
.
Point
(
1096
,
51
);
this
.
btnExit
.
Location
=
new
System
.
Drawing
.
Point
(
1096
,
49
);
this
.
btnExit
.
Name
=
"btnExit"
;
this
.
btnExit
.
Size
=
new
System
.
Drawing
.
Size
(
110
,
3
5
);
this
.
btnExit
.
Size
=
new
System
.
Drawing
.
Size
(
110
,
3
2
);
this
.
btnExit
.
TabIndex
=
6
;
this
.
btnExit
.
Text
=
"退出"
;
this
.
btnExit
.
UseVisualStyleBackColor
=
true
;
...
...
@@ -115,7 +115,7 @@
// label1
//
this
.
label1
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
label1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
1
9
);
this
.
label1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
1
8
);
this
.
label1
.
Name
=
"label1"
;
this
.
label1
.
Size
=
new
System
.
Drawing
.
Size
(
110
,
20
);
this
.
label1
.
TabIndex
=
7
;
...
...
@@ -138,16 +138,16 @@
this
.
cmbCodeType
.
DropDownStyle
=
System
.
Windows
.
Forms
.
ComboBoxStyle
.
DropDownList
;
this
.
cmbCodeType
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
cmbCodeType
.
FormattingEnabled
=
true
;
this
.
cmbCodeType
.
Location
=
new
System
.
Drawing
.
Point
(
1
31
,
53
);
this
.
cmbCodeType
.
Location
=
new
System
.
Drawing
.
Point
(
1
17
,
53
);
this
.
cmbCodeType
.
Name
=
"cmbCodeType"
;
this
.
cmbCodeType
.
Size
=
new
System
.
Drawing
.
Size
(
1
86
,
25
);
this
.
cmbCodeType
.
Size
=
new
System
.
Drawing
.
Size
(
1
63
,
25
);
this
.
cmbCodeType
.
TabIndex
=
10
;
this
.
cmbCodeType
.
SelectedIndexChanged
+=
new
System
.
EventHandler
(
this
.
cmbCodeType_SelectedIndexChanged
);
//
// label2
//
this
.
label2
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
label2
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
5
7
);
this
.
label2
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
5
5
);
this
.
label2
.
Name
=
"label2"
;
this
.
label2
.
Size
=
new
System
.
Drawing
.
Size
(
110
,
20
);
this
.
label2
.
TabIndex
=
9
;
...
...
@@ -177,7 +177,7 @@
// lblCount
//
this
.
lblCount
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
lblCount
.
Location
=
new
System
.
Drawing
.
Point
(
323
,
58
);
this
.
lblCount
.
Location
=
new
System
.
Drawing
.
Point
(
286
,
55
);
this
.
lblCount
.
Name
=
"lblCount"
;
this
.
lblCount
.
Size
=
new
System
.
Drawing
.
Size
(
112
,
20
);
this
.
lblCount
.
TabIndex
=
13
;
...
...
@@ -210,7 +210,7 @@
"18"
,
"19"
,
"20"
});
this
.
cmbCount
.
Location
=
new
System
.
Drawing
.
Point
(
4
41
,
54
);
this
.
cmbCount
.
Location
=
new
System
.
Drawing
.
Point
(
4
04
,
53
);
this
.
cmbCount
.
Name
=
"cmbCount"
;
this
.
cmbCount
.
Size
=
new
System
.
Drawing
.
Size
(
64
,
25
);
this
.
cmbCount
.
TabIndex
=
14
;
...
...
@@ -228,9 +228,9 @@
//
this
.
btnClearLog
.
Anchor
=
((
System
.
Windows
.
Forms
.
AnchorStyles
)((
System
.
Windows
.
Forms
.
AnchorStyles
.
Top
|
System
.
Windows
.
Forms
.
AnchorStyles
.
Right
)));
this
.
btnClearLog
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
btnClearLog
.
Location
=
new
System
.
Drawing
.
Point
(
1096
,
1
3
);
this
.
btnClearLog
.
Location
=
new
System
.
Drawing
.
Point
(
1096
,
1
2
);
this
.
btnClearLog
.
Name
=
"btnClearLog"
;
this
.
btnClearLog
.
Size
=
new
System
.
Drawing
.
Size
(
110
,
3
5
);
this
.
btnClearLog
.
Size
=
new
System
.
Drawing
.
Size
(
110
,
3
2
);
this
.
btnClearLog
.
TabIndex
=
16
;
this
.
btnClearLog
.
Text
=
"清理日志"
;
this
.
btnClearLog
.
UseVisualStyleBackColor
=
true
;
...
...
@@ -242,7 +242,7 @@
this
.
chbTest
.
Checked
=
true
;
this
.
chbTest
.
CheckState
=
System
.
Windows
.
Forms
.
CheckState
.
Checked
;
this
.
chbTest
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
chbTest
.
Location
=
new
System
.
Drawing
.
Point
(
53
1
,
56
);
this
.
chbTest
.
Location
=
new
System
.
Drawing
.
Point
(
53
2
,
55
);
this
.
chbTest
.
Name
=
"chbTest"
;
this
.
chbTest
.
Size
=
new
System
.
Drawing
.
Size
(
147
,
21
);
this
.
chbTest
.
TabIndex
=
17
;
...
...
@@ -253,7 +253,7 @@
// btnSelImage
//
this
.
btnSelImage
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
btnSelImage
.
Location
=
new
System
.
Drawing
.
Point
(
783
,
1
5
);
this
.
btnSelImage
.
Location
=
new
System
.
Drawing
.
Point
(
783
,
1
2
);
this
.
btnSelImage
.
Name
=
"btnSelImage"
;
this
.
btnSelImage
.
Size
=
new
System
.
Drawing
.
Size
(
160
,
32
);
this
.
btnSelImage
.
TabIndex
=
19
;
...
...
@@ -286,7 +286,7 @@
//
this
.
chbUseCamera
.
AutoSize
=
true
;
this
.
chbUseCamera
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
chbUseCamera
.
Location
=
new
System
.
Drawing
.
Point
(
53
1
,
18
);
this
.
chbUseCamera
.
Location
=
new
System
.
Drawing
.
Point
(
53
2
,
18
);
this
.
chbUseCamera
.
Name
=
"chbUseCamera"
;
this
.
chbUseCamera
.
Size
=
new
System
.
Drawing
.
Size
(
123
,
21
);
this
.
chbUseCamera
.
TabIndex
=
21
;
...
...
@@ -297,7 +297,7 @@
// btnDelOld
//
this
.
btnDelOld
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
btnDelOld
.
Location
=
new
System
.
Drawing
.
Point
(
783
,
53
);
this
.
btnDelOld
.
Location
=
new
System
.
Drawing
.
Point
(
783
,
49
);
this
.
btnDelOld
.
Name
=
"btnDelOld"
;
this
.
btnDelOld
.
Size
=
new
System
.
Drawing
.
Size
(
160
,
32
);
this
.
btnDelOld
.
TabIndex
=
22
;
...
...
@@ -320,12 +320,13 @@
//
this
.
chbHalcon
.
AutoSize
=
true
;
this
.
chbHalcon
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
chbHalcon
.
Location
=
new
System
.
Drawing
.
Point
(
3
44
,
19
);
this
.
chbHalcon
.
Location
=
new
System
.
Drawing
.
Point
(
3
74
,
18
);
this
.
chbHalcon
.
Name
=
"chbHalcon"
;
this
.
chbHalcon
.
Size
=
new
System
.
Drawing
.
Size
(
115
,
21
);
this
.
chbHalcon
.
TabIndex
=
24
;
this
.
chbHalcon
.
Text
=
"Halcon获取图片"
;
this
.
chbHalcon
.
UseVisualStyleBackColor
=
true
;
this
.
chbHalcon
.
Visible
=
false
;
this
.
chbHalcon
.
CheckedChanged
+=
new
System
.
EventHandler
(
this
.
chbHalcon_CheckedChanged
);
//
// cmbCamera
...
...
@@ -333,9 +334,9 @@
this
.
cmbCamera
.
DropDownStyle
=
System
.
Windows
.
Forms
.
ComboBoxStyle
.
DropDownList
;
this
.
cmbCamera
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
cmbCamera
.
FormattingEnabled
=
true
;
this
.
cmbCamera
.
Location
=
new
System
.
Drawing
.
Point
(
1
31
,
17
);
this
.
cmbCamera
.
Location
=
new
System
.
Drawing
.
Point
(
1
17
,
16
);
this
.
cmbCamera
.
Name
=
"cmbCamera"
;
this
.
cmbCamera
.
Size
=
new
System
.
Drawing
.
Size
(
186
,
25
);
this
.
cmbCamera
.
Size
=
new
System
.
Drawing
.
Size
(
351
,
25
);
this
.
cmbCamera
.
TabIndex
=
25
;
//
// FrmCodeLearn
...
...
source/CodeLibrary/FrmCodeLearn.cs
查看文件 @
89781f0
...
...
@@ -27,9 +27,10 @@ namespace CodeLibrary
private
string
title
=
CodeResourceControl
.
GetString
(
CodeResourceControl
.
title
,
"提示"
);
private
string
imageIsNull
=
CodeResourceControl
.
GetString
(
CodeResourceControl
.
imageIsNull
,
"获取二维码图片为空"
);
private
string
sureDelete
=
CodeResourceControl
.
GetString
(
CodeResourceControl
.
sureDelete
,
"确定删除文件:"
);
private
Bitmap
GetCameraBitmap
()
private
HObject
GetCameraImg
()
{
Bitmap
bitmap
=
null
;
HObject
ho_image
=
null
;
//Bitmap bitmap = null;
int
index
=
cmbCamera
.
SelectedIndex
;
string
camerName
=
cmbCamera
.
Text
;
if
(
index
<
0
)
...
...
@@ -37,22 +38,8 @@ namespace CodeLibrary
MessageBox
.
Show
(
selCamera
);
return
null
;
}
//if (baslerNameList.Contains(camerName))
//{
// BaslerCamera.Instance.Open(camerName);
// BaslerCamera.Instance.GrabOne();
// bitmap = BaslerCamera.Instance.Image;
// BaslerCamera.Instance.Close();
//}
//else
//{
// HIKCamera.Instance.Open(camerName);
// HIKCamera.Instance.GrabOne();
// bitmap = HIKCamera.Instance.Image;
// HIKCamera.Instance.Close();
//}
bitmap
=
Camera
.
_cam
.
GrabOneImage
(
camerName
);
return
bitmap
;
ho_image
=
Camera
.
_cam
.
CaptureOnImage
(
camerName
);
return
ho_image
;
}
private
void
btnOpen_Click
(
object
sender
,
EventArgs
e
)
{
...
...
@@ -73,14 +60,16 @@ namespace CodeLibrary
}
else
{
Bitmap
bitmap
=
GetCameraBitmap
();
if
(
bitmap
!=
null
)
// Bitmap bitmap = GetCameraBitmap();
HObject
ho_Image
=
GetCameraImg
();
if
(
ho_Image
!=
null
)
{
HDLogUtil
.
info
(
"从相机【"
+
cmbCamera
.
Text
+
"】获取到一张图片"
);
ClearPicImg
();
pictureBox1
.
Image
=
(
Image
)
bitmap
.
Clone
();
HObject
hoImage
=
HDCodeHelper
.
Bitmap2HObjectBpp24
(
bitmap
);
HDCodeLearnHelper
.
DefaultImage
=
hoImage
;
//pictureBox1.Image = (Image)bitmap.Clone();
//HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper
.
DefaultImage
=
ho_Image
;
ShowImage
(
ho_Image
);
}
else
{
...
...
@@ -97,8 +86,10 @@ namespace CodeLibrary
return
;
}
Bitmap
bitmap
=
new
Bitmap
(
pictureBox1
.
Image
);
HObject
Image
=
HDCodeHelper
.
Bitmap2HObjectBpp24
(
bitmap
);
HObject
Image
;
HDCodeHelper
.
Bitmap2HObjectBpp24
(
bitmap
,
out
Image
);
HDCodeLearnHelper
.
DefaultImage
=
Image
;
ShowImage
(
Image
);
}
Task
.
Factory
.
StartNew
(
delegate
()
{
...
...
@@ -107,21 +98,12 @@ namespace CodeLibrary
FormStatus
(
true
);
}
private
void
LoadCamera
()
{
//string[] camerName = BaslerCamera.Instance.CameraName;
//baslerNameList.AddRange(camerName);
{
cmbCamera
.
Items
.
Clear
();
foreach
(
string
str
in
Camera
.
_cam
.
Name
)
{
cmbCamera
.
Items
.
Add
(
str
);
}
//camerName = HIKCamera.Instance.CameraName;
//hikNameList.AddRange(camerName);
//foreach (string str in camerName)
//{
// cmbCamera.Items.Add(str);
//}
}
if
(
cmbCamera
.
Items
.
Count
>
0
)
{
cmbCamera
.
SelectedIndex
=
0
;
...
...
@@ -306,5 +288,15 @@ namespace CodeLibrary
cmbCamera
.
Visible
=
true
;
}
}
public
void
ShowImage
(
HObject
ho_Image
)
{
HTuple
width
,
height
;
HOperatorSet
.
GetImageSize
(
ho_Image
,
out
width
,
out
height
);
int
dWidth
=
(
int
)
width
.
D
;
int
dHeight
=
(
int
)
height
.
D
;
this
.
hWindowControl1
.
HalconWindow
.
SetPart
(
0
,
0
,
dHeight
,
dWidth
);
HOperatorSet
.
DispObj
(
ho_Image
,
hWindowControl1
.
HalconWindow
);
}
}
}
source/CodeLibrary/HDCodeHelper.cs
查看文件 @
89781f0
...
...
@@ -6,6 +6,7 @@ using System.Drawing.Imaging;
using
System.IO
;
using
System.Linq
;
using
System.Text
;
using
System.Text.RegularExpressions
;
using
System.Threading.Tasks
;
using
System.Windows.Forms
;
namespace
CodeLibrary
...
...
@@ -41,19 +42,20 @@ namespace CodeLibrary
}
return
DecodeCode
(
ho_Image
,
codeCount
,
codeParamPath
,
paramType
);
}
/// <summary>
/// 根据图片解析二维码
/// </summary>
/// <param name="map">图片对象</param>
/// <param name="codeCount">二维码数量</param>
/// <param name="codeParamPath">二维码参数路径,""表示不使用参数</param>
/// <param name="paramType">二维码类型,不传类型默认Data Matrix ECC 200</param>
/// <returns>解析到的二维码</returns>
public
static
List
<
CodeInfo
>
DecodeCode
(
Bitmap
map
,
int
codeCount
,
string
codeParamPath
,
params
string
[]
paramType
)
{
HObject
ho_image
=
Bitmap2HObjectBpp24
(
map
);
return
DecodeCode
(
ho_image
,
codeCount
,
codeParamPath
,
paramType
);
}
///// <summary>
///// 根据图片解析二维码
///// </summary>
///// <param name="map">图片对象</param>
///// <param name="codeCount">二维码数量</param>
///// <param name="codeParamPath">二维码参数路径,""表示不使用参数</param>
///// <param name="paramType">二维码类型,不传类型默认Data Matrix ECC 200</param>
///// <returns>解析到的二维码</returns>
//public static List<CodeInfo> DecodeCode(Bitmap map, int codeCount, string codeParamPath, params string[] paramType)
//{
// HObject ho_image;
// Bitmap2HObjectBpp24(map,out ho_image);
// return DecodeCode(ho_image, codeCount, codeParamPath, paramType);
//}
/// <summary>
/// 根据图片解析二维码
/// </summary>
...
...
@@ -78,9 +80,9 @@ namespace CodeLibrary
}
return
codeList
;
}
public
static
List
<
CodeInfo
>
DecodeCode
(
HObject
ho_Image
,
string
symbolType
,
string
hv_model_path
,
int
codeCount
,
int
timeOut
=
20
00
)
public
static
List
<
CodeInfo
>
DecodeCode
(
HObject
ho_Image
,
string
symbolType
,
string
hv_model_path
,
int
codeCount
,
int
timeOut
=
15
00
)
{
HDLogUtil
.
info
(
" DecodeCode["
+
symbolType
+
"]["
+
hv_model_path
+
"]["
+
codeCount
+
"] 开始"
);
HDLogUtil
.
debug
(
" DecodeCode["
+
symbolType
+
"]["
+
hv_model_path
+
"]["
+
codeCount
+
"] 开始"
);
List
<
CodeInfo
>
codeList
=
new
List
<
CodeInfo
>();
try
{
...
...
@@ -121,7 +123,7 @@ namespace CodeLibrary
ShowImage
(
HalconWindow
,
ho_Image
,
ho_SymbolXLDs
);
}
HOperatorSet
.
ClearDataCode2dModel
(
hv_DataCodeHandle
);
if
(
hv_DecodedDataStrings
.
Length
>
0
)
{
string
[]
resultList
=
hv_DecodedDataStrings
.
SArr
;
...
...
@@ -141,13 +143,48 @@ namespace CodeLibrary
}
}
}
HDLogUtil
.
info
(
" DecodeCode["
+
symbolType
+
"]["
+
hv_model_path
+
"]["
+
codeCount
+
"] 结束,返回数量:"
+
codeList
.
Count
);
HDLogUtil
.
debug
(
" DecodeCode["
+
symbolType
+
"]["
+
hv_model_path
+
"]["
+
codeCount
+
"] 结束,返回数量:"
+
codeList
.
Count
);
if
(
hv_Area
!=
null
)
{
hv_Area
.
UnPinTuple
();
}
if
(
hv_Row1
!=
null
)
{
hv_Row1
.
UnPinTuple
();
}
if
(
hv_Column
!=
null
)
{
hv_Column
.
UnPinTuple
();
}
if
(
hv_PointOrder
!=
null
)
{
hv_PointOrder
.
UnPinTuple
();
}
if
(
hv_ResultHandles
!=
null
)
{
hv_ResultHandles
.
UnPinTuple
();
}
if
(
hv_DecodedDataStrings
!=
null
)
{
hv_DecodedDataStrings
.
UnPinTuple
();
}
if
(
hv_DataCodeHandle
!=
null
)
{
hv_DataCodeHandle
.
UnPinTuple
();
}
if
(
ho_SymbolXLDs
!=
null
)
{
ho_SymbolXLDs
.
Dispose
();
ho_SymbolXLDs
=
null
;
}
return
codeList
;
}
catch
(
Exception
ex
)
{
HDLogUtil
.
error
(
"DecodeCode出错:"
+
ex
.
ToString
());
HDLogUtil
.
info
(
" DecodeCode["
+
symbolType
+
"]["
+
hv_model_path
+
"]["
+
codeCount
+
"] 结束,返回数量:"
+
codeList
.
Count
);
HDLogUtil
.
debug
(
" DecodeCode["
+
symbolType
+
"]["
+
hv_model_path
+
"]["
+
codeCount
+
"] 结束,返回数量:"
+
codeList
.
Count
);
return
codeList
;
}
...
...
@@ -191,9 +228,9 @@ namespace CodeLibrary
/// <summary>
/// 将BitMap转换为HObject对象
/// </summary>
public
static
HObject
Bitmap2HObjectBpp24
(
Bitmap
bmp
)
public
static
bool
Bitmap2HObjectBpp24
(
Bitmap
bmp
,
out
HObject
ho_Image
)
{
HObject
ho_Image
=
null
;
ho_Image
=
null
;
try
{
HOperatorSet
.
GenEmptyObj
(
out
ho_Image
);
...
...
@@ -204,13 +241,14 @@ namespace CodeLibrary
HOperatorSet
.
GenImageInterleaved
(
out
ho_Image
,
srcBmpData
.
Scan0
,
"bgrx"
,
bmp
.
Width
,
bmp
.
Height
,
0
,
"byte"
,
0
,
0
,
0
,
0
,
-
1
,
0
);
bmp
.
UnlockBits
(
srcBmpData
);
return
true
;
}
catch
(
Exception
ex
)
{
HDLogUtil
.
error
(
"将BitMap转换为HObject对象出错:"
+
ex
.
ToString
());
ho_Image
=
null
;
}
return
ho_Image
;
return
false
;
}
internal
static
string
GetCodeParamFilePath
(
string
codeType
)
...
...
@@ -236,11 +274,12 @@ namespace CodeLibrary
HOperatorSet
.
ReadImage
(
out
ho_Image
,
filePath
);
return
DecodeBarCode
(
ho_Image
);
}
public
static
List
<
CodeInfo
>
DecodeBarCode
(
Bitmap
bitmap
)
{
HObject
ho_image
=
Bitmap2HObjectBpp24
(
bitmap
);
return
DecodeBarCode
(
ho_image
);
}
//public static List<CodeInfo> DecodeBarCode(Bitmap bitmap)
//{
// HObject ho_image;
// Bitmap2HObjectBpp24(bitmap,out ho_image);
// return DecodeBarCode(ho_image);
//}
public
static
List
<
CodeInfo
>
DecodeBarCode
(
HObject
ho_Image
)
{
...
...
@@ -300,7 +339,33 @@ namespace CodeLibrary
}
}
HOperatorSet
.
ClearBarCodeModel
(
hv_BarCodeHandle
);
if
(
hv_Area
!=
null
)
{
hv_Area
.
UnPinTuple
();
}
if
(
hv_Row1
!=
null
)
{
hv_Row1
.
UnPinTuple
();
}
if
(
hv_Column
!=
null
)
{
hv_Column
.
UnPinTuple
();
}
if
(
hv_Orientation
!=
null
)
{
hv_Orientation
.
UnPinTuple
();
}
if
(
ho_GrayImage
!=
null
)
{
ho_GrayImage
.
Dispose
();
ho_GrayImage
=
null
;
}
if
(
ho_SymbolRegions
!=
null
)
{
ho_SymbolRegions
.
Dispose
();
ho_SymbolRegions
=
null
;
}
return
codeList
;
}
catch
(
Exception
ex
)
...
...
@@ -332,5 +397,41 @@ public class CodeInfo
this
.
X
=
x
;
this
.
Y
=
y
;
}
public
string
GetCodeStr
()
{
return
Gb2312Correct
(
CodeStr
);
}
/// <summary>
/// 判断字符串中是否包含中文
/// </summary>
/// <param name="str">需要判断的字符串</param>
/// <returns>判断结果</returns>
public
static
bool
HasChinese
(
string
str
)
{
return
Regex
.
IsMatch
(
str
,
@"[\u4e00-\u9fa5]"
);
}
/// <summary>
/// utf8文字用gb2312格式显示时候乱码,需要转换为gb2312
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public
static
string
Gb2312Correct
(
string
text
)
{
if
(
HasChinese
(
text
)
==
false
)
{
return
text
;
}
//声明字符集
System
.
Text
.
Encoding
utf8
,
gb2312
;
//utf8
utf8
=
System
.
Text
.
Encoding
.
GetEncoding
(
"utf-8"
);
//gb2312
gb2312
=
System
.
Text
.
Encoding
.
GetEncoding
(
"gb2312"
);
byte
[]
gb
;
gb
=
utf8
.
GetBytes
(
text
);
gb
=
System
.
Text
.
Encoding
.
Convert
(
utf8
,
gb2312
,
gb
);
//返回转换后的字符
return
gb2312
.
GetString
(
gb
);
}
}
}
source/CodeLibrary/HDCodeLearnHelper.cs
查看文件 @
89781f0
...
...
@@ -219,7 +219,7 @@ namespace CodeLibrary
CodeResultAdd
(
hv_DecodedDataStrings
,
codeType
,
"学习"
);
}
ShowImage
(
hv_ExpDefaultWinHandle
,
ho_Image
,
ho_SymbolXLDs
);
ho_Image
.
Dispose
();
}
if
(
findCode
.
Count
>=
codeCount
||
stopWatch
.
ElapsedMilliseconds
>
timeOutMs
)
{
...
...
@@ -251,6 +251,7 @@ namespace CodeLibrary
{
CodeResultAdd
(
hv_DecodedDataStrings
,
codeType
,
"识别"
);
}
ho_Image
.
Dispose
();
}
if
(
findCode
.
Count
>=
codeCount
||
stopWatch
.
ElapsedMilliseconds
>
timeOutMs
)
{
...
...
@@ -263,8 +264,41 @@ namespace CodeLibrary
HOperatorSet
.
ClearDataCode2dModel
(
hv_DataCodeHandle
);
CloseCamera
(
cameraName
);
ho_SymbolXLDs
.
Dispose
();
ho_SymbolXLDs
.
Dispose
();
StopLearn
();
if
(
hv_code_type
!=
null
)
{
hv_code_type
.
UnPinTuple
();
}
if
(
hv_model_path
!=
null
)
{
hv_model_path
.
UnPinTuple
();
}
if
(
hv_train_first
!=
null
)
{
hv_train_first
.
UnPinTuple
();
}
if
(
hv_ResultHandles
!=
null
)
{
hv_ResultHandles
.
UnPinTuple
();
}
if
(
hv_DataCodeHandle
!=
null
)
{
hv_DataCodeHandle
.
UnPinTuple
();
}
if
(
hv_DecodedDataStrings
!=
null
)
{
hv_DecodedDataStrings
.
UnPinTuple
();
}
if
(
hv_GenParamNames
!=
null
)
{
hv_GenParamNames
.
UnPinTuple
();
}
if
(
hv_ModelBeforeTraining
!=
null
)
{
hv_ModelBeforeTraining
.
UnPinTuple
();
}
return
true
;
}
catch
(
Exception
ex
)
...
...
source/CodeLibrary/ZXingCodeHelper.cs
查看文件 @
89781f0
...
...
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using
System.Drawing
;
using
System.Linq
;
using
System.Text
;
using
System.Text.RegularExpressions
;
using
System.Threading.Tasks
;
using
ZXing
;
using
ZXing.Common
;
...
...
@@ -202,5 +203,8 @@ namespace CodeLibrary
}
}
}
}
source/CodeLibrary/camera/Basler.cs
查看文件 @
89781f0
...
...
@@ -4,6 +4,7 @@ using System.Drawing;
using
System.Drawing.Imaging
;
using
System.Collections.Generic
;
using
HalconDotNet
;
using
System.Runtime.InteropServices
;
namespace
CodeLibrary
{
...
...
@@ -68,7 +69,7 @@ namespace CodeLibrary
}
}
}
public
override
Bitmap
GrabOne
(
int
index
)
{
...
...
@@ -168,7 +169,7 @@ namespace CodeLibrary
//cameraCur.CameraOpened += OnCameraOpened;
//cameraCur.CameraClosed += OnCameraClosed;
//cameraCur.StreamGrabber.GrabStarted += OnGrabStarted;
// cameraCurr[index].StreamGrabber.ImageGrabbed += OnImageGrabbed;
// cameraCurr[index].StreamGrabber.ImageGrabbed += OnImageGrabbed;
//cameraCur.StreamGrabber.GrabStopped += OnGrabStopped;
cameraCurr
[
index
].
Open
();
_width
[
index
]
=
Convert
.
ToInt32
(
cameraCurr
[
index
].
Parameters
[
PLCamera
.
Width
].
GetValue
());
...
...
@@ -210,7 +211,7 @@ namespace CodeLibrary
}
return
rtn
;
}
public
override
Bitmap
GrabOneImage
(
string
name
)
{
...
...
@@ -227,9 +228,65 @@ namespace CodeLibrary
}
return
null
;
}
public
override
HObject
CaptureOnImage
(
string
name
)
public
override
HObject
CaptureOnImage
(
string
name
)
{
return
null
;
HObject
hoImage
=
null
;
int
index
=
cameraName
.
FindIndex
(
s
=>
s
==
name
);
if
(
index
==
-
1
)
{
_errInfo
=
name
+
"Not find"
;
return
hoImage
;
}
if
(
cameraCurr
[
index
]
!=
null
)
{
}
else
{
Open
(
index
);
}
try
{
if
(
cameraCurr
[
index
]
!=
null
)
{
cameraCurr
[
index
].
Parameters
[
PLCamera
.
AcquisitionMode
].
SetValue
(
PLCamera
.
AcquisitionMode
.
SingleFrame
);
//cameraCur.StreamGrabber.Start();
//IGrabResult grabResult = cameraCur.StreamGrabber.RetrieveResult(5000, TimeoutHandling.ThrowException);
IGrabResult
grabResult
=
cameraCurr
[
index
].
StreamGrabber
.
GrabOne
(
5000
);
if
(!
grabResult
.
IsValid
||
!
grabResult
.
GrabSucceeded
)
{
_errInfo
=
grabResult
.
ErrorDescription
;
return
hoImage
;
}
//相机像素数据
byte
[]
buffer
=
grabResult
.
PixelData
as
byte
[];
//锁定像素数据
GCHandle
hand
=
GCHandle
.
Alloc
(
buffer
,
GCHandleType
.
Pinned
);
//获取像素数据的指针
IntPtr
pr
=
hand
.
AddrOfPinnedObject
();
//HalconDotNet.HObject image;
//转成灰度图HOjbect
HalconDotNet
.
HOperatorSet
.
GenImage1
(
out
hoImage
,
new
HalconDotNet
.
HTuple
(
"byte"
),
grabResult
.
Width
,
grabResult
.
Height
,
pr
);
//释放内存
if
(
hand
.
IsAllocated
)
hand
.
Free
();
_errInfo
=
"OK"
;
return
hoImage
;
}
}
catch
(
Exception
ex
)
{
_errInfo
=
ex
.
Message
;
return
hoImage
;
}
finally
{
// cameraCurr[index].MV_CC_StopGrabbing_NET();
}
return
hoImage
;
}
}
...
...
source/CodeLibrary/camera/Common.cs
查看文件 @
89781f0
...
...
@@ -112,7 +112,7 @@ namespace CodeLibrary
// public abstract bool GrabContinuous(int index);
// public abstract void GrabStop(int index);
public
abstract
Bitmap
GrabOneImage
(
string
name
);
public
abstract
HObject
CaptureOnImage
(
string
name
);
public
abstract
HObject
CaptureOnImage
(
string
name
);
}
}
source/CodeLibrary/camera/HIK.cs
查看文件 @
89781f0
...
...
@@ -110,6 +110,7 @@ namespace CodeLibrary
if
(
rtn
!=
MyCamera
.
MV_OK
)
{
_errInfo
=
"Load failed"
;
HDLogUtil
.
error
(
" Load camera error : "
+
_errInfo
);
return
false
;
}
...
...
@@ -123,12 +124,14 @@ namespace CodeLibrary
IntPtr
buffer
=
Marshal
.
UnsafeAddrOfPinnedArrayElement
(
device
.
SpecialInfo
.
stGigEInfo
,
0
);
MyCamera
.
MV_GIGE_DEVICE_INFO
gigeInfo
=
(
MyCamera
.
MV_GIGE_DEVICE_INFO
)
Marshal
.
PtrToStructure
(
buffer
,
typeof
(
MyCamera
.
MV_GIGE_DEVICE_INFO
));
s
=
"GigE:"
+
gigeInfo
.
chModelName
+
" ("
+
gigeInfo
.
chSerialNumber
+
")"
;
//Marshal.FreeHGlobal(buffer);
}
else
if
(
device
.
nTLayerType
==
MyCamera
.
MV_USB_DEVICE
)
{
IntPtr
buffer
=
Marshal
.
UnsafeAddrOfPinnedArrayElement
(
device
.
SpecialInfo
.
stUsb3VInfo
,
0
);
MyCamera
.
MV_USB3_DEVICE_INFO
usbInfo
=
(
MyCamera
.
MV_USB3_DEVICE_INFO
)
Marshal
.
PtrToStructure
(
buffer
,
typeof
(
MyCamera
.
MV_USB3_DEVICE_INFO
));
s
=
"USB:"
+
usbInfo
.
chModelName
+
" ("
+
usbInfo
.
chSerialNumber
+
")"
;
//Marshal.FreeHGlobal(buffer);
}
cameraName
.
Add
(
s
);
}
...
...
@@ -155,6 +158,7 @@ namespace CodeLibrary
if
(
index
<
0
||
index
>=
_count
)
{
_errInfo
=
"Not find"
;
HDLogUtil
.
error
(
"open camera "
+
index
+
" error : "
+
_errInfo
);
return
false
;
}
if
(
cameraCurr
[
index
]
!=
null
)
Close
(
index
);
...
...
@@ -171,6 +175,7 @@ namespace CodeLibrary
{
cameraCurr
[
index
].
MV_CC_DestroyDevice_NET
();
_errInfo
=
"Can not open"
;
HDLogUtil
.
error
(
"open camera "
+
index
+
" error : "
+
_errInfo
);
return
false
;
}
...
...
@@ -189,6 +194,7 @@ namespace CodeLibrary
_isOpen
[
index
]
=
true
;
_errInfo
=
"OK"
;
HDLogUtil
.
info
(
"open camera "
+
index
+
_errInfo
);
return
true
;
}
catch
(
Exception
ex
)
...
...
@@ -204,7 +210,7 @@ namespace CodeLibrary
int
n
=
cameraName
.
FindIndex
(
s
=>
s
==
name
);
if
(
n
==
-
1
)
{
_errInfo
=
name
+
"Not find"
;
_errInfo
=
name
+
"
Not find"
;
return
false
;
}
else
...
...
@@ -215,7 +221,8 @@ namespace CodeLibrary
int
n
=
cameraName
.
FindIndex
(
s
=>
s
==
name
);
if
(
n
==
-
1
)
{
_errInfo
=
name
+
"Not find"
;
_errInfo
=
name
+
" Not find"
;
HDLogUtil
.
error
(
"GrabOneImage ["
+
name
+
"] error : "
+
_errInfo
);
return
null
;
}
if
(
cameraCurr
[
n
]
!=
null
)
...
...
@@ -335,66 +342,80 @@ namespace CodeLibrary
return
_image
;
}
}
public
override
HObject
CaptureOnImage
(
string
name
)
public
override
HObject
CaptureOnImage
(
string
name
)
{
HObject
hoImage
=
null
;
int
index
=
cameraName
.
FindIndex
(
s
=>
s
==
name
);
if
(
index
==
-
1
)
{
_errInfo
=
name
+
"Not find"
;
return
null
;
HDLogUtil
.
error
(
"CaptureOnImage ["
+
name
+
"] error : "
+
_errInfo
);
return
hoImage
;
}
if
(
cameraCurr
[
index
]
!=
null
)
{
}
else
{
HDLogUtil
.
info
(
"CaptureOnImage ["
+
name
+
"] 先打开相机 "
);
Open
(
name
);
}
}
MyCamera
.
MV_FRAME_OUT
FrameInfo
=
new
MyCamera
.
MV_FRAME_OUT
();
try
{
int
rtn
=
cameraCurr
[
index
].
MV_CC_StartGrabbing_NET
();
if
(
rtn
!=
MyCamera
.
MV_OK
)
{
_errInfo
=
"Can not grab one : "
+
rtn
;
return
null
;
}
MyCamera
.
MV_FRAME_OUT
FrameInfo
=
new
MyCamera
.
MV_FRAME_OUT
();
HDLogUtil
.
error
(
"CaptureOnImage ["
+
name
+
"] error : "
+
_errInfo
);
return
hoImage
;
}
int
nRet
=
cameraCurr
[
index
].
MV_CC_GetImageBuffer_NET
(
ref
FrameInfo
,
1000
);
// ch:获取一帧图像 | en:Get one image
if
(
MyCamera
.
MV_OK
==
nRet
)
{
Console
.
WriteLine
(
"Get Image Buffer:"
+
"Width["
+
Convert
.
ToString
(
FrameInfo
.
stFrameInfo
.
nWidth
)
+
"] , Height["
+
Convert
.
ToString
(
FrameInfo
.
stFrameInfo
.
nHeight
)
HDLogUtil
.
debug
(
"Get Image Buffer:"
+
"Width["
+
Convert
.
ToString
(
FrameInfo
.
stFrameInfo
.
nWidth
)
+
"] , Height["
+
Convert
.
ToString
(
FrameInfo
.
stFrameInfo
.
nHeight
)
+
"] , FrameNum["
+
Convert
.
ToString
(
FrameInfo
.
stFrameInfo
.
nFrameNum
)
+
"]"
);
HObject
ho_Imagetemp
;
HOperatorSet
.
GenImage1
(
out
ho
_Imagetemp
,
"byte"
,
FrameInfo
.
stFrameInfo
.
nWidth
,
FrameInfo
.
stFrameInfo
.
nHeight
,
FrameInfo
.
pBufAddr
);
//
HObject ho_Imagetemp;
HOperatorSet
.
GenImage1
(
out
ho
Image
,
"byte"
,
FrameInfo
.
stFrameInfo
.
nWidth
,
FrameInfo
.
stFrameInfo
.
nHeight
,
FrameInfo
.
pBufAddr
);
if
(
FrameInfo
.
pBufAddr
!=
IntPtr
.
Zero
)
{
nRet
=
cameraCurr
[
index
].
MV_CC_FreeImageBuffer_NET
(
ref
FrameInfo
);
if
(
nRet
!=
MyCamera
.
MV_OK
)
{
Console
.
WriteLine
(
"Free Image Buffer fail:{0:x8}"
,
nRet
);
HDLogUtil
.
error
(
" ["
+
name
+
"] Free Image Buffer fail:"
+
nRet
);
}
}
return
ho_Imagetemp
;
//return ho_Imagetemp;
return
hoImage
;
}
else
{
Console
.
WriteLine
(
"No data:{0:x8}"
,
nRet
);
}
HDLogUtil
.
error
(
" ["
+
name
+
"] MV_CC_GetImageBuffer_NET No data: "
+
nRet
);
}
}
catch
(
Exception
ex
)
{
_errInfo
=
ex
.
Message
;
return
null
;
return
hoImage
;
}
finally
{
cameraCurr
[
index
].
MV_CC_StopGrabbing_NET
();
try
{
cameraCurr
[
index
].
MV_CC_FreeImageBuffer_NET
(
ref
FrameInfo
);
}
catch
(
Exception
ex
)
{
HDLogUtil
.
error
(
" ["
+
name
+
"] MV_CC_FreeImageBuffer_NET 出错:"
+
ex
.
ToString
());
}
}
return
null
;
return
hoImage
;
}
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论