change-条码绑定优化扫码器方法,成品下线关闭质检功能

dev
liuwf 12 months ago
parent 14d36d929f
commit b490218d75

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework> <TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>

@ -1,11 +1,13 @@
using Admin.Core.Common; using Admin.Core.Common;
using Aucma.Core.Scanner; using Aucma.Core.Scanner;
using log4net;
using MvCodeReaderSDKNet; using MvCodeReaderSDKNet;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Aucma.Core.CodeBinding.Business namespace Aucma.Core.CodeBinding.Business
@ -21,10 +23,35 @@ namespace Aucma.Core.CodeBinding.Business
// sn扫码器ip // sn扫码器ip
private static string ShellScannerIp = allScanners.First(x => x.Name == "sn扫码器").Ip; private static string ShellScannerIp = allScanners.First(x => x.Name == "sn扫码器").Ip;
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(MvCodeHelper));
#region 全局变量定义
public static MvCodeReader ShellDevice = null;
public static MvCodeReader LinerDevice = null;
public static DateTime ShellLiveTime = DateTime.Now;
public static DateTime LinerLiveTime = DateTime.Now;
#endregion
#region 委托事件 #region 委托事件
#region 条码绑定上位机委托事件 #region 条码绑定上位机委托事件
/// <summary>
/// 刷新扫码器状态
/// </summary>
/// <param name="materialCodeStr"></param>
/// <param name="ip"></param>
public delegate void RefreshState(string ip, bool flag);
public static event RefreshState RefreshStateEvent;
/// <summary> /// <summary>
/// code1扫码信息刷新 /// code1扫码信息刷新
/// </summary> /// </summary>
@ -59,8 +86,11 @@ namespace Aucma.Core.CodeBinding.Business
// Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]"); // Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]");
if (stBcrResult.nCodeNum == 0) if (stBcrResult.nCodeNum == 0)
{ {
Console.WriteLine("shell--->No Read 处理");
NoReadEvent?.Invoke(ShellScannerIp); NoReadEvent?.Invoke(ShellScannerIp);
Console.WriteLine(DateTime.Now + ":SN--->No Read 处理");
log.Info(DateTime.Now + ":SN--->No Read 处理");
//更新扫码器存活时间
ShellLiveTime = DateTime.Now;
} }
for (Int32 i = 0; i < stBcrResult.nCodeNum; i++) for (Int32 i = 0; i < stBcrResult.nCodeNum; i++)
{ {
@ -68,15 +98,20 @@ namespace Aucma.Core.CodeBinding.Business
if (bIsValidUTF8) if (bIsValidUTF8)
{ {
string strCode = Encoding.UTF8.GetString(stBcrResult.stBcrInfoEx2[i].chCode); string strCode = Encoding.UTF8.GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]"); Console.WriteLine(DateTime.Now + ":Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
} }
else else
{ {
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode); string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]"); Console.WriteLine(DateTime.Now + ":SN扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp); log.Info(DateTime.Now + ":SN扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// 业务处理
//更新扫码器存活时间
ShellLiveTime = DateTime.Now;
BindingReceiveCodeEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp); BindingReceiveCodeEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp);
// 业务处理
} }
} }
@ -85,7 +120,7 @@ namespace Aucma.Core.CodeBinding.Business
for (int i = 0; i < stOcrInfo.nOCRAllNum; i++) for (int i = 0; i < stOcrInfo.nOCRAllNum; i++)
{ {
string strOcrCharCode = Encoding.UTF8.GetString(stOcrInfo.stOcrRowInfo[i].chOcr); string strOcrCharCode = Encoding.UTF8.GetString(stOcrInfo.stOcrRowInfo[i].chOcr);
// Console.WriteLine("Get OcrInfo:" + "ocrNum[" + i.ToString() + "], ocrLen[" + Convert.ToString(stOcrInfo.stOcrRowInfo[i].nOcrLen) + "], ocrChar[" + strOcrCharCode.Trim().TrimEnd('\0') + "]"); // Console.WriteLine("Get OcrInfo:" + "ocrNum[" + i.ToString() + "], ocrLen[" + Convert.ToString(stOcrInfo.stOcrRowInfo[i].nOcrLen) + "], ocrChar[" + strOcrCharCode.Trim().TrimEnd('\0') + "]");
} }
} }
@ -99,8 +134,11 @@ namespace Aucma.Core.CodeBinding.Business
// Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]"); // Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]");
if (stBcrResult.nCodeNum == 0) if (stBcrResult.nCodeNum == 0)
{ {
Console.WriteLine("liner--->No Read 处理"); NoReadEvent?.Invoke(ShellScannerIp);
NoReadEvent?.Invoke(LinerScannerIp); Console.WriteLine(DateTime.Now + ":mes--->No Read 处理");
log.Info(DateTime.Now + ":mes--->No Read 处理");
// 更新存活时间
LinerLiveTime = DateTime.Now;
} }
for (Int32 i = 0; i < stBcrResult.nCodeNum; i++) for (Int32 i = 0; i < stBcrResult.nCodeNum; i++)
{ {
@ -108,15 +146,19 @@ namespace Aucma.Core.CodeBinding.Business
if (bIsValidUTF8) if (bIsValidUTF8)
{ {
string strCode = Encoding.UTF8.GetString(stBcrResult.stBcrInfoEx2[i].chCode); string strCode = Encoding.UTF8.GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]"); Console.WriteLine(DateTime.Now + ":Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
} }
else else
{ {
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode); string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]"); Console.WriteLine(DateTime.Now + ":mes扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp); log.Info(DateTime.Now + ":mes扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// 更新存活时间
LinerLiveTime = DateTime.Now;
// 业务处理 // 业务处理
BindingReceiveCodeEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp); BindingReceiveCodeEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp);
} }
} }
@ -133,8 +175,7 @@ namespace Aucma.Core.CodeBinding.Business
public static void Shell() public static void Shell()
{ {
string a1 = LinerScannerIp; ShellLiveTime = DateTime.Now;
string a2 = ShellScannerIp;
MvCodeReader.cbOutputEx2delegate ImageCallback; MvCodeReader.cbOutputEx2delegate ImageCallback;
MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2 stFrameInfo = new MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2(); MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2 stFrameInfo = new MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2();
@ -148,17 +189,28 @@ namespace Aucma.Core.CodeBinding.Business
nRet = MvCodeReader.MV_CODEREADER_EnumDevices_NET(ref stDevList, MvCodeReader.MV_CODEREADER_GIGE_DEVICE); nRet = MvCodeReader.MV_CODEREADER_EnumDevices_NET(ref stDevList, MvCodeReader.MV_CODEREADER_GIGE_DEVICE);
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
RefreshStateEvent?.Invoke("mes", false);
Thread.Sleep(1000 * 10);
Console.WriteLine("Enum device failed:{0:x8}", nRet); Console.WriteLine("Enum device failed:{0:x8}", nRet);
break; break;
} }
Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum)); Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum));
if (0 == stDevList.nDeviceNum) if (0 == stDevList.nDeviceNum)
{ {
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
RefreshStateEvent?.Invoke("mes", false);
Thread.Sleep(1000 * 10);
break; break;
} }
MvCodeReader.MV_CODEREADER_DEVICE_INFO stDevInfo; // 通用设备信息 MvCodeReader.MV_CODEREADER_DEVICE_INFO stDevInfo; // 通用设备信息
Int32 nDevIndex = -1; int nDevIndex = -1;
// ch:打印设备信息 | en:Print device info // ch:打印设备信息 | en:Print device info
for (Int32 i = 0; i < stDevList.nDeviceNum; i++) for (Int32 i = 0; i < stDevList.nDeviceNum; i++)
{ {
@ -178,10 +230,18 @@ namespace Aucma.Core.CodeBinding.Business
{ {
nDevIndex = i; nDevIndex = i;
Console.WriteLine("device IP :" + ipStr); Console.WriteLine("device IP :" + ipStr);
} }
} }
} }
if (nDevIndex < 0) return; if (nDevIndex < 0)
{
Console.WriteLine("未找到SN扫码器");
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
Thread.Sleep(1000 * 30);
break;
}
stDevInfo = (MvCodeReader.MV_CODEREADER_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[nDevIndex], typeof(MvCodeReader.MV_CODEREADER_DEVICE_INFO)); stDevInfo = (MvCodeReader.MV_CODEREADER_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[nDevIndex], typeof(MvCodeReader.MV_CODEREADER_DEVICE_INFO));
// ch:创建设备 | en:Create device // ch:创建设备 | en:Create device
@ -189,24 +249,32 @@ namespace Aucma.Core.CodeBinding.Business
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
Console.WriteLine("Create device failed:{0:x8}", nRet); Console.WriteLine("Create device failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break; break;
} }
// ch:打开设备 | en:Open device // ch:打开设备 | en:Open device
nRet = device.MV_CODEREADER_OpenDevice_NET(); nRet = device.MV_CODEREADER_OpenDevice_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
Console.WriteLine("Open device failed:{0:x8}", nRet); Console.WriteLine("Open device failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break; break;
} }
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", true);
// ch:注册回调函数 | en:Register image callback // ch:注册回调函数 | en:Register image callback
ImageCallback = new MvCodeReader.cbOutputEx2delegate(ShellImageCallbackFunc); ImageCallback = new MvCodeReader.cbOutputEx2delegate(ShellImageCallbackFunc);
nRet = device.MV_CODEREADER_RegisterImageCallBackEx2_NET(ImageCallback, IntPtr.Zero); nRet = device.MV_CODEREADER_RegisterImageCallBackEx2_NET(ImageCallback, IntPtr.Zero);
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
Console.WriteLine("Register image callback failed!"); Console.WriteLine("Register image callback failed!");
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break; break;
} }
@ -215,12 +283,32 @@ namespace Aucma.Core.CodeBinding.Business
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
Console.WriteLine("Start grabbing failed:{0:x8}", nRet); Console.WriteLine("Start grabbing failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break; break;
} }
// 关闭使用
ShellDevice = device;
Console.WriteLine("Press enter to exit"); Console.WriteLine("Press enter to exit");
Console.ReadLine(); Console.WriteLine(DateTime.Now.ToString());
while (true)
{
Thread.Sleep(1000 * 60);
DateTime dateTime = DateTime.Now;
TimeSpan timeSpan = dateTime.Subtract(ShellLiveTime);
if (timeSpan.TotalMinutes >= 10)
{
Console.WriteLine("SN扫码器超时");
//CloseShell();
//Shell();
break;
}
}
// Console.ReadLine();
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
// ch:停止抓图 | en:Stop grabbing // ch:停止抓图 | en:Stop grabbing
nRet = device.MV_CODEREADER_StopGrabbing_NET(); nRet = device.MV_CODEREADER_StopGrabbing_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
@ -245,16 +333,17 @@ namespace Aucma.Core.CodeBinding.Business
break; break;
} }
} while (false); } while (false);
Thread.Sleep(1000);
if (MvCodeReader.MV_CODEREADER_OK != nRet) Shell();
{ //if (MvCodeReader.MV_CODEREADER_OK != nRet)
// ch:销毁设备 | en:Destroy device //{
nRet = device.MV_CODEREADER_DestroyHandle_NET(); // // ch:销毁设备 | en:Destroy device
if (MvCodeReader.MV_CODEREADER_OK != nRet) // nRet = device.MV_CODEREADER_DestroyHandle_NET();
{ // if (MvCodeReader.MV_CODEREADER_OK != nRet)
Console.WriteLine("Destroy device failed:{0:x8}", nRet); // {
} // Console.WriteLine("Destroy device failed:{0:x8}", nRet);
} // }
//}
} }
@ -262,7 +351,7 @@ namespace Aucma.Core.CodeBinding.Business
public static void Liner() public static void Liner()
{ {
LinerLiveTime = DateTime.Now;
MvCodeReader.cbOutputEx2delegate ImageCallback; MvCodeReader.cbOutputEx2delegate ImageCallback;
MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2 stFrameInfo = new MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2(); MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2 stFrameInfo = new MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2();
@ -276,12 +365,22 @@ namespace Aucma.Core.CodeBinding.Business
nRet = MvCodeReader.MV_CODEREADER_EnumDevices_NET(ref stDevList, MvCodeReader.MV_CODEREADER_GIGE_DEVICE); nRet = MvCodeReader.MV_CODEREADER_EnumDevices_NET(ref stDevList, MvCodeReader.MV_CODEREADER_GIGE_DEVICE);
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
RefreshStateEvent?.Invoke("mes", false);
Thread.Sleep(1000 * 10);
Console.WriteLine("Enum device failed:{0:x8}", nRet); Console.WriteLine("Enum device failed:{0:x8}", nRet);
break; break;
} }
Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum)); Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum));
if (0 == stDevList.nDeviceNum) if (0 == stDevList.nDeviceNum)
{ {
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
RefreshStateEvent?.Invoke("mes", false);
Thread.Sleep(1000 * 10);
break; break;
} }
@ -309,7 +408,15 @@ namespace Aucma.Core.CodeBinding.Business
} }
} }
} }
if (nDevIndex < 0) return; if (nDevIndex < 0)
{
Console.WriteLine("未找到mes扫码器");
// 刷新扫码器状态
RefreshStateEvent?.Invoke("mes", false);
Thread.Sleep(1000 * 30);
break;
}
stDevInfo = (MvCodeReader.MV_CODEREADER_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[nDevIndex], typeof(MvCodeReader.MV_CODEREADER_DEVICE_INFO)); stDevInfo = (MvCodeReader.MV_CODEREADER_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[nDevIndex], typeof(MvCodeReader.MV_CODEREADER_DEVICE_INFO));
// ch:创建设备 | en:Create device // ch:创建设备 | en:Create device
@ -325,9 +432,12 @@ namespace Aucma.Core.CodeBinding.Business
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
{ {
Console.WriteLine("Open device failed:{0:x8}", nRet); Console.WriteLine("Open device failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break; break;
} }
// 刷新扫码器状态
RefreshStateEvent?.Invoke("mes", true);
// ch:注册回调函数 | en:Register image callback // ch:注册回调函数 | en:Register image callback
ImageCallback = new MvCodeReader.cbOutputEx2delegate(LinerImageCallbackFunc); ImageCallback = new MvCodeReader.cbOutputEx2delegate(LinerImageCallbackFunc);
@ -345,9 +455,26 @@ namespace Aucma.Core.CodeBinding.Business
Console.WriteLine("Start grabbing failed:{0:x8}", nRet); Console.WriteLine("Start grabbing failed:{0:x8}", nRet);
break; break;
} }
// 关闭使用
ShellDevice = device;
Console.WriteLine("Press enter to exit"); Console.WriteLine("Press enter to exit");
Console.ReadLine(); Console.WriteLine(DateTime.Now.ToString());
while (true)
{
Thread.Sleep(1000 * 60);
DateTime dateTime = DateTime.Now;
TimeSpan timeSpan = dateTime.Subtract(LinerLiveTime);
if (timeSpan.TotalMinutes >= 10)
{
Console.WriteLine("mes扫码器超时");
//CloseShell();
//Shell();
break;
}
}
//Console.ReadLine();
// ch:停止抓图 | en:Stop grabbing // ch:停止抓图 | en:Stop grabbing
nRet = device.MV_CODEREADER_StopGrabbing_NET(); nRet = device.MV_CODEREADER_StopGrabbing_NET();
@ -372,6 +499,7 @@ namespace Aucma.Core.CodeBinding.Business
Console.WriteLine("Destroy device failed:{0:x8}", nRet); Console.WriteLine("Destroy device failed:{0:x8}", nRet);
break; break;
} }
} while (false); } while (false);
if (MvCodeReader.MV_CODEREADER_OK != nRet) if (MvCodeReader.MV_CODEREADER_OK != nRet)
@ -383,9 +511,80 @@ namespace Aucma.Core.CodeBinding.Business
Console.WriteLine("Destroy device failed:{0:x8}", nRet); Console.WriteLine("Destroy device failed:{0:x8}", nRet);
} }
} }
Thread.Sleep(1000);
Liner();
} }
/// <summary>
/// 关闭内胆扫码器
/// </summary>
public static void CloseLiner()
{
int nRet = MvCodeReader.MV_CODEREADER_OK;
MvCodeReader device = LinerDevice;
// ch:停止抓图 | en:Stop grabbing
nRet = device.MV_CODEREADER_StopGrabbing_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Stop grabbing failed{0:x8}", nRet);
return;
}
// ch:关闭设备 | en:Close device
nRet = device.MV_CODEREADER_CloseDevice_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Close device failed{0:x8}", nRet);
return;
}
// ch:销毁设备 | en:Destroy device
nRet = device.MV_CODEREADER_DestroyHandle_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Destroy device failed:{0:x8}", nRet);
return;
}
Console.WriteLine("关闭内胆扫码器成功");
return;
}
/// <summary>
/// 关闭箱壳扫码器
/// </summary>
public static void CloseShell()
{
int nRet = MvCodeReader.MV_CODEREADER_OK;
MvCodeReader device = ShellDevice;
// ch:停止抓图 | en:Stop grabbing
nRet = device.MV_CODEREADER_StopGrabbing_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Stop grabbing failed{0:x8}", nRet);
return;
}
// ch:关闭设备 | en:Close device
nRet = device.MV_CODEREADER_CloseDevice_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Close device failed{0:x8}", nRet);
return;
}
// ch:销毁设备 | en:Destroy device
nRet = device.MV_CODEREADER_DestroyHandle_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Destroy device failed:{0:x8}", nRet);
return;
}
Console.WriteLine("关闭箱壳扫码器成功");
return;
}
#region 判断字符编码 #region 判断字符编码
/// <summary> /// <summary>
/// 判断字符编码 /// 判断字符编码

