增加入口自动扫码功能
This commit is contained in:
parent
5108f66352
commit
d61ad53d28
@ -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]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
@ -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)
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user