public void Read <T>(IKpk12MeasuringUnit unit, IReadValue <T> value, string source, bool silent = false) { ThrowIfRegisterNull(value.Register); var register = value.Register; try { unit.Read(register); var converted = (Register <T>)register; value.Actual = converted.Value; if (silent) { return; } var message = _formatter.For(register) .With(value) .ModuleId(unit.UnitIdRegister.Value) .Response(); _logger.Info(message, source); } catch (Exception exception) { _logger.Error(string.Format("Ошибка чтения регистра '{0}' модуль '{1}'", register.Address, unit.UnitIdRegister.Value), source, exception); throw; } }
public void Write <T>(IKpk12MeasuringUnit unit, IWriteValue <T> value, string source) { ThrowIfRegisterNull(value.Register); var register = value.Register; try { ((Register <T>)register).Value = value.Expected; unit.Write(register); var message = _formatter.For(register) .With(value) .ModuleId(unit.UnitIdRegister.Value) .Request(); _logger.Info(message, source); } catch (Exception exception) { _logger.Error(string.Format("Ошибка записи регистра '{0}' модуль '{1}'", register.Address, unit.UnitIdRegister.Value), source, exception); throw; } }
public RegisterWorker(IRegisterWriter writer, IKpk12MeasuringUnit unit) { _writer = writer; _unit = unit; }
public static RegisterWorker Use(this IKpk12MeasuringUnit unit, IRegisterWriter writer) { return(new RegisterWorker(writer, unit)); }