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

dev
liuwf 12 months ago
parent 14d36d929f
commit b490218d75

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

@ -1,11 +1,13 @@
using Admin.Core.Common;
using Aucma.Core.Scanner;
using log4net;
using MvCodeReaderSDKNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Aucma.Core.CodeBinding.Business
@ -21,10 +23,35 @@ namespace Aucma.Core.CodeBinding.Business
// 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 条码绑定上位机委托事件
/// <summary>
/// 刷新扫码器状态
/// </summary>
/// <param name="materialCodeStr"></param>
/// <param name="ip"></param>
public delegate void RefreshState(string ip, bool flag);
public static event RefreshState RefreshStateEvent;
/// <summary>
/// code1扫码信息刷新
/// </summary>
@ -59,8 +86,11 @@ namespace Aucma.Core.CodeBinding.Business
// Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]");
if (stBcrResult.nCodeNum == 0)
{
Console.WriteLine("shell--->No Read 处理");
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++)
{
@ -68,15 +98,20 @@ namespace Aucma.Core.CodeBinding.Business
if (bIsValidUTF8)
{
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
{
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), ShellScannerIp);
// 业务处理
Console.WriteLine(DateTime.Now + ":SN扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
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);
// 业务处理
}
}
@ -85,7 +120,7 @@ namespace Aucma.Core.CodeBinding.Business
for (int i = 0; i < stOcrInfo.nOCRAllNum; i++)
{
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) + "]");
if (stBcrResult.nCodeNum == 0)
{
Console.WriteLine("liner--->No Read 处理");
NoReadEvent?.Invoke(LinerScannerIp);
NoReadEvent?.Invoke(ShellScannerIp);
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++)
{
@ -108,15 +146,19 @@ namespace Aucma.Core.CodeBinding.Business
if (bIsValidUTF8)
{
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
{
string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode);
Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
// RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp);
Console.WriteLine(DateTime.Now + ":mes扫码器==>Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]");
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);
}
}
@ -129,12 +171,11 @@ namespace Aucma.Core.CodeBinding.Business
Console.WriteLine("Get OcrInfo:" + "ocrNum[" + i.ToString() + "], ocrLen[" + Convert.ToString(stOcrInfo.stOcrRowInfo[i].nOcrLen) + "], ocrChar[" + strOcrCharCode.Trim().TrimEnd('\0') + "]");
}
}
public static void Shell()
{
string a1 = LinerScannerIp;
string a2 = ShellScannerIp;
ShellLiveTime = DateTime.Now;
MvCodeReader.cbOutputEx2delegate ImageCallback;
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);
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);
break;
}
Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum));
if (0 == stDevList.nDeviceNum)
{
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
RefreshStateEvent?.Invoke("mes", false);
Thread.Sleep(1000 * 10);
break;
}
MvCodeReader.MV_CODEREADER_DEVICE_INFO stDevInfo; // 通用设备信息
Int32 nDevIndex = -1;
int nDevIndex = -1;
// ch:打印设备信息 | en:Print device info
for (Int32 i = 0; i < stDevList.nDeviceNum; i++)
{
@ -178,10 +230,18 @@ namespace Aucma.Core.CodeBinding.Business
{
nDevIndex = i;
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));
// ch:创建设备 | en:Create device
@ -189,24 +249,32 @@ namespace Aucma.Core.CodeBinding.Business
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Create device failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break;
}
// ch:打开设备 | en:Open device
nRet = device.MV_CODEREADER_OpenDevice_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Open device failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break;
}
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", true);
// ch:注册回调函数 | en:Register image callback
ImageCallback = new MvCodeReader.cbOutputEx2delegate(ShellImageCallbackFunc);
nRet = device.MV_CODEREADER_RegisterImageCallBackEx2_NET(ImageCallback, IntPtr.Zero);
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Register image callback failed!");
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break;
}
@ -215,12 +283,32 @@ namespace Aucma.Core.CodeBinding.Business
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Start grabbing failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break;
}
// 关闭使用
ShellDevice = device;
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
nRet = device.MV_CODEREADER_StopGrabbing_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
@ -245,16 +333,17 @@ namespace Aucma.Core.CodeBinding.Business
break;
}
} while (false);
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
// ch:销毁设备 | en:Destroy device
nRet = device.MV_CODEREADER_DestroyHandle_NET();
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Destroy device failed:{0:x8}", nRet);
}
}
Thread.Sleep(1000);
Shell();
//if (MvCodeReader.MV_CODEREADER_OK != nRet)
//{
// // ch:销毁设备 | en:Destroy device
// nRet = device.MV_CODEREADER_DestroyHandle_NET();
// if (MvCodeReader.MV_CODEREADER_OK != nRet)
// {
// Console.WriteLine("Destroy device failed:{0:x8}", nRet);
// }
//}
}
@ -262,7 +351,7 @@ namespace Aucma.Core.CodeBinding.Business
public static void Liner()
{
LinerLiveTime = DateTime.Now;
MvCodeReader.cbOutputEx2delegate ImageCallback;
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);
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);
break;
}
Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum));
if (0 == stDevList.nDeviceNum)
{
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
RefreshStateEvent?.Invoke("mes", false);
Thread.Sleep(1000 * 10);
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));
// ch:创建设备 | en:Create device
@ -325,9 +432,12 @@ namespace Aucma.Core.CodeBinding.Business
if (MvCodeReader.MV_CODEREADER_OK != nRet)
{
Console.WriteLine("Open device failed:{0:x8}", nRet);
// 刷新扫码器状态
RefreshStateEvent?.Invoke("SN", false);
break;
}
// 刷新扫码器状态
RefreshStateEvent?.Invoke("mes", true);
// ch:注册回调函数 | en:Register image callback
ImageCallback = new MvCodeReader.cbOutputEx2delegate(LinerImageCallbackFunc);
@ -345,9 +455,26 @@ namespace Aucma.Core.CodeBinding.Business
Console.WriteLine("Start grabbing failed:{0:x8}", nRet);
break;
}
// 关闭使用
ShellDevice = device;
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
nRet = device.MV_CODEREADER_StopGrabbing_NET();
@ -372,6 +499,7 @@ namespace Aucma.Core.CodeBinding.Business
Console.WriteLine("Destroy device failed:{0:x8}", nRet);
break;
}
} while (false);
if (MvCodeReader.MV_CODEREADER_OK != nRet)
@ -383,9 +511,80 @@ namespace Aucma.Core.CodeBinding.Business
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 判断字符编码
/// <summary>
/// 判断字符编码

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

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

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

@ -27,7 +27,7 @@ namespace Aucma.Core.ProductOffLine.Business
// 箱壳扫码器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 全局变量定义

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

Loading…
Cancel
Save