public ISubJournalParameterEditorViewModel CreateJournalSubParameterEditorViewModel(
     ISubJournalParameter subJournalParameter, ObservableCollection<ISharedBitViewModel> sharedBitViewModels)
 {
     ISubJournalParameterEditorViewModel journalParameterEditorViewModel = this._container.Resolve<ISubJournalParameterEditorViewModel>();
     journalParameterEditorViewModel.BitNumbersInWord = sharedBitViewModels;
     journalParameterEditorViewModel.Model = subJournalParameter;
     return journalParameterEditorViewModel;
 }
        protected override void SaveModel()
        {
            ISubJournalParameter subJournalParameter = this._journalParameter as ISubJournalParameter;

            subJournalParameter.BitNumbersInWord.Clear();
            foreach (ISharedBitViewModel sharedBitViewModel in this.BitNumbersInWord)
            {
                if ((sharedBitViewModel.Owner == this) && (sharedBitViewModel.Value))
                {
                    subJournalParameter.BitNumbersInWord.Add(sharedBitViewModel.NumberOfBit);
                }
            }
            base.SaveModel();
        }
 public SubJournalParameterEditorViewModel(ISubJournalParameter journalParameter, IFormatterEditorFactory formatterEditorFactory) : base(journalParameter)
 {
     this._formatterEditorFactory        = formatterEditorFactory;
     this.BitNumbersInWord               = new ObservableCollection <ISharedBitViewModel>();
     this.ShowFormatterParametersCommand = new RelayCommand(this.OnShowFormatterParametersExecute);
 }
Пример #4
0
        private ushort GetParameterUshortInRecord(ushort[] recordUshorts,
                                                  IJournalParameter parentJournalParameter, ISubJournalParameter childJournalParameter)
        {
            ushort   valueToFormat  = recordUshorts.Skip(parentJournalParameter.StartAddress).Take(1).ToArray()[0];
            BitArray parentBitArray = new BitArray(new[] { (int)valueToFormat });

            bool[] subParameterBools = new bool[childJournalParameter.BitNumbersInWord.Count];
            foreach (var numInWord in childJournalParameter.BitNumbersInWord)
            {
                if (parentBitArray.Count <= numInWord)
                {
                    subParameterBools[childJournalParameter.BitNumbersInWord.IndexOf(numInWord)] = false;
                }
                else
                {
                    subParameterBools[childJournalParameter.BitNumbersInWord.IndexOf(numInWord)] =
                        parentBitArray[numInWord];
                }
            }

            ushort res = (ushort)(new BitArray(subParameterBools).GetIntFromBitArray());

            return(res);
        }