| 1234567891011121314151617181920212223242526272829303132333435 |
- namespace SHJX.Service.Control.PortProduction.PortProducerImpl
- {
- public class WritePortProducer : IPortProducer
- {
- private static readonly ConcurrentDictionary<ArgType, IPortArg> PortArgs = new();
- public WritePortProducer(OptCommand command) : base(command) { }
- protected override IPortArg GetPortArg(ArgType type)
- {
- if (PortArgs.TryGetValue(type, out IPortArg port))
- {
- return port;
- }
- IPortArg portArg = type switch
- {
- ArgType.Move => new MovePortArg(),
- ArgType.Stop => new StopPortArg(),
- ArgType.GoBack => new GoBackPortArg(),
- ArgType.Speed => new SpeedPortArg(),
- ArgType.AcSpeed => new AcSpeedPortArg(),
- ArgType.DeSpeed => new DeSpeedPortArg(),
- ArgType.Open => new OpenPortArg(),
- ArgType.Close => new ClosePortArg(),
- ArgType.Temp => new TemperaturePortArg(),
- ArgType.Pid => new PidPortArg(),
- ArgType.Ratio => new RatioPortArg(),
- ArgType.Integral => new IntegralPortArg(),
- ArgType.Differential => new DifferentialPortArg(),
- ArgType.IntegralDeafult => new IntegralDeafultPortArg(),
- _ => throw new ArgumentException("未找到对应的枚举!")
- };
- PortArgs.TryAdd(type, portArg);
- return portArg;
- }
- }
- }
|