예제 #1
0
        public MainForm()
        {
            InitializeComponent();
            var options = new ConfigurationOptions
            {
                ConnectTimeout = 5000,
                SyncTimeout = 2000,
                KeepAlive = 60,
                EndPoints =
                {
                    {Settings.Default.RedisHost, Settings.Default.RedisPort}
                }
            };

            _redis = ConnectionMultiplexer.Connect(options);
            var retries = 0;
            while (!_redis.IsConnected)
            {
                var config = _redis.Configuration;
                _redis.Dispose();
                if (retries > 10)
                {
                    MessageBox.Show(string.Format("Could not connect to the Redis server with configuration: {0}",
                        config));
                    Application.Exit();
                }

                _redis = ConnectionMultiplexer.Connect(options, Console.Out);
                retries++;

            }
            _red = new LightControlSet(button_RedOn, button_RedOff, button_RedFlash, textBox_RedOnDuty, textBox_RedOffDuty, textBox_RedOffset, textBox_RedPower, button_RedApply);
            _green = new LightControlSet(button_GreenOn, button_GreenOff, button_GreenFlash, textBox_GreenOnDuty, textBox_GreenOffDuty, textBox_GreenOffset, textBox_GreenPower, button_GreenApply);
            _blueYellow = new LightControlSet(button_BlueOn, button_BlueOff, button_BlueFlash, textBox_BlueOnDuty, textBox_BlueOffDuty, textBox_BlueOffset, textBox_BluePower, button_BlueApply);
        }
예제 #2
0
        private void UpdateLightStatus(LightControlSet controls, LightStatus updatedStatus, LightStatus previousStatus)
        {
            if (previousStatus.State != updatedStatus.State)
            {
                controls.SetState(updatedStatus.State);
            }

            var change = false;
            if (previousStatus.OffDuty != updatedStatus.OffDuty)
            {
                controls.OffDutyValue.Invoke((Action)(() =>
                {
                    controls.OffDutyValue.Text = updatedStatus.OffDuty.ToString(CultureInfo.InvariantCulture);
                }));
                change = true;
            }

            if (previousStatus.OnDuty != updatedStatus.OnDuty)
            {
                controls.OffDutyValue.Invoke((Action)(() =>
                {
                    controls.OnDutyValue.Text = updatedStatus.OnDuty.ToString(CultureInfo.InvariantCulture);
                }));
                change = true;
            }

            if (previousStatus.Offset != updatedStatus.Offset)
            {
                controls.OffDutyValue.Invoke((Action)(() =>
                {
                    controls.OffsetValue.Text = updatedStatus.Offset.ToString(CultureInfo.InvariantCulture);
                }));
                change = true;
            }

            if (previousStatus.Power != updatedStatus.Power)
            {
                controls.OffDutyValue.Invoke((Action)(() =>
                {
                    controls.PowerValue.Text = updatedStatus.Power.ToString(CultureInfo.InvariantCulture);
                }));
                change = true;
            }

            if (change)
            {
                controls.OffDutyValue.Invoke((Action) (() =>
                {
                    controls.ApplyButton.PerformClick();
                    button_Sync.PerformClick();
                }));
            }
        }
예제 #3
0
 private LightStatus ReadFormLightStatus(LightControlSet controls)
 {
     return new LightStatus
     {
         State = controls.GetState(),
         Power = byte.Parse(controls.PowerValue.Text.EmptyOrNullAs("0")),
         OffDuty = byte.Parse(controls.OffDutyValue.Text.EmptyOrNullAs("0")),
         OnDuty = byte.Parse(controls.OnDutyValue.Text.EmptyOrNullAs("0")),
         Offset = byte.Parse(controls.OffsetValue.Text.EmptyOrNullAs("0"))
     };
 }