Commit a33dd4e6 LN

扫码修改

1 个父辈 a62b84e3
此文件类型无法预览
......@@ -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)
......
......@@ -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;
......
......@@ -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;
}
}
......
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);
}
}
......@@ -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, 100000);
rtn = cameraCurr[index].MV_CC_GetOneFrameTimeout_NET(pData, dataSize, ref stFrameInfo, 3000);
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
......@@ -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!