增加第三台打印机

This commit is contained in:
anerx 2025-04-14 16:09:10 +08:00
parent 1cbd295691
commit 2347c07d10
9 changed files with 81 additions and 61 deletions

View File

@ -219,6 +219,8 @@
Binding="{Binding NetWeight}" />
<DataGridTextColumn Header="控制号"
Binding="{Binding LastNo}" />
<DataGridTextColumn Header="主标签颜色"
Binding="{Binding LabelColor}" />
<DataGridTemplateColumn Header="操作">
<DataGridTemplateColumn.CellTemplate>

View File

@ -106,10 +106,10 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
await _writer.WriteShortsAsync(12120, ls.ToArray());
}
public async Task WritePrintLableOptionsAsync(int side, int slave)
public async Task WritePrintLabelOptionsAsync(int master, int slave, int color)
{
short masterCount = 0;
switch (side)
switch (master)
{
case 0:
masterCount = 1;
@ -148,12 +148,19 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
break;
}
await _writer.WriteShortsAsync(13050, [1, 1, 1, 2]);
if (color == 1)
await _writer.WriteShortsAsync(13050, [1, 1, 1, 2]);
else
{
await _writer.WriteShortsAsync(13056, 2);
//todo:此处是写副标签的,后续测试无问题则需要修改此处
await _writer.WriteShortsAsync(13052, 1);
}
}
public async Task WritePrintLabelResultAsync(int index, bool result)
{
var address = index == 1 ? 13060 : 13061;
var address = 13059 + index;
await _writer.WriteShortsAsync(address, (short)(result ? 1 : 2));
}
@ -375,7 +382,7 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
private async Task QueryPrintLabel()
{
var requestPrintLabel = await _reader.ReadShortsAsync(13010, 3);
var requestPrintLabel = await _reader.ReadShortsAsync(13010, 4);
if (requestPrintLabel[0] == 1)
{
await _writer.WriteShortsAsync(13010, 0);
@ -389,5 +396,12 @@ public class HyosungPlcService(ILogger<HyosungPlcService> logger) : IHyosungPlcS
await _writer.WriteShortsAsync(13012, 0);
OnRequestPrintLabel?.Invoke(2, requestPrintLabel[2]);
}
if (requestPrintLabel[3] == 1)
{
await _writer.WriteShortsAsync(13013, 0);
await _writer.WriteShortsAsync(13012, 0);
OnRequestPrintLabel?.Invoke(3, requestPrintLabel[2]);
}
}
}

View File

@ -58,11 +58,11 @@ public interface IHyosungPlcService
Task WritePackLineOptionAsync(PackLineOption option);
Task WritePrintLableOptionsAsync(int side,int slaveCount);
Task WritePrintLabelOptionsAsync(int masterCount, int slaveCount, int color);
Task WritePrintLabelResultAsync(int index, bool result);
Task WritePrintLabelResultAsync(int index, bool result);
Task WriteScanEntryResultAsync(int index, bool result);
/// <summary>
@ -101,6 +101,6 @@ public interface IHyosungPlcService
event Func<int, int, Task> OnRequestPrintLabel;
event Func<string, Task> OnRequestGetPrintLableOption;
event Func<int, Task> OnRequestScanEntry;
}

View File