@ -623,7 +623,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
// 往plc写入停止信号 // 往plc写入停止信号
obj.plc.WriteInt16("D7102", "1"); obj.plc.WriteInt16("D7102", "1");
// 报警信号 // 报警信号
obj.plc.WriteInt16("D7101","0"); obj.plc.WriteInt16("D7101","1");
result = true; result = true;
} }

@ -22,6 +22,7 @@ using Admin.Core.Tasks;
using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData; using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
using System.Windows.Threading; using System.Windows.Threading;
using Aucma.Core.CodeBinding.Business; using Aucma.Core.CodeBinding.Business;
using MvCodeHelper = Aucma.Core.CodeBinding.Business.MvCodeHelper;
namespace Aucma.Core.CodeBinding.ViewModels namespace Aucma.Core.CodeBinding.ViewModels
{ {
@ -50,7 +51,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
GunBusiness.InstanceSerialPort3(); GunBusiness.InstanceSerialPort3();
Job_AllState_Quartz.RefreshStateEvent += RefreshStatus; Job_AllState_Quartz.RefreshStateEvent += RefreshStatus;
MvCodeHelper.RefreshStateEvent += RefreshScanner;
InitHikRobot(); InitHikRobot();
} }
@ -69,7 +70,7 @@ namespace Aucma.Core.CodeBinding.ViewModels
Task.Run(() => Task.Run(() =>
{ {
Thread.Sleep(2500); Thread.Sleep(3000);
//MvCodeHelper1.DeviceListAcq();//获取创建设备 //MvCodeHelper1.DeviceListAcq();//获取创建设备
// MvCodeHelper1.StartGrab(); // 开启触发扫码接收数据 // MvCodeHelper1.StartGrab(); // 开启触发扫码接收数据
Business.MvCodeHelper.Liner(); Business.MvCodeHelper.Liner();
@ -78,14 +79,28 @@ namespace Aucma.Core.CodeBinding.ViewModels
} }
catch (Exception ex) catch (Exception ex)
{ {
log.Error("InitHikRobot()开启海康扫码器和扫码枪方法异常" + ex.Message.ToString());
//MvCodeHelper.CloseAllDevice(); //MvCodeHelper.CloseAllDevice();
InitHikRobot(); //InitHikRobot();
} }
} }
#endregion #endregion
#region 设备状态刷新 #region 设备状态刷新
public void RefreshScanner(string ip, bool flag)
{
if (ip == "SN")
{
Scanner1State(flag); ;
}
else if (ip == "mes")
{
Scanner2State(flag);
}
}
/// <summary> /// <summary>
/// 设备状态刷新 /// 设备状态刷新
/// </summary> /// </summary>
@ -93,8 +108,8 @@ namespace Aucma.Core.CodeBinding.ViewModels
{ {
MesDbState(mesState); MesDbState(mesState);
PlcState(plcState); PlcState(plcState);
Scanner1State(scanner1); // Scanner1State(scanner1);
Scanner2State(scanner2); // Scanner2State(scanner2);
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -370,13 +385,13 @@ namespace Aucma.Core.CodeBinding.ViewModels
{ {
if (type) if (type)
{ {
Scanner1UIStatusWb = "扫码器1状态"; Scanner1UIStatusWb = "SN扫码器";
Scanner1UIColor = "Green"; Scanner1UIColor = "Green";
Scanner1UIIcon = "Assets/Images/Green.png"; Scanner1UIIcon = "Assets/Images/Green.png";
} }
else else
{ {
Scanner1UIStatusWb = "扫码器1状态"; Scanner1UIStatusWb = "SN扫码器";
Scanner1UIColor = "Red"; Scanner1UIColor = "Red";
Scanner1UIIcon = "Assets/Images/Red.png"; Scanner1UIIcon = "Assets/Images/Red.png";
} }
@ -429,13 +444,13 @@ namespace Aucma.Core.CodeBinding.ViewModels
{ {
if (type) if (type)
{ {
Scanner2UIStatusWb = "扫码器2状态"; Scanner2UIStatusWb = "Mes扫码器";
Scanner2UIColor = "Green"; Scanner2UIColor = "Green";
Scanner2UIIcon = "Assets/Images/Green.png"; Scanner2UIIcon = "Assets/Images/Green.png";
} }
else else
{ {
Scanner2UIStatusWb = "扫码器2状态"; Scanner2UIStatusWb = "Mes扫码器";
Scanner2UIColor = "Red"; Scanner2UIColor = "Red";
Scanner2UIIcon = "Assets/Images/Red.png"; Scanner2UIIcon = "Assets/Images/Red.png";
} }

@ -215,7 +215,7 @@
"PlcType": "Melsec", "PlcType": "Melsec",
"Enabled": true, "Enabled": true,
"IP": "10.10.92.70", "IP": "10.10.92.70",
"Port": 2015 "Port": 2014
} }
], ],

@ -27,7 +27,7 @@ namespace Aucma.Core.ProductOffLine.Business
// 箱壳扫码器ip // 箱壳扫码器ip
private static string ShellScannerIp = allScanners.First(x => x.Name == "外侧扫码器2").Ip; private static string ShellScannerIp = allScanners.First(x => x.Name == "外侧扫码器2").Ip;
private static readonly log4net.ILog log = LogManager.GetLogger(typeof(OffLineBusiness)); private static readonly log4net.ILog log = LogManager.GetLogger(typeof(MvCodeHelper));
#region 全局变量定义 #region 全局变量定义

@ -450,24 +450,24 @@ namespace Aucma.Core.ProductOffLine.Business
try try
{ {
// 1.质检 // 1.质检
List<ReportQualityInsPection> qualityList = _reportQualityInspectionServices.JudgeIsQualified(BarCode); // List<ReportQualityInsPection> qualityList = _reportQualityInspectionServices.JudgeIsQualified(BarCode);
if (qualityList != null) // if (qualityList != null)
{ //{
TempOffLineInfo.QualityResult = "失败"; // TempOffLineInfo.QualityResult = "失败";
TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1 // TempOffLineInfo.ProductSNCode = BarCode.Trim(); //产品SN条码*1
TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2 // TempOffLineInfo.ProductScanTime = System.DateTime.Now; // 扫码时间*2
TempOffLineInfo.MsgInfo = "条码质检失败:"; // TempOffLineInfo.MsgInfo = "条码质检失败:";
foreach(ReportQualityInsPection item in qualityList) // foreach(ReportQualityInsPection item in qualityList)
{ // {
TempOffLineInfo.MsgInfo += item.QualityDefectName; // TempOffLineInfo.MsgInfo += item.QualityDefectName;
} // }
TempOffLineInfo.MsgAlarmFlag = true; // TempOffLineInfo.MsgAlarmFlag = true;
//界面刷新 // //界面刷新
// TempOffLineInfo.ProductRefreshFlag = true; // // TempOffLineInfo.ProductRefreshFlag = true;
RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo); // RefreshScanMateriaCodeEvent?.Invoke(TempOffLineInfo);
return false; // return false;
} //}
TempOffLineInfo.QualityResult = "成功"; TempOffLineInfo.QualityResult = "成功";

Loading…
Cancel
Save