增加入口自动扫码功能

This commit is contained in:
anerx 2025-03-23 15:26:01 +08:00
parent 5108f66352
commit d61ad53d28
6 changed files with 163 additions and 44 deletions

View File

@ -47,7 +47,7 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
logger.LogInformation($"write [{variety.Id}] to plc address[4230]"); logger.LogInformation($"write [{variety.Id}] to plc address[4230]");
} }
public async Task WriteScanYarnResultAsync(bool result, short? varietyId = null, string? yarnCode= null ) public async Task WriteScanYarnResultAsync(bool result, short? varietyId = null, string? yarnCode = null)
{ {
if (result && yarnCode != null && varietyId != null) if (result && yarnCode != null && varietyId != null)
{ {
@ -75,7 +75,7 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
} }
public async Task LeaveCompletedAsync() public async Task LeaveCompletedAsync()
{ {
await _writer.WriteShortsAsync(4020, 0); await _writer.WriteShortsAsync(4020, 0);
await _writer.WriteShortsAsync(13012, 0); await _writer.WriteShortsAsync(13012, 0);
await _writer.WriteShortsAsync(4520, 1); await _writer.WriteShortsAsync(4520, 1);
@ -127,15 +127,23 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
data = 30; data = 30;
break; break;
} }
await _writer.WriteShortsAsync(13050, [1, 1, 1, 2]); await _writer.WriteShortsAsync(13050, [1, 1, 1, 2]);
} }
public async Task WritePrintLabelResultAsync(int index, bool result)
public async Task WritePrintLabelResultAsync(int index, bool result)
{ {
var address = index == 1 ? 13060 : 13061; var address = index == 1 ? 13060 : 13061;
await _writer.WriteShortsAsync(address, (short)(result ? 1 : 2)); await _writer.WriteShortsAsync(address, (short)(result ? 1 : 2));
} }
public async Task WriteScanEntryResultAsync(int index, bool result)
{
var address = index == 1 ? 4530 : 4531;
await _writer.WriteShortsAsync(address, (short)(result ? 1 : 2));
}
//static byte SetBit(byte value, int bitPosition) //static byte SetBit(byte value, int bitPosition)
//{ //{
// // 创建一个掩码,该掩码只有第 bitPosition 位为 1 // // 创建一个掩码,该掩码只有第 bitPosition 位为 1
@ -156,8 +164,9 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
public event Func<string, Task>? OnPlcRequestPackLineOption; public event Func<string, Task>? OnPlcRequestPackLineOption;
public event Func<int, int, Task>? OnRequestPrintLabel; public event Func<int, int, Task>? OnRequestPrintLabel;
public event Func<string, Task> OnRequestGetPrintLableOption; public event Func<string, Task> OnRequestGetPrintLableOption;
public event Func<int, Task>? OnRequestScanEntry;
private async Task ReadLoop(CancellationToken token) private async Task ReadLoop(CancellationToken token)
{ {
@ -165,10 +174,11 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
{ {
try try
{ {
await QueryScanEntry();
await QueryScanProductRequest(); await QueryScanProductRequest();
await QueryScanFixtureRequest(); await QueryScanFixtureRequest();
if(!isLeaving) if (!isLeaving)
await QueryLeavingProductionLine(); await QueryLeavingProductionLine();
await QueryNeedTrayCode(); await QueryNeedTrayCode();
await QueryPutOnceCompleted(); await QueryPutOnceCompleted();
await QueryPackLineOption(); await QueryPackLineOption();
@ -235,17 +245,16 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
// var stackStatus = await _reader.ReadShortsAsync(12110, 1); // var stackStatus = await _reader.ReadShortsAsync(12110, 1);
if (leavingProductionLine[0] == 1) if (leavingProductionLine[0] == 1)
{ {
var trayCode = await _reader.ReadStringAsync(12600); var trayCode = await _reader.ReadStringAsync(12600);
//if (!string.IsNullOrEmpty(trayCode)) //if (!string.IsNullOrEmpty(trayCode))
//{ //{
PlcStackInfo info = new PlcStackInfo() PlcStackInfo info = new PlcStackInfo()
{ {
TrayCode = trayCode TrayCode = trayCode
}; };
isLeaving = true; isLeaving = true;
OnPlcRequestLeavingProductionLine?.Invoke(info); OnPlcRequestLeavingProductionLine?.Invoke(info);
// } // }
} }
} }
@ -319,21 +328,36 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
} }
} }
private async Task QueryScanEntry()
{
var requestScanEntry = await _reader.ReadShortsAsync(4030, 2);
if (requestScanEntry[0] == 1)
{
await _writer.WriteShortsAsync(4030, 0);
OnRequestScanEntry?.Invoke(1);
}
else if (requestScanEntry[1] == 1)
{
await _writer.WriteShortsAsync(4030, 0);
OnRequestScanEntry?.Invoke(2);
}
}
private async Task QueryGetPrintLabel() private async Task QueryGetPrintLabel()
{ {
var trayCode = await _reader.ReadStringAsync(13000); var trayCode = await _reader.ReadStringAsync(13000);
if (!string.IsNullOrEmpty(trayCode)&&!trayCode.StartsWith("0000")) if (!string.IsNullOrEmpty(trayCode) && !trayCode.StartsWith("0000"))
{ {
await _reader.WriteStringAsync(13000, "00000000000000000000"); await _reader.WriteStringAsync(13000, "00000000000000000000");
OnRequestGetPrintLableOption?.Invoke(trayCode); OnRequestGetPrintLableOption?.Invoke(trayCode);
} }
} }
private async Task QueryPrintLabel() private async Task QueryPrintLabel()
{ {
var requestPrintLabel = await _reader.ReadShortsAsync(13010, 3); var requestPrintLabel = await _reader.ReadShortsAsync(13010, 3);
if (requestPrintLabel[0] == 1) if (requestPrintLabel[0] == 1)
{ {
await _writer.WriteShortsAsync(13010, 0); await _writer.WriteShortsAsync(13010, 0);
await _writer.WriteShortsAsync(13012, 0); await _writer.WriteShortsAsync(13012, 0);
OnRequestPrintLabel?.Invoke(1, requestPrintLabel[2]); OnRequestPrintLabel?.Invoke(1, requestPrintLabel[2]);
@ -341,12 +365,9 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
if (requestPrintLabel[1] == 1) if (requestPrintLabel[1] == 1)
{ {
await _writer.WriteShortsAsync(13011, 0); await _writer.WriteShortsAsync(13011, 0);
await _writer.WriteShortsAsync(13012, 0); await _writer.WriteShortsAsync(13012, 0);
OnRequestPrintLabel?.Invoke(2, requestPrintLabel[2]); OnRequestPrintLabel?.Invoke(2, requestPrintLabel[2]);
} }
} }
} }

