public RegistersActionWindow(IModbusRegistersAction action, ValueTypeMode mode)
 {
     InitializeComponent();
     actionView.RefreshWith(action, mode);
     actionView.OkPressed += (a) => {
         this.DialogResult = true;
     };
     actionView.CancelPressed += () => {
         this.DialogResult = false;
     };
 }
Example #2
0
 public void RefreshWith(NModbusWrapper.ValueType valueType, ushort length, ValueTypeMode mode)
 {
     lblDescription.Content = Enum.GetName(typeof(NModbusWrapper.ValueType), valueType);
     if (valueType == NModbusWrapper.ValueType.String)
     {
         lblDescription.Content = lblDescription.Content.ToString() + ", " + length.ToString() + " символов";
     }
     ValueType = valueType;
     Length    = length;
     _mode     = mode;
 }
        public void RefreshWith(IModbusRegistersAction action, ValueTypeMode mode)
        {
            _mode   = mode;
            _action = action;

            transportView.RefreshWith(action.Manager.Transport);

            if (mode == ValueTypeMode.All)
            {
                valueTypeView.RefreshWith(action.ModbusValueType, action.WriteReadLength, mode);
            }
            else if (mode == ValueTypeMode.String && action.ModbusValueType != NModbusWrapper.ValueType.String)
            {
                valueTypeView.RefreshWith(NModbusWrapper.ValueType.String, action.WriteReadLength, mode);
            }
            else if (mode == ValueTypeMode.Numeric && action.ModbusValueType == NModbusWrapper.ValueType.String)
            {
                valueTypeView.RefreshWith(NModbusWrapper.ValueType.Double, action.WriteReadLength, mode);
            }
            else
            {
                valueTypeView.RefreshWith(action.ModbusValueType, action.WriteReadLength, mode);
            }

            tbAddress.Text = action.SlaveAddress.ToString();
            tbCoil.Text    = action.RegisterAddress.ToString();

            _selectedRegistersMode = action.RegistersMode;
            if (_selectedRegistersMode == RegistersMode.Holding)
            {
                btRegistersModeHolding.Selected = true;
            }
            else
            {
                btRegistersModeInput.Selected = true;
            }

            ReInitializeMaxAndMin();

            if (valueTypeView.ValueType != NModbusWrapper.ValueType.String &&
                _mode != ValueTypeMode.String &&
                action.ValueType is FloatValueType floatValueType)
            {
                tbMax.Text = floatValueType.Max.ToString();
                tbMin.Text = floatValueType.Min.ToString();
            }
        }
Example #4
0
        public static void Show(Grid parent, NModbusWrapper.ValueType valueType, ushort length, Action <NModbusWrapper.ValueType, ushort> callback, ValueTypeMode mode)
        {
            var control = new ModbusValueTypeSelectionView(length, valueType, mode);
            var dialog  = new DialogView(control);

            control.OkPressed += () => {
                callback?.Invoke(control.GetValueType(), control.GetValueLength());
                dialog.Close();
            };
            control.SetValueType(valueType);
            control.SetValueLength(length);
            control.CancelPressed += () => dialog.Close();
            dialog.Show(parent);
        }
Example #5
0
        public ModbusValueTypeSelectionView(ushort length, NModbusWrapper.ValueType valueType, ValueTypeMode mode)
        {
            InitializeComponent();

            lvItems.SelectionChanged += (o, e) => {
                btOk.IsEnabled = lvItems.SelectedItem != null;
                if (lvItems.SelectedItem != null && ((ItemView)lvItems.SelectedItem).Tag.ToString().Equals("String"))
                {
                    spStringLength.Visibility = Visibility.Visible;
                }
                else
                {
                    spStringLength.Visibility = Visibility.Collapsed;
                }
            };

            if (mode == ValueTypeMode.String)
            {
                lvItems.GetItems().Where(x => ((ItemView)x).Tag.ToString() != "String").ToList()
                .ForEach(x => ((ItemView)x).IsEnabled = false);
            }
            else if (mode == ValueTypeMode.Numeric)
            {
                lvItems.GetItems().Where(x => ((ItemView)x).Tag.ToString() == "String").ToList()
                .ForEach(x => ((ItemView)x).IsEnabled = false);
            }

            tbLength.Validation = EntryViewValidation.UShortValidation(min: 1);

            btCancel.Click += (o, e) => CancelPressed?.Invoke();
            btOk.Click     += (o, e) => OkPressed?.Invoke();
        }