Example #1
0
        public void Show_assortment()
        {
            Pager <AssortmentDto> data = null;

            FactoryHolder.WithService(s => { data = s.ShowAssortment(0); });
            var view = new ShowAssortment(data);
        }
        private void LoadFiles(bool compressed)
        {
            if (IsProgramRunning())
            {
                return;
            }

            var fileNames = SelectFiles();

            if (fileNames.IsEmpty())
            {
                return;
            }
            GeneralConfigurations.Get().Directory = Path.GetDirectoryName(fileNames[0]) + @"\";
            TbSavePath.Text = GeneralConfigurations.Get().Directory;
            var factory  = FactoryHolder.Get();
            var producer = factory.NewProducer(fileNames, compressed);

            Adapter = NewAdapterBinding();
            var consumer = factory.NewConsumer(producer, Adapter, fileNames.Length);

            consumer.SourceInvalid       += ConsumerOnSourceInvalid;
            consumer.Update              += ConsumerOnUpdate;
            consumer.ProducerEmpty       += OnConsumerStopped;
            consumer.TargetAmountReached += OnConsumerStopped;
            PbLoading.Maximum             = fileNames.Length;
            PbLoading.Value               = 0;
            Scheduler = new Scheduler(producer, consumer);
            SetButtonRunning();
            Scheduler.Start();
        }
        private void StartSample_OnClick(object sender, RoutedEventArgs e)
        {
            if (IsProgramRunning())
            {
                return;
            }
            var numberDialog = new NumberDialog();

            if (!numberDialog.ShowDialog().GetValueOrDefault(false))
            {
                return;
            }
            var total = numberDialog.Number;

            if (total <= 0)
            {
                MessageBox.Show("plz input the number of records to be sampled.");
                return;
            }

            var factory = FactoryHolder.Get();

            IProducerV2 <SampleRecord> producer;

            if (!factory.TryNewSampleProducer(out producer, total))
            {
                SwitchButton.State = false;
                MessageBox.Show("Sampler can't be initialized");
                return;
            }
            producer.ProductionFailed += exception => {
                Dispatcher.InvokeAsync(() => {
                    SwitchButton.State = false;
                    MessageBox.Show("Unable to sample data. Exception occured:\n\n" + exception.Message);
                });
            };
            //            producer.HitTarget += () => { Dispatcher.InvokeAsync(() => { SwitchButton.State = false; }); };
            PbLoading.Maximum = total;
            Adapter           = NewAdapterBinding();
            var threadNum = GeneralConfigurations.Get().ThreadNum;
            var workers   = new List <SpecialSampleWriter>(threadNum);

            for (var i = 0; i < threadNum; i++)
            {
                workers.Add(new SpecialSampleWriter(GeneralConfigurations.Get().Directory, "[Binary]"));
            }
            var consumer = new DataSerializer(producer.BlockingQueue, workers, total);

            consumer.SourceInvalid       += ConsumerOnSourceInvalid;
            consumer.Update              += ConsumerOnUpdate;
            consumer.TargetAmountReached += () => { Dispatcher.InvokeAsync(() => { SwitchButton.State = false; }); };
            CkCaptureSample.IsChecked     = true;
            Scheduler = new Scheduler(producer, consumer);
            SetButtonRunning();
            Scheduler.Start();
        }
        private DisplayAdapterV2 NewAdapter()
        {
            if (GeneralConfigurations.Get().ViewPhase)
            {
                return(FactoryHolder.Get()
                       .NewPhaseAdapter(new CanvasView(ScopeCanvas), new HorizontalAxisView(HorAxisCanvas),
                                        new VerticalAxisView(VerAxisCanvas), TbXCoordinate, TbDistance));
            }
            double?lockDipFreq;

            if (CorrectorConfigs.LockDip)
            {
                lockDipFreq = CorrectorConfigs.LockDipFreqInMHz;
            }
            else
            {
                lockDipFreq = null;
            }
            return(FactoryHolder.Get()
                   .NewSpectrumAdapter(new CanvasView(ScopeCanvas), new HorizontalAxisView(HorAxisCanvas),
                                       new VerticalAxisView(VerAxisCanvas), TbXCoordinate, TbDistance,
                                       lockDipFreq, MiscellaneousConfigurations.Get().LockDipScanRadiusInMhz));
        }
        private void DebugCmd_OnClick(object sender, RoutedEventArgs e)
        {
            if (IsProgramRunning())
            {
                return;
            }
            var fileNames = SelectFiles();

            if (fileNames.IsEmpty())
            {
                return;
            }

            GeneralConfigurations.Get().Directory = Path.GetDirectoryName(fileNames[0]) + @"\";
            TbSavePath.Text = GeneralConfigurations.Get().Directory;
            var factory  = FactoryHolder.Get();
            var producer = factory.NewProducer(fileNames, true);

            Adapter = NewAdapterBinding();

            var checkers = new List <PulseChecker>();

            for (var i = 0; i < 4; i++)
            {
                checkers.Add(new PulseChecker(factory.NewCrestFinder(), factory.NewSlicer(),
                                              factory.NewPulsePreprocessor(), factory.NewCorrector()));
            }
            var consumer = new PulseByPulseChecker(producer.BlockingQueue, checkers, fileNames.Length);

            consumer.Update  += ConsumerOnUpdate;
            PbLoading.Maximum = fileNames.Length;
            PbLoading.Value   = 0;
            Scheduler         = new Scheduler(producer, consumer);
            Scheduler.Start();
            SetButtonRunning();
        }
        private void TurnOn()
        {
            GC.Collect();

            if (_ultraFastMode)
            {
                var textBlock = new TextBlock {
                    Text       = "Happy 2016!",
                    Foreground = new SolidColorBrush(Colors.Wheat),
                    FontSize   = 30
                };
                var canvasView = new CanvasView(ScopeCanvas);
                Canvas.SetTop(textBlock, canvasView.ScopeHeight / 2);
                Canvas.SetLeft(textBlock, canvasView.ScopeWidth / 3);
                canvasView.Canvas.Children.Add(textBlock);
                SwitchButton.State = false;
                return;
            }

            var factory = FactoryHolder.Get();
            IProducerV2 <SampleRecord> producer;

            if (!factory.TryNewSampleProducer(out producer))
            {
                SwitchButton.State = false;
                MessageBox.Show("Sampler can't be initialized. Maybe another instance is running.");
                return;
            }
            producer.ProductionFailed += exception => {
                Dispatcher.InvokeAsync(() => {
                    SwitchButton.State = false;
                    MessageBox.Show("Unable to sample data. Exceptions occured, please read carefully:\n\n" +
                                    exception.Message);
                });
            };
            Adapter = NewAdapterBinding();
            int?targetCnt;
            var configs = GeneralConfigurations.Get();

            if (configs.OperationMode == OperationMode.Manual)
            {
                targetCnt = null;
            }
            else
            {
                targetCnt = configs.TargetCnt;
            }
            var consumer = factory.NewConsumer(producer, Adapter, targetCnt);

            try {
                Adapter.StartFreqInMHz = Convert.ToDouble(TbStartFreq.Text); // todo move to constructor
                Adapter.EndFreqInMHz   = Convert.ToDouble(TbEndFreq.Text);
            } catch (Exception) {
            }
            Scheduler = new Scheduler(producer, consumer);
            consumer.SourceInvalid += ConsumerOnSourceInvalid;
            consumer.Update        += ConsumerOnUpdate;
            switch (configs.OperationMode)
            {
            case OperationMode.Manual:
                PbLoading.IsIndeterminate = true;

                break;

            case OperationMode.Single:
                consumer.TargetAmountReached += OnConsumerStopped;
                PbLoading.IsIndeterminate     = false;
                PbLoading.Maximum             = targetCnt.Value;
                break;

            case OperationMode.Loop:
                PbLoading.IsIndeterminate     = false;
                PbLoading.Maximum             = targetCnt.Value;
                consumer.TargetAmountReached += () => {
                    OnConsumerStopped();

                    Dispatcher.Invoke(() => { SwitchButton.State = true; });
                };
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            PrepareStatsWinndow();
            Scheduler.Start();
        }