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
{
///
/// 添加HS手动包装服务
///
///
/// 报警信息处理器
/// 纸箱称重处理器
/// 丝锭称重处理器
///
public static IServiceCollection AddHs(
this IServiceCollection services)
where TOnWarningHandler : OnWarningHandler
where TWeighBoxRequestHandler : WeighSpindleRequestHandler
where TWeighSpindleRequestHandler : WeighSpindleRequestHandler
{
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton((serviceProvider) =>
{
var configuration = serviceProvider.GetService();
var deviceConnectConfig = configuration.GetSection("Plc").Get();
return new SycModbusTcpNet(deviceConnectConfig.IP, deviceConnectConfig.Port);
});
#region 接口调试阶段先注释
//services.AddHostedService();
//services.AddHostedService();
#endregion
services.AddMediatR(cfg =>
{
cfg.RegisterServicesFromAssembly(typeof(OnWarningHandler).Assembly);
});
return services;
}
public static IServiceCollection AddScannerEventHandle(
this IServiceCollection services)
where TOnWarningHandler :class,IScannerEventHandle
{
services.AddTransient();
return services;
}
public static IServiceCollection AddBalanceEventHandle(
this IServiceCollection services)
where TOnWarningHandler : class, IBalanceEventHandle
{
services.AddTransient();
return services;
}
}