コード例 #1
0
        public ImageViewModel(
            GrabService grabService,
            ZoomService zoomService,
            InspectService inspectService,
            StateStore stateStore,
            CoreConfig coreConfig,
            CancellationToken token)
        {
            StateStore  = stateStore;
            _coreConfig = coreConfig;

            SubResults = new ObservableCollection <SubResultWrapper>();
            BindingOperations.EnableCollectionSynchronization(SubResults, new object());

            grabService.ImageGrabbed += ImageGrabbed;

            ZoomService = zoomService;

            ZoomFitCommand = new DelegateCommand(ZoomFit);
            ZoomInCommand  = new DelegateCommand(ZoomIn);
            ZoomOutCommand = new DelegateCommand(ZoomOut);

            inspectService.Inspected += Inspected;

            _pipeLine = new SinglePipeLine <GrabInfo>(info => DrawImage(info), -1, true);
            _pipeLine.Run(token);
        }
コード例 #2
0
        public ImageCountViewModel(InspectService inspectService)
        {
            inspectService.Inspected += Inspected;

            ClearCommand = new DelegateCommand(() =>
            {
                Total = OK = NG = Skip = Timeout = 0;
            });
        }
コード例 #3
0
        public SettingCommunicationViewModel(InspectService inspectService, CoreConfig coreConfig)
        {
            CoreConfig = coreConfig;

            _resultTimeout = CoreConfig.ResultTimeout;

            TestCommand = new DelegateCommand(() =>
            {
                inspectService.Inspect(null, "test", new CancellationToken());
            });
        }
コード例 #4
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            InspectVo inspectVo = new InspectVo
            {
                Process_Code  = cbProcessCd.Text,
                Item_Code     = cbItemCd.Text,
                Inspect_Code  = txtInsepctCode.Text,
                Inspect_Name  = txtInspectName.Text,
                Spec_Desc     = txtDataDESC.Text,
                USL           = Convert.ToDecimal(txtUSL.Text),
                SL            = Convert.ToDecimal(txtSL.Text),
                LSL           = Convert.ToDecimal(txtLSL.Text),
                Inspect_Group = cbSampleSize.Text,
                Inspect_Unit  = txtUnit.Text,
                Use_YN        = rbY.Checked ? "Y" : "N",
                Remark        = txtNote.Text
            };
            InspectService service = new InspectService();

            service.InsertInspectMaster(inspectVo);
            CommonClass.InitControl(panel1);
            frm.btnS.PerformClick();
        }
コード例 #5
0
        private void LoadList()
        {
            ProcessService proService = new ProcessService();

            processCombo = (from item in proService.GetAllProcess()
                            select new ComboItem
            {
                comboText = item.Process_Code,
                comboValue = item.Process_Name
            }).ToList();
            ItemService itemService = new ItemService();

            itemList  = itemService.GetAllItemInfo();
            ItemCombo = (from item in itemList
                         select new ComboItem
            {
                comboText = item.Item_Code,
                comboValue = item.Item_Name
            }).ToList();
            dgvSelect.DataSource = ItemCombo;
            InspectService inspectService = new InspectService();

            inspectMaster = inspectService.GetAllInspect();
        }
コード例 #6
0
        public CommunicationViewModel(
            GrabService grabService,
            LightControlService lightControlService,
            HostCommService hostCommService,
            InspectService inspectService,
            StateStore stateStore,
            CoreConfig coreConfig,
            CancellationToken token)
        {
            _stateStore = stateStore;

            Task.Run(async() =>
            {
                while (token.IsCancellationRequested == false)
                {
                    _stateStore.HostInfo      = GetConnectionInfo(hostCommService.IsConnected());
                    _stateStore.InspectorInfo = GetConnectionInfo(inspectService.IsConnected());
                    _stateStore.CameraInfo    = GetConnectionInfo(grabService.IsConnected());
                    _stateStore.LightInfo     = GetConnectionInfo(lightControlService.IsConnected());

                    await Task.Delay(coreConfig.CommCheckDelay).ConfigureAwait(false);
                }
            });
        }
