Commit 50093b71 LN

扫码修改

1 个父辈 60879914
此文件类型无法预览
using log4net;
using CodeLibrary;
using log4net;
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
......@@ -199,8 +200,11 @@ namespace OnlineStore.ACPackingStore
IOManager.instance.CloseAllDO();
IOManager.instance.CloseAllConnection();
HumitureController.CloseAllPort();
ACServerManager.CloseAllPort();
ACServerManager.CloseAllPort();
if (Camera._cam != null)
{
Camera._cam.CloseAll();
}
//this.Close();
System.Environment.Exit(System.Environment.ExitCode);
}
......@@ -457,6 +461,10 @@ namespace OnlineStore.ACPackingStore
private void 二维码学习ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (Camera._cam != null)
{
Camera._cam.CloseAll();
}
CodeLibrary.FrmCodeDecode frm = new CodeLibrary.FrmCodeDecode();
frm.ShowDialog();
}
......
......@@ -93,9 +93,11 @@ shelfLoc问题修改。
扫码问题优化。
出库未结束时,去掉:检测到料架自动入库功能。
20200310
出库mark参数修改
20200311
扫码修改
......
......@@ -113,9 +113,7 @@ namespace OnlineStore.Common
}
private static int isLog = ConfigAppSettings.GetIntValue(Setting_Init.Server_Log_Open);
public static string Post(string url, string paramData, Encoding encoding)
{
//如果Op=0或者Op=5,先拼Ip,不通不发送
{
if (PingURLIP(url, 100).Equals(false))
{
return null;
......
......@@ -3,6 +3,7 @@ using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Runtime.ExceptionServices;
......@@ -11,8 +12,6 @@ using System.Windows.Forms;
namespace OnlineStore.DeviceLibrary
{
public class CodeManager
{
public static List<string> codeTypeList = new List<string>();
......@@ -37,7 +36,8 @@ namespace OnlineStore.DeviceLibrary
{
continue;
}
LogUtil.info("加载到配置二维码类型:" + str.Trim());
string file = GetCodeParamFilePath(str.Trim());
LogUtil.info("加载到配置二维码类型:" + str.Trim()+",配置文件:"+file);
codeTypeList.Add(str.Trim());
}
......@@ -46,31 +46,28 @@ namespace OnlineStore.DeviceLibrary
}
catch (Exception ex)
{
LogUtil.error("解析摄像机配置出错:" + ex.StackTrace);
LogUtil.error("解析摄像机配置出错:"+ex.ToString());
}
}
private static void LoadCamera(bool isReLoad)
{
if (isReLoad)
if (isReLoad || Camera._cam == null)
{
try
{
CodeLibrary.HIKCamera.Instance.Load();
}
catch (Exception ex)
{
LogUtil.error("加载HIK相机出错:" + ex.ToString());
}
try
{
CodeLibrary.BaslerCamera.Instance.Load();
if (Camera._cam != null)
{
Camera._cam.CloseAll();
}
Camera.Type = CameraType.HIK;
Camera._cam.Load();
}
catch (Exception ex)
{
LogUtil.error("加载Basler相机出错:" + ex.ToString());
LogUtil.error("加载HIK相机出错:"+ex.ToString());
}
}
string[] names = CodeLibrary.HIKCamera.Instance.CameraName;
string[] names = Camera._cam.Name;
if (names != null)
......@@ -88,27 +85,17 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info("加载到HIK相机:" + name);
}
}
names = CodeLibrary.BaslerCamera.Instance.CameraName;
if (names != null)
{
foreach (string n in names)
{
if (!balserNameList.Contains(n))
{
balserNameList.Add(n);
}
}
// balserNameList.AddRange(names);
foreach (string name in balserNameList)
{
LogUtil.info("加载到Balser相机:" + name);
}
}
}
public static void CloseCamera()
public static void CloseCamera(string cameraName)
{
Camera._cam.Close(cameraName);
}
public static void CloseAllCamera()
{
BaslerCamera.Instance.Close();
HIKCamera.Instance.Close();
//BaslerCamera.Instance.Close();
//HIKCamera.Instance.Close();
Camera._cam.CloseAll();
}
public static Bitmap GetCamerImage(string cameraName)
......@@ -116,63 +103,23 @@ namespace OnlineStore.DeviceLibrary
Bitmap bitm = null;
try
{
if (balserNameList.Contains(cameraName))
{
bool result = BaslerCamera.Instance.Open(cameraName);
LogUtil.info("相机【" + cameraName + "】打开:" + result + "");
if (result)
{
BaslerCamera.Instance.GrabOne();
bitm = BaslerCamera.Instance.Image;
BaslerCamera.Instance.Close();
}
else
{
LogUtil.error("相机【" + cameraName + "】打开失败:" + BaslerCamera.Instance.ErrInfo);
}
}
else if (hikNameList.Contains(cameraName))
{
bool result = HIKCamera.Instance.Open(cameraName);
// LogUtil.info("打开相机:" + cameraName + "(" + result + ")");
if (result)
{
HIKCamera.Instance.GrabOne();
bitm = HIKCamera.Instance.Image;
HIKCamera.Instance.Close();
}
else
{
LogUtil.error("相机【" + cameraName + "】打开失败:" + HIKCamera.Instance.ErrInfo);
}
}
else
{
LogUtil.info("未找到相机【" + cameraName + "】无法获取图片");
//若未加载到相机,需要重新加载相机
if (balserNameList.Count <= 0 && hikNameList.Count <= 0)
{
LogUtil.error("获取图片时发现未加载到相机,重新加载相机");
LoadCamera(true);
}
}
bitm = Camera._cam.GrabOneImage(cameraName);
}
catch (Exception ex)
{
LogUtil.error("从相机【" + cameraName + "】获取图片出错:" + ex.ToString());
LogUtil.error(" 【" + cameraName + "】获取图片出错:"+ex.ToString());
}
return bitm;
}
private static int codeCount = ConfigAppSettings.GetIntValue(Setting_Init.CodeCount);
[HandleProcessCorruptedStateExceptions]
public static List<string> CameraScan(List<string> cameraList, string deviceName)
public static List<string> CameraScan(List<string> cameraList, string deviceName, bool isSaveImg = false)
{
if (codeCount < 1)
{
codeCount = 1;
}
List<string> codeList = new List<string>();
//List<CodeInfo> allCodeList = new List<CodeInfo>();
if (cameraList == null || cameraList.Count <= 0)
{
return codeList;
......@@ -190,15 +137,16 @@ namespace OnlineStore.DeviceLibrary
{
if (bitmap == null)
{
LogUtil.error(deviceName + " 【" + cameraName + "】获取图片失败,关闭相机");
CloseCamera();
LogUtil.error(deviceName + " 【" + cameraName + "】获取图片失败[" + Camera._cam.ErrInfo + "],关闭相机");
CloseCamera(cameraName);
continue;
}
LogUtil.info(deviceName + " 【" + cameraName + "】获取图片完成,开始转换图片,并扫码");
System.Threading.Thread.Sleep(1);
//转换托盘大概100-150ms,不打印日志
HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bitmap);
Bitmap bit = new Bitmap(bitmap);
HalconDotNet.HObject ho_Image = HDCodeHelper.Bitmap2HObjectBpp24(bit);
// LogUtil.info(" 相机【" + cameraName + "】转换图片完成,开始扫码");
List<CodeInfo> cc = new List<CodeInfo>();
string r = "";
......@@ -216,13 +164,20 @@ namespace OnlineStore.DeviceLibrary
foreach (CodeInfo c in cc)
{
string str = CodeManager.ReplaceCode(c.CodeStr);
codeList.Add(str);
r = r + "##" + str;
if (!codeList.Contains(str))
{
codeList.Add(str);
r = r + "##" + str;
}
}
// LogUtil.debug(" 相机【" + cameraName + "】【" + codeType + "】扫码完成:" + r);
}
if (String.IsNullOrEmpty(r))
{
SaveImageToFile(deviceName, cameraName, bit);
}
LogUtil.info(deviceName + " 【" + cameraName + "】扫码完成:" + r);
bit.Dispose();
ho_Image.Dispose();
bitmap.Dispose();
}
......@@ -240,6 +195,26 @@ namespace OnlineStore.DeviceLibrary
return codeList;
}
private static void SaveImageToFile(string deviceName, string cameraName, Bitmap bitmap)
{
string date = DateTime.Now.ToString("HH-mm-ss-") + DateTime.Now.Millisecond;
string dire = @"D:\image\" + deviceName.Trim().Replace('_', '-') + @"\" + cameraName.Trim().Replace('_', '-').Replace(':', '-') + @"\";
string iamgeName = date + ".bmp";
try
{
Bitmap bit = (Bitmap)bitmap.Clone();
if (Directory.Exists(dire).Equals(false))
{
Directory.CreateDirectory(dire);
}
bit.Save(dire + iamgeName, ImageFormat.Bmp);
LogUtil.info(deviceName + " 【" + cameraName + "】扫码失败,保存图片到【" + dire + iamgeName + "】成功");
}
catch (Exception ex)
{
LogUtil.error("保存" + deviceName + " 【" + cameraName + "】的图片到【" + dire + iamgeName + "】出错"+ex.ToString());
}
}
public static string GetCodeParamFilePath(string codePath)
{
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!