示例#1
0
        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);
            });
        }
示例#2
0
        /*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;
            }
        }