View File

@ -61,6 +61,9 @@ public interface IHyosungPlcService
Task WritePrintLableOptionsAsync(int side); Task WritePrintLableOptionsAsync(int side);
Task WritePrintLabelResultAsync(int index, bool result); Task WritePrintLabelResultAsync(int index, bool result);
Task WriteScanEntryResultAsync(int index, bool result);
/// <summary> /// <summary>
/// Plc请求扫描产品 /// Plc请求扫描产品
@ -98,4 +101,6 @@ public interface IHyosungPlcService
event Func<int, int, Task> OnRequestPrintLabel; event Func<int, int, Task> OnRequestPrintLabel;
event Func<string, Task> OnRequestGetPrintLableOption; event Func<string, Task> OnRequestGetPrintLableOption;
event Func<int, Task> OnRequestScanEntry;
} }

View File

@ -5,10 +5,12 @@ using Newtonsoft.Json.Linq;
namespace Seyounth.Hyosung.Core.Scanner; namespace Seyounth.Hyosung.Core.Scanner;
public class HikScanner(string host, int port) public class HikScanner(string host, int port,int timeout=1000)
{ {
public string Host => host; public string Host => host;
public int Port => port; public int Port => port;
public int Timeout => timeout;
private Socket _socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); private Socket _socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
public async Task ConnectAsync(CancellationToken token) public async Task ConnectAsync(CancellationToken token)
@ -62,7 +64,7 @@ public class HikScanner(string host, int port)
byte[] cmd = "start"u8.ToArray(); byte[] cmd = "start"u8.ToArray();
await _socket.SendAsync(cmd); await _socket.SendAsync(cmd);
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
int len = await _socket.ReceiveAsync(buffer).WaitAsync(TimeSpan.FromMilliseconds(1000)); int len = await _socket.ReceiveAsync(buffer).WaitAsync(TimeSpan.FromMilliseconds(Timeout));
barcode= Encoding.ASCII.GetString(buffer, 0, len); barcode= Encoding.ASCII.GetString(buffer, 0, len);
} }
catch (Exception e) catch (Exception e)