コード例 #7
0
        public ControlViewModel(
            GrabService grabService,
            LightControlService lightControlService,
            InspectService inspectService,
            StateStore stateStore,
            CoreConfig coreConfig)
        {
            _stateStore = stateStore;

            GrabCommand = new DelegateCommand(async() =>
            {
                lightControlService.SetValue(coreConfig.LightValues);
                lightControlService.LightOn();

                var grabInfo = await grabService.Grab();
                lightControlService.LightOff();

                //if (grabInfo != null && coreConfig.UseInspector && stateStore.IsManualEnabled)
                //    inspectService.Inspect(grabInfo.Value);

                //if (lightControlService.SetValue(coreConfig.LightValues) && lightControlService.LightOn())
                //{
                //    var grabInfo = await grabService.Grab();
                //    lightControlService.LightOff();

                //    if (grabInfo != null && coreConfig.UseInspector && stateStore.IsManualEnabled)
                //        inspectService.Inspect(grabInfo.Value);
                //}
            });

            LiveCommand = new DelegateCommand(() =>
            {
                lightControlService.SetValue(coreConfig.LightValues);
                lightControlService.LightOn();
                grabService.StartGrab();

                //if (lightControlService.SetValue(coreConfig.LightValues) && lightControlService.LightOn())

                //if (inspectService.Inspected != null)
                //{
                //    List<SubResult> subResults = new List<SubResult>();
                //    subResults.Add(new SubResult(@"Pass, C:\Projects\KT_Interface_20210602\KT_Interface_20210602\KT_Interface\bin\Debug\Temp\1234_20210408120030.Bmp"));
                //    subResults.Add(new SubResult(@"Fail, C:\Projects\KT_Interface_20210602\KT_Interface_20210602\KT_Interface\bin\Debug\Temp\2345_20210408124853.Bmp"));
                //    inspectService.Inspected(new InspectResult(EJudgement.Pass, subResults));
                //}

                StateStore.IsLiveMode = true;
            });

            StopCommand = new DelegateCommand(() =>
            {
                grabService.Stop();

                lightControlService.LightOff();

                StateStore.IsLiveMode = false;
            });

            ExitCommand = new DelegateCommand(() =>
            {
                Application.Current.Shutdown();
            });
        }
コード例 #8
0
 public InspectModule(InspectService inspect) => _inspect = inspect;
