Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a33dd4e6
由
LN
编写于
2020-03-14 17:23:23 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
扫码修改
1 个父辈
a62b84e3
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
167 行增加
和
54 行删除
dll/CodeLibrary.dll
source/CodeLibrary/FrmCodeDecode.cs
source/CodeLibrary/FrmCodeLearn.cs
source/CodeLibrary/camera/Basler.cs
source/CodeLibrary/camera/Common.cs
source/CodeLibrary/camera/HIK.cs
source/DeviceLibrary/deviceLibrary/halcon/CodeManager.cs
dll/CodeLibrary.dll
查看文件 @
a33dd4e
此文件类型无法预览
source/CodeLibrary/FrmCodeDecode.cs
查看文件 @
a33dd4e
...
...
@@ -55,6 +55,21 @@ namespace CodeLibrary
cmbCodeType
.
SelectedIndex
=
0
;
}
}
private
void
ClearPicImg
()
{
try
{
if
(
pictureBox1
.
Image
!=
null
)
{
pictureBox1
.
Image
.
Dispose
();
pictureBox1
.
Image
=
null
;
}
}
catch
(
Exception
ex
)
{
HDLogUtil
.
error
(
"ClearPicImg error : "
+
ex
.
ToString
());
}
}
private
void
LoadCamera
()
{
// string[] camerName = BaslerCamera.Instance.CameraName;
...
...
@@ -96,7 +111,7 @@ namespace CodeLibrary
{
MessageBox
.
Show
(
imageIsNull
);
}
pictureBox1
.
Image
=
null
;
ClearPicImg
()
;
//读取图片内容
Image
img
=
(
Image
)
Image
.
FromFile
(
filename
).
Clone
();
pictureBox1
.
Image
=
img
;
...
...
@@ -233,7 +248,7 @@ namespace CodeLibrary
}
}
}
private
void
zxingDecode
(
Bitmap
map
,
string
type
)
private
void
zxingDecode
(
Bitmap
map
,
string
type
)
{
//List<string> results = ZXingCodeHelper.DeCodes(map, type);
...
...
@@ -293,13 +308,21 @@ namespace CodeLibrary
}
private
void
btnCameraImage_Click
(
object
sender
,
EventArgs
e
)
{
try
{
Bitmap
bitmap
=
GetCameraBitmap
();
if
(
bitmap
!=
null
)
{
HDLogUtil
.
info
(
"从相机【"
+
cmbCamera
.
Text
+
"】获取到一张图片"
);
pictureBox1
.
Image
=
bitmap
;
HObject
hoImage
=
HDCodeHelper
.
Bitmap2HObjectBpp24
(
bitmap
);
HDCodeLearnHelper
.
DefaultImage
=
hoImage
;
ClearPicImg
();
pictureBox1
.
Image
=
(
Image
)
bitmap
.
Clone
();
//HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
//HDCodeLearnHelper.DefaultImage = hoImage;
}
}
catch
(
Exception
ex
)
{
HDLogUtil
.
error
(
ex
.
ToString
());
}
}
...
...
@@ -455,16 +478,23 @@ namespace CodeLibrary
private
void
btnScanTest_Click
(
object
sender
,
EventArgs
e
)
{
using
(
Bitmap
bitmap
=
GetCameraBitmap
())
{
if
(
bitmap
!=
null
)
//using (Bitmap bitmap = GetCameraBitmap())
//{
// if (bitmap != null)
// { int index = cmbCamera.SelectedIndex;
string
camerName
=
cmbCamera
.
Text
;
if
(
cmbCamera
.
SelectedIndex
<
0
)
{
MessageBox
.
Show
(
selCamera
);
return
;
}
HDLogUtil
.
info
(
"获取图片完成,开始转换图片,并扫码"
);
System
.
Threading
.
Thread
.
Sleep
(
1
);
//转换托盘大概100-150ms,不打印日志
Bitmap
bit
=
new
Bitmap
(
bitmap
);
HalconDotNet
.
HObject
ho_Image
=
HDCodeHelper
.
Bitmap2HObjectBpp24
(
bit
);
// LogUtil.info(" 相机【" + cameraName + "】转换图片完成,开始扫码");
//System.Threading.Thread.Sleep(1);
////转换托盘大概100-150ms,不打印日志
//Bitmap bit = new Bitmap(bitmap);
//HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit);
HObject
ho_Image
=
Camera
.
_cam
.
CaptureOnImage
(
camerName
);
HDLogUtil
.
info
(
" 相机【"
+
camerName
+
"】转换图片完成,开始扫码"
);
List
<
CodeInfo
>
cc
=
new
List
<
CodeInfo
>();
string
str
=
""
;
List
<
string
>
codeTypeList
=
new
List
<
string
>(
HDCodeLearnHelper
.
codeTypeList
);
...
...
@@ -491,9 +521,9 @@ namespace CodeLibrary
// ShowCode(cc);
ho_Image
.
Dispose
();
bitmap
.
Dispose
();
}
}
//
bitmap.Dispose();
//
}
//
}
}
private
void
btnCopyN_Click
(
object
sender
,
EventArgs
e
)
...
...
source/CodeLibrary/FrmCodeLearn.cs
查看文件 @
a33dd4e
...
...
@@ -77,7 +77,8 @@ namespace CodeLibrary
if
(
bitmap
!=
null
)
{
HDLogUtil
.
info
(
"从相机【"
+
cmbCamera
.
Text
+
"】获取到一张图片"
);
pictureBox1
.
Image
=
bitmap
;
ClearPicImg
();
pictureBox1
.
Image
=
(
Image
)
bitmap
.
Clone
();
HObject
hoImage
=
HDCodeHelper
.
Bitmap2HObjectBpp24
(
bitmap
);
HDCodeLearnHelper
.
DefaultImage
=
hoImage
;
}
...
...
@@ -137,6 +138,21 @@ namespace CodeLibrary
FormStatus
(
false
);
}
private
void
ClearPicImg
()
{
try
{
if
(
pictureBox1
.
Image
!=
null
)
{
pictureBox1
.
Image
.
Dispose
();
pictureBox1
.
Image
=
null
;
}
}
catch
(
Exception
ex
)
{
HDLogUtil
.
error
(
"ClearPicImg error : "
+
ex
.
ToString
());
}
}
private
void
FrmCamera_Load
(
object
sender
,
EventArgs
e
)
{
cmbCount
.
SelectedIndex
=
0
;
...
...
@@ -241,7 +257,7 @@ namespace CodeLibrary
{
MessageBox
.
Show
(
imageIsNull
);
}
pictureBox1
.
Image
=
null
;
ClearPicImg
()
;
//读取图片内容
Image
img
=
(
Image
)
Image
.
FromFile
(
filename
).
Clone
();
pictureBox1
.
Image
=
img
;
...
...
source/CodeLibrary/camera/Basler.cs
查看文件 @
a33dd4e
...
...
@@ -3,6 +3,7 @@ using Basler.Pylon;
using
System.Drawing
;
using
System.Drawing.Imaging
;
using
System.Collections.Generic
;
using
HalconDotNet
;
namespace
CodeLibrary
{
...
...
@@ -226,6 +227,10 @@ namespace CodeLibrary
}
return
null
;
}
public
override
HObject
CaptureOnImage
(
string
name
)
{
return
null
;
}
}
...
...
source/CodeLibrary/camera/Common.cs
查看文件 @
a33dd4e
using
System
;
using
HalconDotNet
;
using
System
;
using
System.Collections.Generic
;
using
System.Drawing
;
using
System.Linq
;
...
...
@@ -111,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
);
}
}
source/CodeLibrary/camera/HIK.cs
查看文件 @
a33dd4e
...
...
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using
System.Drawing
;
using
System.Drawing.Imaging
;
using
System.Runtime.InteropServices
;
using
HalconDotNet
;
using
MvCamCtrl.NET
;
namespace
CodeLibrary
...
...
@@ -251,7 +252,7 @@ namespace CodeLibrary
byte
[]
buffArr
=
new
byte
[
buffSize
];
IntPtr
pData
=
Marshal
.
UnsafeAddrOfPinnedArrayElement
(
dataArr
,
0
);
MyCamera
.
MV_FRAME_OUT_INFO_EX
stFrameInfo
=
new
MyCamera
.
MV_FRAME_OUT_INFO_EX
();
rtn
=
cameraCurr
[
index
].
MV_CC_GetOneFrameTimeout_NET
(
pData
,
dataSize
,
ref
stFrameInfo
,
100
000
);
rtn
=
cameraCurr
[
index
].
MV_CC_GetOneFrameTimeout_NET
(
pData
,
dataSize
,
ref
stFrameInfo
,
3
000
);
if
(
rtn
!=
MyCamera
.
MV_OK
)
return
null
;
MyCamera
.
MvGvspPixelType
enDstPixelType
=
stFrameInfo
.
enPixelType
;
...
...
@@ -334,6 +335,67 @@ namespace CodeLibrary
return
_image
;
}
}
public
override
HObject
CaptureOnImage
(
string
name
)
{
int
index
=
cameraName
.
FindIndex
(
s
=>
s
==
name
);
if
(
index
==
-
1
)
{
_errInfo
=
name
+
"Not find"
;
return
null
;
}
if
(
cameraCurr
[
index
]
!=
null
)
{
}
else
{
Open
(
name
);
}
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
();
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
)
+
"] , FrameNum["
+
Convert
.
ToString
(
FrameInfo
.
stFrameInfo
.
nFrameNum
)
+
"]"
);
HObject
ho_Imagetemp
;
HOperatorSet
.
GenImage1
(
out
ho_Imagetemp
,
"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
);
}
}
return
ho_Imagetemp
;
}
else
{
Console
.
WriteLine
(
"No data:{0:x8}"
,
nRet
);
}
}
catch
(
Exception
ex
)
{
_errInfo
=
ex
.
Message
;
return
null
;
}
finally
{
cameraCurr
[
index
].
MV_CC_StopGrabbing_NET
();
}
return
null
;
}
}
}
\ No newline at end of file
source/DeviceLibrary/deviceLibrary/halcon/CodeManager.cs
查看文件 @
a33dd4e
...
...
@@ -98,20 +98,20 @@ namespace OnlineStore.DeviceLibrary
Camera
.
_cam
.
CloseAll
();
}
public
static
Bitmap
GetCamerImage
(
string
cameraName
)
{
Bitmap
bitm
=
null
;
try
{
bitm
=
Camera
.
_cam
.
GrabOneImage
(
cameraName
);
//Camera._cam.Close(cameraName);
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
" 【"
+
cameraName
+
"】获取图片出错:"
,
ex
);
}
return
bitm
;
}
//
public static Bitmap GetCamerImage(string cameraName)
//
{
//
Bitmap bitm = null;
//
try
//
{
//
bitm= Camera._cam.GrabOneImage(cameraName);
//
//Camera._cam.Close(cameraName);
//
}
//
catch (Exception ex)
//
{
//
LogUtil.error(" 【" + cameraName + "】获取图片出错:", ex);
//
}
//
return bitm;
//
}
private
static
int
codeCount
=
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
CodeCount
);
[
HandleProcessCorruptedStateExceptions
]
public
static
List
<
string
>
CameraScan
(
List
<
string
>
cameraList
,
string
deviceName
,
bool
isSaveImg
=
false
)
...
...
@@ -135,23 +135,23 @@ namespace OnlineStore.DeviceLibrary
}
DateTime
startTime
=
DateTime
.
Now
;
LogUtil
.
info
(
deviceName
+
" 【"
+
cameraName
+
"】开始取图片"
);
using
(
Bitmap
bitmap
=
GetCamerImage
(
cameraName
))
{
//
using (Bitmap bitmap = GetCamerImage(cameraName))
//{
HalconDotNet
.
HObject
ho_Image
=
null
;
Bitmap
bit
=
null
;
try
{
if
(
bitmap
==
null
)
ho_Image
=
Camera
.
_cam
.
CaptureOnImage
(
cameraName
);
if
(
ho_Image
==
null
)
{
LogUtil
.
error
(
deviceName
+
" 【"
+
cameraName
+
"】取图片失败["
+
Camera
.
_cam
.
ErrInfo
+
"],关闭相机"
);
CloseCamera
(
cameraName
);
continue
;
}
LogUtil
.
info
(
deviceName
+
" 【"
+
cameraName
+
"】取图片完成,开始转换并扫码"
);
bit
=
new
Bitmap
(
bitmap
);
LogUtil
.
info
(
deviceName
+
" 【"
+
cameraName
+
"】new Bitmap(bitmap);完成"
);
ho_Image
=
HDCodeHelper
.
Bitmap2HObjectBpp24
(
bit
);
LogUtil
.
info
(
deviceName
+
" 【"
+
cameraName
+
"】转换
图片完成,开始扫码"
);
//
LogUtil.info(deviceName + " 【" + cameraName + "】取图片完成,开始转换并扫码");
//
bit = new Bitmap(bitmap);
//
LogUtil.info(deviceName + " 【" + cameraName + "】new Bitmap(bitmap);完成");
//
ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit);
LogUtil
.
info
(
deviceName
+
" 【"
+
cameraName
+
"】取
图片完成,开始扫码"
);
List
<
CodeInfo
>
cc
=
new
List
<
CodeInfo
>();
string
r
=
""
;
foreach
(
string
codeType
in
codeTypeList
)
...
...
@@ -174,7 +174,6 @@ namespace OnlineStore.DeviceLibrary
r
=
r
+
"##"
+
str
;
}
}
// LogUtil.debug(" 相机【" + cameraName + "】【" + codeType + "】扫码完成:" + r);
}
if
(
String
.
IsNullOrEmpty
(
r
))
{
...
...
@@ -194,21 +193,21 @@ namespace OnlineStore.DeviceLibrary
}
finally
{
if
(
bitmap
!=
null
)
{
bitmap
.
Dispose
();
}
if
(
bit
!=
null
)
{
bit
.
Dispose
();
}
//
if (bitmap != null)
//
{
//
bitmap.Dispose();
//
}
//
if (bit != null)
//
{
//
bit.Dispose();
//
}
if
(
ho_Image
!=
null
)
{
ho_Image
.
Dispose
();
}
}
}
}
//
}
}
catch
(
AccessViolationException
e
)
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论