View File

@ -12,7 +12,8 @@ public class HyosungScannerService : IHyosungScannerService
private readonly ConcurrentDictionary<int, HikScanner> _fixtureScanners = new(); private readonly ConcurrentDictionary<int, HikScanner> _fixtureScanners = new();
private readonly List<HikScanner> _carScanners = new();
private readonly List<HikScanner> _varietyScanners = new();
private List<string> lastCodes = new List<string>(); private List<string> lastCodes = new List<string>();
@ -27,6 +28,10 @@ public class HyosungScannerService : IHyosungScannerService
_fixtureScanners.TryAdd(2, new HikScanner("192.168.3.32", 2001)); _fixtureScanners.TryAdd(2, new HikScanner("192.168.3.32", 2001));
_fixtureScanners.TryAdd(3, new HikScanner("192.168.3.33", 2001)); _fixtureScanners.TryAdd(3, new HikScanner("192.168.3.33", 2001));
_fixtureScanners.TryAdd(4, new HikScanner("192.168.3.30", 2001)); _fixtureScanners.TryAdd(4, new HikScanner("192.168.3.30", 2001));
_carScanners.Add(new HikScanner("192.168.3.46", 2001,5000));
_carScanners.Add(new HikScanner("1920.168.3.48", 2001,5000));
_varietyScanners.Add(new HikScanner("192.168.3.47", 2001,10000));
_varietyScanners.Add(new HikScanner("192.168.3.49", 2001,10000));
_logger = logger; _logger = logger;
lastCodes.Add(""); lastCodes.Add("");
lastCodes.Add(""); lastCodes.Add("");
@ -36,7 +41,6 @@ public class HyosungScannerService : IHyosungScannerService
public async Task StartAsync(CancellationToken token) public async Task StartAsync(CancellationToken token)
{ {
// 创建一个超时任务 // 创建一个超时任务
var timeoutTask = Task.Delay(2000, token); var timeoutTask = Task.Delay(2000, token);
@ -54,8 +58,23 @@ public class HyosungScannerService : IHyosungScannerService
return Task.WhenAny(connectTask, timeoutTask); return Task.WhenAny(connectTask, timeoutTask);
}).ToList(); }).ToList();
var varietyScannerTasks = _varietyScanners.Select(scanner =>
{
var connectTask = scanner.ConnectAsync(token);
return Task.WhenAny(connectTask, timeoutTask);
}).ToList();
// 为每个车号扫描器创建一个带有超时的连接任务
var carScannerTasks = _carScanners.Select(scanner =>
{
var connectTask = scanner.ConnectAsync(token);
return Task.WhenAny(connectTask, timeoutTask);
}).ToList();
// 合并所有任务 // 合并所有任务
var allTasks = new List<Task>(); var allTasks = new List<Task>();
allTasks.AddRange(carScannerTasks);
allTasks.AddRange(varietyScannerTasks);
allTasks.AddRange(yarnScannerTasks); allTasks.AddRange(yarnScannerTasks);
allTasks.AddRange(fixtureScannerTasks); allTasks.AddRange(fixtureScannerTasks);
@ -82,6 +101,26 @@ public class HyosungScannerService : IHyosungScannerService
Console.WriteLine($"夹具扫描器连接超时"); Console.WriteLine($"夹具扫描器连接超时");
} }
} }
foreach (var task in varietyScannerTasks)
{
var innerTask = task as Task<Task>;
if (innerTask.Result == timeoutTask)
{
// 处理纱线扫描器连接超时的情况
Console.WriteLine($"产品扫描器连接超时");
}
}
foreach (var task in carScannerTasks)
{
var innerTask = task as Task<Task>;
if (innerTask.Result == timeoutTask)
{
// 处理车号扫描器连接超时的情况
Console.WriteLine($"车号扫描器连接超时");
}
}
// foreach (var scanner in _yarnScanners) // foreach (var scanner in _yarnScanners)
// { // {
// await scanner.ConnectAsync(token); // await scanner.ConnectAsync(token);
@ -105,7 +144,7 @@ public class HyosungScannerService : IHyosungScannerService
List<Task<string>> ls = _yarnScanners.Select(scanner => scanner.ScanAsync()).ToList(); List<Task<string>> ls = _yarnScanners.Select(scanner => scanner.ScanAsync()).ToList();
//停止所有的扫码枪 //停止所有的扫码枪
while (ls.Count > 0) while (ls.Count > 0)
{ {
// 使用 Task.WhenAny 方法等待任意一个任务完成 // 使用 Task.WhenAny 方法等待任意一个任务完成
@ -119,11 +158,9 @@ public class HyosungScannerService : IHyosungScannerService
{ {
_yarnScanners.Select(async scanner => await scanner.Stop()); _yarnScanners.Select(async scanner => await scanner.Stop());
return Yarn.Create(result, varietyId); return Yarn.Create(result, varietyId);
} }
} }
//_yarnScanners.Select( scanner => scanner.Stop()); //_yarnScanners.Select( scanner => scanner.Stop());
_logger.LogWarning($"all scanner no scan yarn"); _logger.LogWarning($"all scanner no scan yarn");
_yarnScanners.Select(async scanner => await scanner.Restart()); _yarnScanners.Select(async scanner => await scanner.Restart());
@ -137,13 +174,13 @@ public class HyosungScannerService : IHyosungScannerService
{ {
return await _fixtureScanners[fixtureId].ScanAsync(); return await _fixtureScanners[fixtureId].ScanAsync();
} }
catch(Exception e) catch (Exception e)
{ {
_logger.LogError(e, $"Fixture{fixtureId} Scan Error"); _logger.LogError(e, $"Fixture{fixtureId} Scan Error");
await _fixtureScanners[fixtureId].Restart(); await _fixtureScanners[fixtureId].Restart();
return await _fixtureScanners[fixtureId].ScanAsync(); return await _fixtureScanners[fixtureId].ScanAsync();
} }
//string code = ""; //string code = "";
//do //do
//{ //{
@ -153,4 +190,14 @@ public class HyosungScannerService : IHyosungScannerService
//lastCodes[fixtureId - 1] = code; //lastCodes[fixtureId - 1] = code;
//return code; //return code;
} }
public async Task<string> ScanYarnCarAsync(int entryId)
{
return await _carScanners[entryId - 1].ScanAsync();
}
public async Task<string> ScanVarietyAsync(int entryId)
{
return await _varietyScanners[entryId - 1].ScanAsync();
}
} }

