Commit 12cebded LN

扫码修改

1 个父辈 2b16f2d4
...@@ -55,6 +55,21 @@ namespace CodeLibrary ...@@ -55,6 +55,21 @@ namespace CodeLibrary
cmbCodeType.SelectedIndex = 0; 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() private void LoadCamera()
{ {
// string[] camerName = BaslerCamera.Instance.CameraName; // string[] camerName = BaslerCamera.Instance.CameraName;
...@@ -83,7 +98,7 @@ namespace CodeLibrary ...@@ -83,7 +98,7 @@ namespace CodeLibrary
System.Windows.Forms.OpenFileDialog openDialog = new System.Windows.Forms.OpenFileDialog(); System.Windows.Forms.OpenFileDialog openDialog = new System.Windows.Forms.OpenFileDialog();
openDialog.Title = selImage; openDialog.Title = selImage;
openDialog.Filter = "(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp"; openDialog.Filter = "(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp";
// openDialog.Filter = "All Supported Images (*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png)|*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png|Bitmaps (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|Graphics Interchange Format (*.gif)|*.gif|Joint Photographic Experts (*.jpg)|*.jpg|Portable Network Graphics (*.png)|*.png|All Files (*.*)|*.*"; // openDialog.Filter = "All Supported Images (*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png)|*.bmp;*.dib;*.rle;*.gif;*.jpg;*.png|Bitmaps (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|Graphics Interchange Format (*.gif)|*.gif|Joint Photographic Experts (*.jpg)|*.jpg|Portable Network Graphics (*.png)|*.png|All Files (*.*)|*.*";
//openDialog.DefaultExt = "png"; //openDialog.DefaultExt = "png";
System.Windows.Forms.DialogResult result = openDialog.ShowDialog(); System.Windows.Forms.DialogResult result = openDialog.ShowDialog();
if (result == System.Windows.Forms.DialogResult.Cancel) if (result == System.Windows.Forms.DialogResult.Cancel)
...@@ -96,7 +111,7 @@ namespace CodeLibrary ...@@ -96,7 +111,7 @@ namespace CodeLibrary
{ {
MessageBox.Show(imageIsNull); MessageBox.Show(imageIsNull);
} }
pictureBox1.Image = null; ClearPicImg();
//读取图片内容 //读取图片内容
Image img = (Image)Image.FromFile(filename).Clone(); Image img = (Image)Image.FromFile(filename).Clone();
pictureBox1.Image = img; pictureBox1.Image = img;
...@@ -233,7 +248,7 @@ namespace CodeLibrary ...@@ -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); //List<string> results = ZXingCodeHelper.DeCodes(map, type);
...@@ -293,13 +308,21 @@ namespace CodeLibrary ...@@ -293,13 +308,21 @@ namespace CodeLibrary
} }
private void btnCameraImage_Click(object sender, EventArgs e) private void btnCameraImage_Click(object sender, EventArgs e)
{ {
Bitmap bitmap = GetCameraBitmap(); try
if (bitmap != null) {
Bitmap bitmap = GetCameraBitmap();
if (bitmap != null)
{
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片");
ClearPicImg();
pictureBox1.Image = (Image)bitmap.Clone();
//HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
//HDCodeLearnHelper.DefaultImage = hoImage;
}
}
catch (Exception ex)
{ {
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片"); HDLogUtil.error(ex.ToString());
pictureBox1.Image = bitmap;
HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper.DefaultImage = hoImage;
} }
} }
...@@ -455,45 +478,52 @@ namespace CodeLibrary ...@@ -455,45 +478,52 @@ namespace CodeLibrary
private void btnScanTest_Click(object sender, EventArgs e) private void btnScanTest_Click(object sender, EventArgs e)
{ {
using (Bitmap bitmap = GetCameraBitmap()) //using (Bitmap bitmap = GetCameraBitmap())
//{
// if (bitmap != null)
// { int index = cmbCamera.SelectedIndex;
string camerName = cmbCamera.Text;
if (cmbCamera.SelectedIndex < 0)
{ {
if (bitmap != null) 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);
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);
string r = "";
int count = cmbCount.SelectedIndex;
foreach (string codeType in codeTypeList)
{
//判断是否是一维码
if (codeType.ToLower().Equals("barcode"))
{ {
HDLogUtil.info("获取图片完成,开始转换图片,并扫码"); cc = HDCodeHelper.DecodeBarCode(ho_Image);
System.Threading.Thread.Sleep(1); }
//转换托盘大概100-150ms,不打印日志 else
Bitmap bit = new Bitmap(bitmap); {
HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit); string codeParamPath = HDCodeHelper.GetCodeParamFilePath(codeType);
// LogUtil.info(" 相机【" + cameraName + "】转换图片完成,开始扫码"); cc = HDCodeHelper.DecodeCode(ho_Image, count, codeParamPath, codeType);
List<CodeInfo> cc = new List<CodeInfo>(); }
string str = ""; foreach (CodeInfo c in cc)
List<string> codeTypeList = new List<string>(HDCodeLearnHelper.codeTypeList); {
string r = ""; r += (c.CodeStr) + "##";
int count = cmbCount.SelectedIndex;
foreach (string codeType in codeTypeList)
{
//判断是否是一维码
if (codeType.ToLower().Equals("barcode"))
{
cc = HDCodeHelper.DecodeBarCode(ho_Image);
}
else
{
string codeParamPath = HDCodeHelper.GetCodeParamFilePath(codeType);
cc = HDCodeHelper.DecodeCode(ho_Image, count, codeParamPath, codeType);
}
foreach (CodeInfo c in cc)
{
r += (c.CodeStr) + "##";
}
}
MessageBox.Show(r);
// ShowCode(cc);
ho_Image.Dispose();
bitmap.Dispose();
} }
} }
MessageBox.Show(r);
// ShowCode(cc);
ho_Image.Dispose();
//bitmap.Dispose();
// }
//}
} }
private void btnCopyN_Click(object sender, EventArgs e) private void btnCopyN_Click(object sender, EventArgs e)
......
...@@ -77,7 +77,8 @@ namespace CodeLibrary ...@@ -77,7 +77,8 @@ namespace CodeLibrary
if (bitmap != null) if (bitmap != null)
{ {
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片"); HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片");
pictureBox1.Image = bitmap; ClearPicImg();
pictureBox1.Image = (Image)bitmap.Clone();
HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap); HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
HDCodeLearnHelper.DefaultImage = hoImage; HDCodeLearnHelper.DefaultImage = hoImage;
} }
...@@ -137,6 +138,21 @@ namespace CodeLibrary ...@@ -137,6 +138,21 @@ namespace CodeLibrary
FormStatus(false); 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) private void FrmCamera_Load(object sender, EventArgs e)
{ {
cmbCount.SelectedIndex = 0; cmbCount.SelectedIndex = 0;
...@@ -241,7 +257,7 @@ namespace CodeLibrary ...@@ -241,7 +257,7 @@ namespace CodeLibrary
{ {
MessageBox.Show(imageIsNull); MessageBox.Show(imageIsNull);
} }
pictureBox1.Image = null; ClearPicImg();
//读取图片内容 //读取图片内容
Image img = (Image)Image.FromFile(filename).Clone(); Image img = (Image)Image.FromFile(filename).Clone();
pictureBox1.Image = img; pictureBox1.Image = img;
......
...@@ -3,6 +3,7 @@ using Basler.Pylon; ...@@ -3,6 +3,7 @@ using Basler.Pylon;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.Collections.Generic; using System.Collections.Generic;
using HalconDotNet;
namespace CodeLibrary namespace CodeLibrary
{ {
...@@ -226,6 +227,10 @@ namespace CodeLibrary ...@@ -226,6 +227,10 @@ namespace CodeLibrary
} }
return null; return null;
} }
public override HObject CaptureOnImage(string name)
{
return null;
}
} }
......
using System; using HalconDotNet;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
...@@ -111,7 +112,7 @@ namespace CodeLibrary ...@@ -111,7 +112,7 @@ namespace CodeLibrary
// public abstract bool GrabContinuous(int index); // public abstract bool GrabContinuous(int index);
// public abstract void GrabStop(int index); // public abstract void GrabStop(int index);
public abstract Bitmap GrabOneImage(string name); public abstract Bitmap GrabOneImage(string name);
public abstract HObject CaptureOnImage(string name);
} }
} }
...@@ -3,6 +3,7 @@ using System.Collections.Generic; ...@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using HalconDotNet;
using MvCamCtrl.NET; using MvCamCtrl.NET;
namespace CodeLibrary namespace CodeLibrary
...@@ -17,7 +18,7 @@ namespace CodeLibrary ...@@ -17,7 +18,7 @@ namespace CodeLibrary
/// 所有相机列表 /// 所有相机列表
/// </summary> /// </summary>
private MyCamera.MV_CC_DEVICE_INFO_LIST cameraAll; private MyCamera.MV_CC_DEVICE_INFO_LIST cameraAll;
public override void Close(int index) public override void Close(int index)
{ {
...@@ -58,7 +59,7 @@ namespace CodeLibrary ...@@ -58,7 +59,7 @@ namespace CodeLibrary
} }
} }
} }
public override Bitmap GrabOne(int index) public override Bitmap GrabOne(int index)
{ {
if (cameraCurr[index] == null) if (cameraCurr[index] == null)
...@@ -251,7 +252,7 @@ namespace CodeLibrary ...@@ -251,7 +252,7 @@ namespace CodeLibrary
byte[] buffArr = new byte[buffSize]; byte[] buffArr = new byte[buffSize];
IntPtr pData = Marshal.UnsafeAddrOfPinnedArrayElement(dataArr, 0); IntPtr pData = Marshal.UnsafeAddrOfPinnedArrayElement(dataArr, 0);
MyCamera.MV_FRAME_OUT_INFO_EX stFrameInfo = new MyCamera.MV_FRAME_OUT_INFO_EX(); 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, 100000); rtn = cameraCurr[index].MV_CC_GetOneFrameTimeout_NET(pData, dataSize, ref stFrameInfo, 3000);
if (rtn != MyCamera.MV_OK) return null; if (rtn != MyCamera.MV_OK) return null;
MyCamera.MvGvspPixelType enDstPixelType = stFrameInfo.enPixelType; MyCamera.MvGvspPixelType enDstPixelType = stFrameInfo.enPixelType;
...@@ -334,6 +335,67 @@ namespace CodeLibrary ...@@ -334,6 +335,67 @@ namespace CodeLibrary
return _image; 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 \ No newline at end of file
此文件类型无法预览
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!