コード例 #1
0
        public int GetReadyPointAddress()
        {
            IJournalParameter val = this.OscilloscopeTags
                                    .First((tag => tag.TagKey == OscilloscopeKeys.READY)).RelatedJournalParameter;

            return(val.StartAddress);
        }
コード例 #2
0
        public ushort GetReadyPointNumberOfPoints()
        {
            IJournalParameter val = this.OscilloscopeTags
                                    .First((tag => tag.TagKey == OscilloscopeKeys.READY)).RelatedJournalParameter;

            return(val.NumberOfPoints);
        }
コード例 #3
0
        public async Task <List <IFormattedValue> > GetValuesForRecord(IJournalParameter parameter,
                                                                       ushort[] recordUshorts, DeviceContext deviceContext)
        {
            var formattedValues = new List <IFormattedValue>();

            switch (parameter)
            {
            case ComplexJournalParameter complexJournalParameter:
                foreach (ISubJournalParameter childJournalParameter in complexJournalParameter
                         .ChildJournalParameters)
                {
                    formattedValues.Add(await _formattingService.FormatValueAsync(
                                            childJournalParameter.UshortsFormatter,
                                            new[]
                    {
                        GetParameterUshortInRecord(recordUshorts, complexJournalParameter,
                                                   childJournalParameter)
                    }, new FormattingContext(null, deviceContext, false)));
                }

                break;

            case DependentJournalParameter dependentJournalParameter:
                ushort[] dependentValuesToFormat = recordUshorts.Skip(dependentJournalParameter.StartAddress)
                                                   .Take(dependentJournalParameter.NumberOfPoints).ToArray();
                foreach (IJournalCondition journalParameterDependancyCondition in dependentJournalParameter
                         .JournalParameterDependancyConditions)
                {
                    if (GetConditionResult(recordUshorts, journalParameterDependancyCondition,
                                           dependentJournalParameter))
                    {
                        //Task loadingTask = (journalParameterDependancyCondition.UshortsFormatter as ILoadable)?.Load();
                        //if (loadingTask != null)
                        //    await loadingTask;
                        formattedValues.Add(await _formattingService.FormatValueAsync(
                                                journalParameterDependancyCondition.UshortsFormatter, dependentValuesToFormat, new FormattingContext(null, deviceContext, false)));
                    }
                }

                break;

            case JournalParameter journalParameter:
                ushort[] valuesToFormat = recordUshorts.Skip(journalParameter.StartAddress)
                                          .Take(journalParameter.NumberOfPoints).ToArray();

                formattedValues.Add(await _formattingService.FormatValueAsync(journalParameter.UshortsFormatter,
                                                                              valuesToFormat, new FormattingContext(null, deviceContext, false)));
                break;
            }

            return(formattedValues);
        }
コード例 #4
0
        private List <IJournalParameter> GetAllJournalParameters()
        {
            List <IJournalParameter> allJournalParameters = new List <IJournalParameter>();

            foreach (IJournalParameterEditorViewModel journalParameterEditorViewModel in this.AllJournalParameterEditorViewModels)
            {
                IJournalParameter journalParameter = journalParameterEditorViewModel.Model as IJournalParameter;
                allJournalParameters.Add(journalParameter);
                if (journalParameter is IComplexJournalParameter)
                {
                    allJournalParameters.AddRange((journalParameter as IComplexJournalParameter).ChildJournalParameters);
                }
            }
            return(allJournalParameters);
        }
コード例 #5
0
        protected virtual void SetModel(object value)
        {
            IJournalParameter journalParameter = value as IJournalParameter;

            if (journalParameter == null)
            {
                return;
            }
            this._journalParameter = journalParameter;

            this.Address              = journalParameter.StartAddress.ToString();
            this.Header               = journalParameter.Name;
            this.NumberOfPoints       = journalParameter.NumberOfPoints.ToString();
            this.MeasureUnit          = this._journalParameter.MeasureUnit;
            this.IsMeasureUnitEnabled = this._journalParameter.IsMeasureUnitEnabled;
            this.RaisePropertyChanged(nameof(this.FormatterString));
            FormatterParametersViewModel = StaticContainer.Container.Resolve <IFormatterViewModelFactory>()
                                           .CreateFormatterViewModel(_journalParameter.UshortsFormatter);
        }
コード例 #6
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);
        }
コード例 #7
0
 public JournalParameterEditorViewModel(IJournalParameter journalParameter)
 {
     this._journalParameter = journalParameter;
 }
コード例 #8
0
 public IJournalParameterEditorViewModel CreateJournalParameterEditorViewModel(IJournalParameter journalParameter)
 {
     IJournalParameterEditorViewModel journalParameterEditorViewModel = this._container.Resolve<IJournalParameterEditorViewModel>();
     journalParameterEditorViewModel.Model = journalParameter;
     return journalParameterEditorViewModel;
 }
コード例 #9
0
        private static (bool, int) CheckRecordByParameter(IJournalRecord journalRecord, IJournalParameter journalParameter, int recordTemplateCounter)
        {
            if (journalParameter is IComplexJournalParameter complexJournalParameter)
            {
                foreach (var childJournalParameter in complexJournalParameter.ChildJournalParameters)
                {
                    var res = CheckRecordByParameter(journalRecord, childJournalParameter, recordTemplateCounter);
                    if (!res.Item1)
                    {
                        return(false, res.Item2);
                    }
                    recordTemplateCounter = res.Item2;
                }
                return(true, recordTemplateCounter);
            }

            if (journalRecord.FormattedValues.Count <= recordTemplateCounter)
            {
                return(false, ++recordTemplateCounter);
            }
            else
            {
                return(true, ++recordTemplateCounter);
            }
        }