Commit a33dd4e6 LN

扫码修改

1 个父辈 a62b84e3
此文件类型无法预览
...@@ -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;
...@@ -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)
{ {
try
{
Bitmap bitmap = GetCameraBitmap(); Bitmap bitmap = GetCameraBitmap();
if (bitmap != null) if (bitmap != null)
{ {
HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片"); HDLogUtil.info("从相机【" + cmbCamera.Text + "】获取到一张图片");
pictureBox1.Image = bitmap; ClearPicImg();
HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap); pictureBox1.Image = (Image)bitmap.Clone();
HDCodeLearnHelper.DefaultImage = hoImage; //HObject hoImage = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
//HDCodeLearnHelper.DefaultImage = hoImage;
}
}
catch (Exception ex)
{
HDLogUtil.error(ex.ToString());
} }
} }
...@@ -455,16 +478,23 @@ namespace CodeLibrary ...@@ -455,16 +478,23 @@ 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) // if (bitmap != null)
// { int index = cmbCamera.SelectedIndex;
string camerName = cmbCamera.Text;
if (cmbCamera.SelectedIndex < 0)
{ {
MessageBox.Show(selCamera);
return;
}
HDLogUtil.info("获取图片完成,开始转换图片,并扫码"); HDLogUtil.info("获取图片完成,开始转换图片,并扫码");
System.Threading.Thread.Sleep(1); //System.Threading.Thread.Sleep(1);
//转换托盘大概100-150ms,不打印日志 ////转换托盘大概100-150ms,不打印日志
Bitmap bit = new Bitmap(bitmap); //Bitmap bit = new Bitmap(bitmap);
HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit); //HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit);
// LogUtil.info(" 相机【" + cameraName + "】转换图片完成,开始扫码"); HObject ho_Image = Camera._cam.CaptureOnImage(camerName);
HDLogUtil.info(" 相机【" + camerName + "】转换图片完成,开始扫码");
List<CodeInfo> cc = new List<CodeInfo>(); List<CodeInfo> cc = new List<CodeInfo>();
string str = ""; string str = "";
List<string> codeTypeList = new List<string>(HDCodeLearnHelper.codeTypeList); List<string> codeTypeList = new List<string>(HDCodeLearnHelper.codeTypeList);
...@@ -491,9 +521,9 @@ namespace CodeLibrary ...@@ -491,9 +521,9 @@ namespace CodeLibrary
// ShowCode(cc); // ShowCode(cc);
ho_Image.Dispose(); ho_Image.Dispose();
bitmap.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
...@@ -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
...@@ -98,20 +98,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -98,20 +98,20 @@ namespace OnlineStore.DeviceLibrary
Camera._cam.CloseAll(); Camera._cam.CloseAll();
} }
public static Bitmap GetCamerImage(string cameraName) //public static Bitmap GetCamerImage(string cameraName)
{ //{
Bitmap bitm = null; // Bitmap bitm = null;
try // try
{ // {
bitm= Camera._cam.GrabOneImage(cameraName); // bitm= Camera._cam.GrabOneImage(cameraName);
//Camera._cam.Close(cameraName); // //Camera._cam.Close(cameraName);
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
LogUtil.error(" 【" + cameraName + "】获取图片出错:", ex); // LogUtil.error(" 【" + cameraName + "】获取图片出错:", ex);
} // }
return bitm; // return bitm;
} //}
private static int codeCount = ConfigAppSettings.GetIntValue(Setting_Init.CodeCount); private static int codeCount = ConfigAppSettings.GetIntValue(Setting_Init.CodeCount);
[HandleProcessCorruptedStateExceptions] [HandleProcessCorruptedStateExceptions]
public static List<string> CameraScan(List<string> cameraList, string deviceName, bool isSaveImg = false) public static List<string> CameraScan(List<string> cameraList, string deviceName, bool isSaveImg = false)
...@@ -135,23 +135,23 @@ namespace OnlineStore.DeviceLibrary ...@@ -135,23 +135,23 @@ namespace OnlineStore.DeviceLibrary
} }
DateTime startTime = DateTime.Now; DateTime startTime = DateTime.Now;
LogUtil.info(deviceName + " 【" + cameraName + "】开始取图片"); LogUtil.info(deviceName + " 【" + cameraName + "】开始取图片");
using (Bitmap bitmap = GetCamerImage(cameraName)) //using (Bitmap bitmap = GetCamerImage(cameraName))
{ //{
HalconDotNet.HObject ho_Image = null; HalconDotNet.HObject ho_Image = null;
Bitmap bit = null;
try try
{ {
if (bitmap == null) ho_Image = Camera._cam.CaptureOnImage(cameraName);
if (ho_Image == null)
{ {
LogUtil.error(deviceName + " 【" + cameraName + "】取图片失败[" + Camera._cam.ErrInfo + "],关闭相机"); LogUtil.error(deviceName + " 【" + cameraName + "】取图片失败[" + Camera._cam.ErrInfo + "],关闭相机");
CloseCamera(cameraName); CloseCamera(cameraName);
continue; continue;
} }
LogUtil.info(deviceName + " 【" + cameraName + "】取图片完成,开始转换并扫码"); //LogUtil.info(deviceName + " 【" + cameraName + "】取图片完成,开始转换并扫码");
bit = new Bitmap(bitmap); //bit = new Bitmap(bitmap);
LogUtil.info(deviceName + " 【" + cameraName + "】new Bitmap(bitmap);完成"); //LogUtil.info(deviceName + " 【" + cameraName + "】new Bitmap(bitmap);完成");
ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit); //ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit);
LogUtil.info(deviceName + " 【" + cameraName + "】转换图片完成,开始扫码"); LogUtil.info(deviceName + " 【" + cameraName + "】取图片完成,开始扫码");
List<CodeInfo> cc = new List<CodeInfo>(); List<CodeInfo> cc = new List<CodeInfo>();
string r = ""; string r = "";
foreach (string codeType in codeTypeList) foreach (string codeType in codeTypeList)
...@@ -174,7 +174,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -174,7 +174,6 @@ namespace OnlineStore.DeviceLibrary
r = r + "##" + str; r = r + "##" + str;
} }
} }
// LogUtil.debug(" 相机【" + cameraName + "】【" + codeType + "】扫码完成:" + r);
} }
if (String.IsNullOrEmpty(r)) if (String.IsNullOrEmpty(r))
{ {
...@@ -194,21 +193,21 @@ namespace OnlineStore.DeviceLibrary ...@@ -194,21 +193,21 @@ namespace OnlineStore.DeviceLibrary
} }
finally finally
{ {
if (bitmap != null) //if (bitmap != null)
{ //{
bitmap.Dispose(); // bitmap.Dispose();
} //}
if (bit != null) //if (bit != null)
{ //{
bit.Dispose(); // bit.Dispose();
} //}
if (ho_Image != null) if (ho_Image != null)
{ {
ho_Image.Dispose(); ho_Image.Dispose();
} }
} }
} }
} //}
} }
catch (AccessViolationException e) catch (AccessViolationException e)
{ {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!