View File

@ -21,4 +21,8 @@ public interface IHyosungScannerService
/// <param name="fixtureId"></param> /// <param name="fixtureId"></param>
/// <returns></returns> /// <returns></returns>
Task<string> ScanFixtureAsync(int fixtureId); Task<string> ScanFixtureAsync(int fixtureId);
Task<string> ScanYarnCarAsync(int entryId);
Task<string> ScanVarietyAsync(int entryId);
} }

View File

@ -12,7 +12,6 @@ using Seyounth.Hyosung.Data.Services;
using Seyounth.Hyosung.Data.Services.Hyosung; using Seyounth.Hyosung.Data.Services.Hyosung;
using Seyounth.Hyosung.Data.Services.Hyosung.Entities; using Seyounth.Hyosung.Data.Services.Hyosung.Entities;
using Seyounth.Hyosung.Runtime.Models; using Seyounth.Hyosung.Runtime.Models;
using static System.Runtime.CompilerServices.RuntimeHelpers;
namespace Seyounth.Hyosung.Runtime; namespace Seyounth.Hyosung.Runtime;
@ -50,10 +49,48 @@ public class HyosungRuntime(
hyosungPlcService.OnPlcRequestPackLineOption += OnPlcRequestPackLineOption; hyosungPlcService.OnPlcRequestPackLineOption += OnPlcRequestPackLineOption;
hyosungPlcService.OnRequestPrintLabel += OnPlcRequestPrintLabel; hyosungPlcService.OnRequestPrintLabel += OnPlcRequestPrintLabel;
hyosungPlcService.OnRequestGetPrintLableOption += OnRequestGetPrintLabel; hyosungPlcService.OnRequestGetPrintLableOption += OnRequestGetPrintLabel;
hyosungPlcService.OnRequestScanEntry += OnPlcRequestScanEntry;
await hyosungPlcService.StartAsync(token); await hyosungPlcService.StartAsync(token);
} }
private async Task OnPlcRequestScanEntry(int arg)
{
logger.LogInformation($"plc request scan entry:{arg}");
try
{
var carCode = await hyosungScannerService.ScanYarnCarAsync(arg);
var varietyId = await hyosungScannerService.ScanVarietyAsync(arg);
if (string.IsNullOrEmpty(carCode) || string.IsNullOrEmpty(varietyId))
{
await hyosungPlcService.WriteScanEntryResultAsync(arg, false);
logger.LogInformation($"scan entry fail");
}
else
{
var carType = carCode[..1];
int carNumber = carType switch
{
"A" => 1,
"B" => 2,
"C" => 3,
"D" => 4,
_ => 0
};
var variety = await varietyService.GetById(int.Parse(varietyId));
variety.YarnCarType = carNumber;
variety.YarnCarSide = 1;
await SendVarietyToPlcAsync(variety);
await hyosungPlcService.WriteScanEntryResultAsync(arg, true);
logger.LogInformation($"scan entry success: {carCode}");
}
}
catch (Exception e)
{
await hyosungPlcService.WriteScanEntryResultAsync(arg, false);
logger.LogError(e, $"scan entry fail");
}
}
public async Task StopAsync(CancellationToken token) public async Task StopAsync(CancellationToken token)
{ {
@ -261,7 +298,6 @@ public class HyosungRuntime(
logger.LogInformation($"plc request pack line option"); logger.LogInformation($"plc request pack line option");
try try
{ {
var tray = await trayService.GetByCode(arg); var tray = await trayService.GetByCode(arg);
var variety = await varietyService.GetById(tray.VarietyId); var variety = await varietyService.GetById(tray.VarietyId);
if (_packingQueue is null) if (_packingQueue is null)
@ -275,7 +311,7 @@ public class HyosungRuntime(
if (control is null) if (control is null)
control = await hyosungWmsService.GetControlNo(variety, grade); control = await hyosungWmsService.GetControlNo(variety, grade);
else else
control =control+count; control = control + count;
var isEven = control % 2 == 0; var isEven = control % 2 == 0;
PackLineOption = new PackLineOption() PackLineOption = new PackLineOption()
{ {
@ -283,19 +319,24 @@ public class HyosungRuntime(
HasBox = variety.HasBox, HasBox = variety.HasBox,
TrayCode = arg TrayCode = arg
}; };
if (variety.NeedTopBoard == NeedType.Need || (isEven && variety.NeedTopBoard == NeedType.EvenNeed) || (!isEven && variety.NeedTopBoard == NeedType.OddNeed)) if (variety.NeedTopBoard == NeedType.Need || (isEven && variety.NeedTopBoard == NeedType.EvenNeed) ||
(!isEven && variety.NeedTopBoard == NeedType.OddNeed))
PackLineOption.IsTop = true; PackLineOption.IsTop = true;
else else
PackLineOption.IsTop = false; PackLineOption.IsTop = false;
if (variety.NeedPackStrap == NeedType.Need || (isEven && variety.NeedPackStrap == NeedType.EvenNeed) || (!isEven && variety.NeedPackStrap == NeedType.OddNeed)) if (variety.NeedPackStrap == NeedType.Need || (isEven && variety.NeedPackStrap == NeedType.EvenNeed) ||
(!isEven && variety.NeedPackStrap == NeedType.OddNeed))
PackLineOption.IsPack = true; PackLineOption.IsPack = true;
else else
PackLineOption.IsPack = false; PackLineOption.IsPack = false;
if (variety.NeedFilmWrapping == NeedType.Need || (isEven && variety.NeedFilmWrapping == NeedType.EvenNeed) || (!isEven && variety.NeedFilmWrapping == NeedType.OddNeed)) if (variety.NeedFilmWrapping == NeedType.Need ||
(isEven && variety.NeedFilmWrapping == NeedType.EvenNeed) ||
(!isEven && variety.NeedFilmWrapping == NeedType.OddNeed))
PackLineOption.IsFilm = true; PackLineOption.IsFilm = true;
else else
PackLineOption.IsFilm = false; PackLineOption.IsFilm = false;
if (variety.NeedFilmCoating == NeedType.Need || (isEven && variety.NeedFilmCoating == NeedType.EvenNeed) || (!isEven && variety.NeedFilmCoating == NeedType.OddNeed)) if (variety.NeedFilmCoating == NeedType.Need || (isEven && variety.NeedFilmCoating == NeedType.EvenNeed) ||
(!isEven && variety.NeedFilmCoating == NeedType.OddNeed))
PackLineOption.IsLam = true; PackLineOption.IsLam = true;
else else
PackLineOption.IsLam = false; PackLineOption.IsLam = false;
@ -326,8 +367,9 @@ public class HyosungRuntime(
controlNo += 1; controlNo += 1;
tray = await trayService.PrintTrayAsync(arg, controlNo.Value, mod); tray = await trayService.PrintTrayAsync(arg, controlNo.Value, mod);
} }
await dictService.SetValue("System", "CurrentPackingTrayCode", arg); await dictService.SetValue("System", "CurrentPackingTrayCode", arg);
await hyosungPlcService.WritePrintLableOptionsAsync( variety.MasterLabelCount); await hyosungPlcService.WritePrintLableOptionsAsync(variety.MasterLabelCount);
} }
/// <summary> /// <summary>
@ -337,7 +379,7 @@ public class HyosungRuntime(
/// <param name="arg2"></param> /// <param name="arg2"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
private async Task OnPlcRequestPrintLabel(int arg1, int height) private async Task OnPlcRequestPrintLabel(int arg1, int height)
{ {
var trayCode = await dictService.GetValue("System", "CurrentPackingTrayCode"); var trayCode = await dictService.GetValue("System", "CurrentPackingTrayCode");
var tray = await trayService.GetByCode(trayCode); var tray = await trayService.GetByCode(trayCode);
@ -347,7 +389,6 @@ public class HyosungRuntime(
await trayService.UpdateHeightAsync(tray.TrayCode, height); await trayService.UpdateHeightAsync(tray.TrayCode, height);
try try
{ {
if (arg1 == 1) if (arg1 == 1)
{ {
await printer.PrintAsync(1, tray.TrayCode); await printer.PrintAsync(1, tray.TrayCode);
@ -356,19 +397,18 @@ public class HyosungRuntime(
else else
{ {
await printer.PrintAsync(2, tray.TrayCode); await printer.PrintAsync(2, tray.TrayCode);
await hyosungPlcService.WritePrintLabelResultAsync(arg1, true); await hyosungPlcService.WritePrintLabelResultAsync(arg1, true);
await varietyService.SetLastNo(variety.Id, tray.ControlNo.Value); await varietyService.SetLastNo(variety.Id, tray.ControlNo.Value);
//await hyosungWmsService.UpdateControlNo(variety, tray.ControlNo.Value); //await hyosungWmsService.UpdateControlNo(variety, tray.ControlNo.Value);
await hyosungWmsService.AddLabelResult(new LabelResult(tray, variety)); await hyosungWmsService.AddLabelResult(new LabelResult(tray, variety));
} }
logger.LogInformation($"plc request print label success"); logger.LogInformation($"plc request print label success");
} }
catch (Exception e) catch (Exception e)
{ {
await hyosungPlcService.WritePrintLabelResultAsync(arg1, false); await hyosungPlcService.WritePrintLabelResultAsync(arg1, false);
logger.LogError(e, "print label fail"); logger.LogError(e, "print label fail");
} }
} }