syc_zhaoqianyan 66fc5b3b19 1.扫码枪实现
2.体重秤实现
3.打印机实现
2025-07-01 14:20:07 +08:00

75 lines
3.0 KiB
C#

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Seyounth.Auto.Hs.Runtime.Balances;
using Seyounth.Auto.Hs.Runtime.Handlers;
using Seyounth.Auto.Hs.Runtime.Plc;
using Seyounth.Auto.Hs.Runtime.Printer;
using Seyounth.Auto.Hs.Runtime.Scanner;
using Seyounth.Auto.Plc.Business;
using Seyounth.Extensions.Plc;
namespace Seyounth.Auto.Hs.Runtime;
public static class HsExtensions
{
/// <summary>
/// 添加HS手动包装服务
/// </summary>
/// <param name="services"></param>
/// <typeparam name="TOnWarningHandler">报警信息处理器</typeparam>
/// <typeparam name="TWeighBoxRequestHandler">纸箱称重处理器</typeparam>
/// <typeparam name="TWeighSpindleRequestHandler">丝锭称重处理器</typeparam>
/// <returns></returns>
public static IServiceCollection AddHs<TOnWarningHandler, TWeighBoxRequestHandler, TWeighSpindleRequestHandler>(
this IServiceCollection services)
where TOnWarningHandler : OnWarningHandler
where TWeighBoxRequestHandler : WeighSpindleRequestHandler
where TWeighSpindleRequestHandler : WeighSpindleRequestHandler
{
services.AddSingleton<IBalanceService, BalanceService>();
services.AddSingleton<IPlcService, PlcService>();
services.AddSingleton<IPrinterService, PrinterService>();
services.AddSingleton<IScannerService, ScannerService>();
services.AddSingleton<IHsAutoRuntime, HsAutoRuntime>();
services.AddSingleton<IScanner, YarnScanner>();
services.AddSingleton<IScanner, BoxScanner>();
services.AddSingleton<IBalance, BoxBalance>();
services.AddSingleton<IBalance, SilkBalance>();
services.AddSingleton<IPrinter, BoxPrinter>();
services.AddSingleton<IPrinter, SilkPrinter>();
services.AddSingleton<IPlc,SycModbusTcpNet>((serviceProvider) =>
{
var configuration = serviceProvider.GetService<IConfiguration>();
var deviceConnectConfig = configuration.GetSection("Plc").Get<DeviceConnectConfig>();
return new SycModbusTcpNet(deviceConnectConfig.IP, deviceConnectConfig.Port);
});
#region
//services.AddHostedService<PlcBackgroundService>();
//services.AddHostedService<HsBackgroundService>();
#endregion
services.AddMediatR(cfg =>
{
cfg.RegisterServicesFromAssembly(typeof(OnWarningHandler).Assembly);
});
return services;
}
public static IServiceCollection AddScannerEventHandle<TOnWarningHandler>(
this IServiceCollection services)
where TOnWarningHandler :class,IScannerEventHandle
{
services.AddTransient<IScannerEventHandle,TOnWarningHandler>();
return services;
}
public static IServiceCollection AddBalanceEventHandle<TOnWarningHandler>(
this IServiceCollection services)
where TOnWarningHandler : class, IBalanceEventHandle
{
services.AddTransient<IBalanceEventHandle, TOnWarningHandler>();
return services;
}
}