コード例 #9
0
        public void Init()
        {
            DefectInfos = new BindableCollection <DefectInfoViewModel>();
            DefectInfosCollectionView = DefectInfos.GetDefaultCollectionView();

            MeasurementInfos = new BindableCollection <MeasurementInfoViewModel>();
            MeasurementInfosCollectionView = MeasurementInfos.GetDefaultCollectionView();

            // Init SurfaceMonitors
            SurfaceMonitors = new List <SurfaceMonitorViewModel>();

            int surfaceCount = 0;

            surfaceCount = 2;

            for (int i = 0; i < surfaceCount; i++)
            {
                var sm = new SurfaceMonitorViewModel
                {
                    Index                      = i,
                    SurfaceTypeIndex           = i,
                    DisplayDefectInfo          = true,
                    DisplayAllDefectInfos      = false,
                    DisplayMeasurementInfo     = true,
                    DisplayAllMeasurementInfos = false,
                };
                SurfaceMonitors.Add(sm);
            }

            //
            SelectSurfaceMonitorCommand = new DelegateCommand <SurfaceMonitorViewModel>(
                o =>
            {
                if (SelectedSurfaceMonitor == o)
                {
                    return;
                }

                HideAll();

                SelectedSurfaceMonitor            = o;
                SelectedSurfaceMonitor.IsSelected = true;

                // Show DefectInfosCollectionView
                if (_displayAllDefectsOnImages)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllDefectInfos = false);
                    SelectedSurfaceMonitor.DisplayAllDefectInfos         = true;
                }

                DefectInfosCollectionView.Filter =
                    x =>
                {
                    var di = (DefectInfoViewModel)x;
                    return(di.SurfaceTypeIndex == SelectedSurfaceMonitor.SurfaceTypeIndex);
                };
                DefectInfosCollectionView.Refresh();

                // Show MeasurementInfosCollectionView
                if (_displayAllMeasurementInfosOnImages)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllMeasurementInfos = false);
                    SelectedSurfaceMonitor.DisplayAllMeasurementInfos         = true;
                }

                MeasurementInfosCollectionView.Filter =
                    x =>
                {
                    var di = (MeasurementInfoViewModel)x;
                    return(di.SurfaceTypeIndex == SelectedSurfaceMonitor.SurfaceTypeIndex);
                };
                MeasurementInfosCollectionView.Refresh();

                UpdateCommandStates();
            });

            SaveImageToFileCommand = new DelegateCommand(
                () =>
            {
                InspectionViewModelService.OpenSaveImageToFileDialog(SelectedSurfaceMonitor.BitmapSource,
                                                                     "SurfaceType_" + SelectedSurfaceMonitor.SurfaceTypeIndex);
            }, () => SelectedSurfaceMonitor != null);

            ShowAllMeasurementsCommand = new DelegateCommand(
                OnShowAllMeasurementsCommand);

            ShowGroupMeasurementsCommand = new DelegateCommand(
                OnShowGroupMeasurementsCommand);

            InspectImageFileCommand = new DelegateCommand(async() =>
            {
                int surfaceTypeIndex = SelectedSurfaceMonitor.SurfaceTypeIndex;

                var dialog = new OpenFileDialog()
                {
                    Title  = "Load image to surface " + surfaceTypeIndex,
                    Filter =
                        //                                     "BMP files (*.bmp)|*.bmp|" +
                        //                                              "TIFF files (*.tif)|*.tif|" +
                        //                                              "JPG files (*.jpg)|*.jpg|" +
                        "All files (*.*)|*.*",
                };
                var result = dialog.ShowDialog();

                if (!result.HasValue || !result.Value)
                {
                    return;
                }


                DefectInfos.Clear();
                MeasurementInfos.Clear();

                var fileName = dialog.FileName;
                await InspectService.InspectImageFileAsync(surfaceTypeIndex, fileName);
            }, () => SelectedSurfaceMonitor != null);

            StartCommand = new DelegateCommand(
                () => { InspectService.Start(); });

            StopCommand = new DelegateCommand(
                () => { InspectService.Reset(); });


            ZoomInCommand = new DelegateCommand(
                () =>
            {
                if (SelectedSurfaceMonitor != null)
                {
                    SelectedSurfaceMonitor.ZoomIn();
                }
                _isZoomFitDisplayAreaEnabled = false;
                _isZoomActualEnabled         = false;
            },
                () => SelectedSurfaceMonitor != null);

            ZoomOutCommand = new DelegateCommand(
                () =>
            {
                if (SelectedSurfaceMonitor != null)
                {
                    SelectedSurfaceMonitor.ZoomOut();
                }
                _isZoomFitDisplayAreaEnabled = false;
                _isZoomActualEnabled         = false;
            },
                () => SelectedSurfaceMonitor != null);

            ZoomFitCommand = new DelegateCommand(
                () =>
            {
                _isZoomFitDisplayAreaEnabled = !_isZoomFitDisplayAreaEnabled;
                if (_isZoomFitDisplayAreaEnabled)
                {
                    if (SelectedSurfaceMonitor != null)
                    {
                        SelectedSurfaceMonitor.ZoomFitDisplayArea();
                    }
                }
                else
                {
                    if (SelectedSurfaceMonitor != null)
                    {
                        SelectedSurfaceMonitor.ZoomFit();
                    }
                }
                _isZoomActualEnabled = false;
            },
                () => SelectedSurfaceMonitor != null);

            ZoomActualCommand = new DelegateCommand(
                () =>
            {
                _isZoomActualEnabled = !_isZoomActualEnabled;
                if (_isZoomActualEnabled)
                {
                    if (SelectedSurfaceMonitor != null)
                    {
                        SelectedSurfaceMonitor.ZoomActual();
                    }
                }
                else
                {
                    if (SelectedSurfaceMonitor != null)
                    {
                        SelectedSurfaceMonitor.ZoomFit();
                    }
                }

                _isZoomFitDisplayAreaEnabled = false;
            },
                () => SelectedSurfaceMonitor != null);

            // publish CommunicationInitializedEvent
            PrismEventAggregator
            .GetEvent <SplashFinishedEvent>()
            .Publish(new SplashFinishedEvent());

            InspectService.AcquisitionStartedEvent
            .ObserveOnDispatcher()
            .Subscribe(surfaceIndex =>
            {
                var surfaceMonitor              = SurfaceMonitors[surfaceIndex];
                surfaceMonitor.BitmapSource     = null;
                surfaceMonitor.DefectInfos      = null;
                surfaceMonitor.MeasurementInfos = null;
                surfaceMonitor.InspectState     = InspectState.Grabbing;
                Debug.WriteLine("InspectState.Grabbing");
                //                               surfaceMonitor.MeasurementInfos.Clear();
                //                               surfaceMonitor.DefectInfos.Clear();

                UpdateCommandStates();
            });

            InspectService.AcquisitionCompletedEvent
            .ObserveOnDispatcher()
            .Subscribe(imageInfo =>
            {
                var surfaceMonitor              = SurfaceMonitors[imageInfo.SurfaceTypeIndex];
                surfaceMonitor.BitmapSource     = null;
                surfaceMonitor.DefectInfos      = null;
                surfaceMonitor.MeasurementInfos = null;
                surfaceMonitor.InspectState     = InspectState.Grabbed;
                Debug.WriteLine("InspectState.Grabbed");

                UpdateCommandStates();
            });

            InspectService.CalibrationStartedEvent
            .ObserveOnDispatcher()
            .Subscribe(async surfaceIndex =>
            {
                var surfaceMonitor              = SurfaceMonitors[surfaceIndex];
                surfaceMonitor.BitmapSource     = null;
                surfaceMonitor.DefectInfos      = null;
                surfaceMonitor.MeasurementInfos = null;
                surfaceMonitor.InspectState     = InspectState.Calibrating;
                Debug.WriteLine("InspectState.Calibrating");

                UpdateCommandStates();
            });

            InspectService.CalibrationCompletedEvent
            .ObserveOnDispatcher()
            .Subscribe(async imageInfo =>
            {
                var surfaceMonitor          = SurfaceMonitors[imageInfo.SurfaceTypeIndex];
                surfaceMonitor.InspectState = InspectState.Calibrated;
                Debug.WriteLine("InspectState.Calibrated");

                var bs = await imageInfo.ToBitmapSourceAsync();
                surfaceMonitor.BitmapSource = bs;

                UpdateCommandStates();
            });

            InspectService.InspectionStartedEvent
            .ObserveOnDispatcher()
            .Subscribe(x =>
            {
                var surfaceMonitor          = SurfaceMonitors[x];
                surfaceMonitor.InspectState = InspectState.Inspecting;
                Debug.WriteLine("InspectState.Inspecting");

                UpdateCommandStates();
            });

            InspectService.InspectionCompletedEvent
            .ObserveOnDispatcher()
            .Subscribe(inspectInfo =>
            {
                DefectInfos.Clear();
                MeasurementInfos.Clear();

                var surfaceMonitor          = SurfaceMonitors[inspectInfo.SurfaceTypeIndex];
                surfaceMonitor.InspectState = inspectInfo.InspectInfo.DefectInfos.Count == 0
                                   ? InspectState.InspectedWithAccepted
                                   : InspectState.InspectedWithRejected;

                var iiVm = inspectInfo.InspectInfo.ToViewModel();

                surfaceMonitor.DefectInfos      = iiVm.DefectInfos.OrderBy(x => x.GroupName).ToList();
                surfaceMonitor.MeasurementInfos = iiVm.MeasurementInfos.OrderBy(x => x.GroupName).ToList();

                DefectInfos.AddRange(iiVm.DefectInfos);
                MeasurementInfos.AddRange(iiVm.MeasurementInfos);

                UpdateCommandStates();
            });

            SwitchDisplayAllDefectInfosCommand = new DelegateCommand(
                () =>
            {
                HideAll();

                DefectInfosCollectionView.Filter = null;
                DefectInfosCollectionView.Refresh();

                if (_displayAllDefectsOnImages)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllDefectInfos = true);
                }

                UpdateCommandStates();
            });

            SwitchDisplayAllDefectInfosOnImagesCommand = new DelegateCommand(
                () =>
            {
                _displayAllDefectsOnImages = !_displayAllDefectsOnImages;

                if (!_displayAllDefectsOnImages)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllDefectInfos = false);
                    return;
                }

                if (SelectedSurfaceMonitor == null)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllDefectInfos = true);
                }
                else
                {
                    SelectedSurfaceMonitor.DisplayAllDefectInfos = true;
                }

                UpdateCommandStates();
            });


            SwitchDisplayAllMeasurementInfosCommand = new DelegateCommand(
                () =>
            {
                HideAll();

                MeasurementInfosCollectionView.Filter = null;
                MeasurementInfosCollectionView.Refresh();

                if (_displayAllMeasurementInfosOnImages)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllMeasurementInfos = true);
                }

                UpdateCommandStates();
            });

            SwitchDisplayAllMeasurementInfosOnImagesCommand = new DelegateCommand(
                () =>
            {
                _displayAllMeasurementInfosOnImages = !_displayAllMeasurementInfosOnImages;

                if (!_displayAllMeasurementInfosOnImages)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllMeasurementInfos = false);
                    return;
                }

                if (SelectedSurfaceMonitor == null)
                {
                    SurfaceMonitors.ForEach(x => x.DisplayAllMeasurementInfos = true);
                }
                else
                {
                    SelectedSurfaceMonitor.DisplayAllMeasurementInfos = true;
                }

                UpdateCommandStates();
            });
        }
コード例 #10
0
        public ShellViewModel(InspectService inspectService, StateStore stateStore)
        {
            _stateStore = stateStore;

            inspectService.Inspected += Inspected;
        }