@ -15,55 +15,58 @@ public class HyosungPrinter(
IHyosungWmsService hyosungWmsService,
IOptions<PrintTemp> options) : IHyosungPrinter
{
private readonly AveryPrinter _masterPrinter = new("192.168.3.61", 9100);
private readonly AveryPrinter _slavePrinter = new("192.168.3.60", 9100);
private readonly Dictionary<int, AveryPrinter> _printers = new Dictionary<int, AveryPrinter>()
{
{ 1001, new AveryPrinter("192.168.3.61", 9100) },
{ 2, new AveryPrinter("192.168.3.62", 9100) },
{ 1, new AveryPrinter("192.168.3.60", 9100) }
};
public async Task StartAsync(CancellationToken token)
{
List<Task> ls = new List<Task>();
ls.Add(_masterPrinter.ConnectAsync(token));
ls.Add(_slavePrinter.ConnectAsync(token));
foreach (var (_, printer) in _printers)
{
ls.Add(printer.ConnectAsync(token));
}
await Task.WhenAll(ls);
logger.LogInformation("printer connected");
}
public async Task StopAsync(CancellationToken token)
{
await _masterPrinter.CloseAsync(token);
await _slavePrinter.CloseAsync(token);
foreach (var (_, printer) in _printers)
{
printer.CloseAsync(token);
}
logger.LogInformation("printer disconnected");
}
public async Task PrintAsync(int index, string trayCode)
public async Task PrintMasterLabelAsync(int color, string trayCode)
{
var tray = await trayService.GetByCode(trayCode);
if (index == 1)
{
await PrintLabel1Async(tray);
}
else
{
await PrintLabel2Async(tray);
}
var content = await GetMasterLabelContent(tray);
await _printers[color].CleanContextAsync();
await _printers[color].SendContentAsync(content);
await _printers[color].PrintAsync();
}
private async Task PrintLabel1Async(Tray tray)
public async Task PrintSubLabelAsync(string trayCode)
{
await _masterPrinter.CleanContextAsync();
var content = await GetPrint1Content(tray);
await _masterPrinter.SendContentAsync(content);
await _masterPrinter.PrintAsync();
var tray = await trayService.GetByCode(trayCode);
var content = await GetSubLabelContentAsync(tray);
await _printers[1001].CleanContextAsync();
await _printers[1001].SendContentAsync(content);
await _printers[1001].PrintAsync();
}
private async Task PrintLabel2Async(Tray tray)
{
await _slavePrinter.CleanContextAsync();
var content = await GetPrint2Content(tray);
await _slavePrinter.SendContentAsync(content);
await _slavePrinter.PrintAsync();
}
private async Task<string> GetPrint1Content(Tray tray)
private async Task<string> GetSubLabelContentAsync(Tray tray)
{
var variety = await varietyService.GetById(tray.VarietyId);
var yarns = await yarnService.GetYarnsByTrayIdAsync(tray.Id);
@ -100,7 +103,7 @@ public class HyosungPrinter(
return temp;
}
private async Task<string> GetPrint2Content(Tray tray)
private async Task<string> GetMasterLabelContent(Tray tray)
{
var variety = await varietyService.GetById(tray.VarietyId);
@ -128,6 +131,7 @@ public class HyosungPrinter(
{
content = content.Replace(key, value);
}
logger.LogInformation($"print content: {content}");
return content;
}

View File

@ -6,10 +6,9 @@ public interface IHyosungPrinter
Task StopAsync(CancellationToken token);
/// <summary>
/// 打印指定垛的标签
/// </summary>
/// <param name="trayCode"></param>
/// <returns></returns>
Task PrintAsync(int index,string trayCode);
Task PrintMasterLabelAsync(int color, string trayCode);
Task PrintSubLabelAsync(string trayCode);
}

View File

@ -84,6 +84,9 @@ public class VarietyEntity
[SugarColumn(ColumnDescription = "副标签数量")]
public int SubLabelCount { get; set; }
[SugarColumn(ColumnDescription = "标签颜色 1=红色 2=黑色")]
public int LabelColor { get; set; }
[SugarColumn(IsNullable = true)] public int? LastNo { get; set; }
[SugarColumn(IsNullable = true)] public double? NetWeight { get; set; }

View File

@ -70,6 +70,8 @@ public class Variety
public double? GrossWeight { get; set; }
public int LabelColor { get; set; }
public static Variety Create(VarietyEntity entity, List<PalletEntity> pallets)
{
var variety = new Variety()
@ -101,7 +103,8 @@ public class Variety
HasBox = entity.HasBox,
LastNo = entity.LastNo,
NetWeight = entity.NetWeight,
GrossWeight = entity.GrossWeight
GrossWeight = entity.GrossWeight,
LabelColor = entity.LabelColor,
};
if (entity.PaperTrayId != null && entity.PaperTrayId != 0)
variety.PaperTray = Pallet.FromEntity(pallets.First(x => x.Id == entity.PaperTrayId));
@ -141,7 +144,8 @@ public class Variety
HasBox = HasBox,
LastNo = LastNo,
NetWeight = NetWeight,
GrossWeight = GrossWeight
GrossWeight = GrossWeight,
LabelColor = LabelColor,
};
return entity;
}

View File

@ -375,7 +375,8 @@ public class HyosungRuntime(
var mod = await hyosungWmsService.GetItemInfoByItemCode(variety.Code);
_ = await trayService.PrintTrayAsync(arg, mod, variety);
await dictService.SetValue("System", "CurrentPackingTrayCode", arg);
await hyosungPlcService.WritePrintLableOptionsAsync(variety.MasterLabelCount, variety.SubLabelCount);
await hyosungPlcService.WritePrintLabelOptionsAsync(variety.MasterLabelCount, variety.SubLabelCount,
variety.LabelColor);
logger.LogInformation("request print option succeed");
}
catch (Exception e)
@ -403,19 +404,16 @@ public class HyosungRuntime(
{
if (arg1 == 1)
{
await printer.PrintAsync(1, tray.TrayCode);
await hyosungPlcService.WritePrintLabelResultAsync(arg1, true);
await printer.PrintSubLabelAsync(tray.TrayCode);
}
else
{
await printer.PrintAsync(2, tray.TrayCode);
await hyosungPlcService.WritePrintLabelResultAsync(arg1, true);
//var version = await hyosungWmsService.GetItemInfoByItemCode(variety.Code);
// await varietyService.SetLastNo(variety.Id, tray.ControlNo.Value);
//await hyosungWmsService.UpdateControlNo(variety, tray.ControlNo.Value);
// await hyosungWmsService.AddLabelResult(new LabelResult(tray, variety));
await printer.PrintMasterLabelAsync(arg1 - 1, tray.TrayCode);
// await hyosungWmsService.AddLabelResult(new LabelResult(tray, variety));
}
await hyosungPlcService.WritePrintLabelResultAsync(arg1, true);
logger.LogInformation($"plc request print label success");
}
catch (Exception e)

View File

@ -1,8 +1,4 @@
using System.Windows;
using Seyounth.Hyosung.Data.Models;
using Seyounth.Hyosung.Data.Services;
using Seyounth.Hyosung.Runtime;
using Seyounth.Hyosung.ViewModels;
using Seyounth.Hyosung.ViewModels;
using Seyounth.Hyosung.Views.Pages;
namespace Seyounth.Hyosung.Views;