public void UploadSettingsAsync(TargetMeasurementType type, RegulationSettings settings) { Task.Factory.StartNew(() => { UploadSetting(type, MsregEditSettingChoices.Nastawa, settings.TargetValue); UploadSetting(type, MsregEditSettingChoices.Histereza, settings.Histeresis); UploadSetting(type, MsregEditSettingChoices.OdstepPrzelaczen, settings.WaitTime); UploadSetting(type, MsregEditSettingChoices.PoziomAlarmowy, settings.AlarmOffset); UploadSetting(type, MsregEditSettingChoices.NormallyClosed, settings.NormallyClosed ? 0.1 : 0); SendCommandFast(type == TargetMeasurementType.Temperature ? MsregInputCommand.TemperatureSettings : MsregInputCommand.HumiditySettings); }); }
/*void TryUploadSetting(TargetMeasurementType type, MsregEditSettingChoices setting, double value) { lock (commandSendLock) { for (int i = 0; i < 2; i++) { if (UploadSetting(type, setting, value)) return; } } }*/ public bool UploadSetting(TargetMeasurementType type, MsregEditSettingChoices setting, double value) { lock (_commandSendLock) { if (!TryToSyncSignal()) return false; var outStr = string.Format(ParseCultureInfo, "e{0}{1}{2:000.0}f", (char) type, (char) setting, value); _target.Write(outStr); AppLog.Write("Wysłana zmiana ustawienia: " + outStr, LogEntryType.Debug, LogEntrySource.MsregDevice, TargetPort); for (var i = 0; i < 20; i++) { string result; if (_ackReplies.TryRemove(MsregOutputCommand.EditSettingReply, out result)) { if (result.StartsWith("OK")) return true; AppLog.Write("Błąd podczas zmiany ustawienia: " + result, LogEntryType.Error, LogEntrySource.MsregDevice, TargetPort); return false; } Thread.Sleep(10); } return false; } }