示例#1
0
        private void Button1_Click(object sender, EventArgs e)
        {
            int           inx = 0;
            ConfigSetting cfg = SettingsManager.Instance.GetCurrent(System.Windows.Forms.Application.StartupPath);
            DateTime      now = DateTime.Now;

            CvInvoke.UseOpenCL = true;

            if (button1.Text.Contains("start"))
            {
                {
                    detect_blobs detectorMaster = new detect_blobs(new ColorRange("Red"), (ThresholdType)cfg.BinMethod, (byte)cfg.BinVal, 255);
                    detectorMaster.NewBlobs     += new detect_blobs.DetectNewBlobHandle(masterBlobsHaveAdded);
                    detectorMaster.ShowFrameRgb += new detect_blobs.ShowImageHandle(masterShowFrameRgb); // slowing - don't use
                    detectorMaster.ShowFrameBin += new detect_blobs.ShowImageHandle(masterShowFrameBin);

                    List <Bitmap> lM = methods.common.PrepareLinesBitmaps(@"..\..\..\..\merge" + inx + ".jpg", 4);
                    lM.Reverse();
                    //for (int i = lM.Count - 1; i > 0; i--) detectorMaster.Core(new Image<Bgr, byte>(lM[i]), DateTime.Now);
                    foreach (var item in lM)
                    {
                        detectorMaster.Core(new Image <Bgr, byte>(item), now);
                    }
                }

                {
                    detect_blobs detectorSlave = new detect_blobs(new ColorRange("Red"), (ThresholdType)cfg.BinMethod, (byte)cfg.BinVal, 255);
                    detectorSlave.NewBlobs     += new detect_blobs.DetectNewBlobHandle(slaveBlobsHaveAdded);
                    detectorSlave.ShowFrameRgb += new detect_blobs.ShowImageHandle(slaveShowFrameRgb); // slowing - don't use
                    detectorSlave.ShowFrameBin += new detect_blobs.ShowImageHandle(slaveShowFrameBin);

                    List <Bitmap> lS = methods.common.PrepareLinesBitmaps(@"..\..\..\..\merge" + inx + "s.jpg", 4);
                    for (int i = lS.Count - 1; i > 0; i--)
                    {
                        detectorSlave.Core(new Image <Bgr, byte>(lS[i]), now);
                    }
                }

                timerAccessToButton.Start();
            }
            else
            {
                button1.Text = "start";
            }
        }
示例#2
0
        private void start(bool isCameraStart = true)
        {
            labelMsg.Visible = true;

#if (TRACE)
            ds     = new DataSet("trace");
            dtBlow = new DataTable("blow");
            dtBlow.Columns.Add("id", typeof(int));
            dtBlow.Columns.Add("valve", typeof(int));
            dtBlow.Columns.Add("sec", typeof(int));
            dtBlow.Columns.Add("milisec", typeof(int));

            dtSensor = new DataTable("sensor");
            dtSensor.Columns.Add("id", typeof(int));
            dtSensor.Columns.Add("valve", typeof(int));
            dtSensor.Columns.Add("sec", typeof(int));
            dtSensor.Columns.Add("milisec", typeof(int));

            ds.Tables.Add(dtBlow);
            ds.Tables.Add(dtSensor);

//            ds.Relations.Add("relation_id", dtBlow.Columns["id"], dtSensor.Columns["id"]);/**/
#endif

            // detectors
            {
                valves.init();

                if (true)
                {
                    detectorMaster =
                        new detect_blobs(new ColorRange("Red"), (ThresholdType)cbBinMethodMaster.SelectedIndex,
                                         (byte)trBinValMaster.Value, 255, 2, true);
                    if (!checkBoxIsUseCore.Checked)
                    {
                        detectorMaster.NewBlobs += new detect_blobs.DetectNewBlobHandle(masterBlobsHaveAdded);
                        emulationZeroSample4Master(); // first sample detected long time -> emulate firs/t sample & delete  it .................

                        if (cfg.isShowFrameRgb)
                        {
                            detectorMaster.ShowFrameRgb +=
                                new detect_blobs.ShowImageHandle(masterShowFrameRgb); // slowing - don't use
                        }
                        if (cfg.isShowFrameBin)
                        {
                            detectorMaster.ShowFrameBin += new detect_blobs.ShowImageHandle(masterShowFrameBin);
                        }

                        timerM.Start();
                    }
                }

#if (DEMO)
                cbCamMS.Checked = true;
#endif

                if (cbCamMS.Checked)
                {
                    if (MSLink == null)
                    {
                        MSLink = new List <long[]>();
                    }
                    linkMS = new comparator();
                    linkMS.ComplitParticle += new comparator.ComplitReorddHandle(complectMSCompare);

                    detectorSlave =
                        new detect_blobs(new ColorRange("Red"), (ThresholdType)cbBinMethodMaster.SelectedIndex,
                                         (byte)trBinValMaster.Value, 255, 2, false);
                    if (!checkBoxIsUseCore.Checked)
                    {
                        detectorSlave.NewBlobs += new detect_blobs.DetectNewBlobHandle(slaveBlobsHaveAdded);
                        emulationZeroSample4Slave(); // first sample detected long time -> emulate first sample & delete  it .................

                        if (cfg.isShowFrameRgb)
                        {
                            detectorSlave.ShowFrameRgb +=
                                new detect_blobs.ShowImageHandle(slaveShowFrameRgb); // slowing - don't use
                        }
                        if (cfg.isShowFrameBin)
                        {
                            detectorSlave.ShowFrameBin += new detect_blobs.ShowImageHandle(slaveShowFrameBin);
                        }

                        timerS.Start();
                    }
                }
            }

            cbBinMethodMaster.SelectedItem = detectorMaster.ThresholdType_METHOD;
            trBinValMaster.Value           = detectorMaster.ThresholdType_VAL;

            if (isCameraStart)
            {
#if (DEMO)
                cbCamOne.Checked = true;
#endif
                // camera engine
                if (cbCamOne.Checked)
                {
                    drv = new IDS();
                    drv.Init(((IDS)drv).GetNoInDeviceList(cfg.CameraMaster), -1, -1, 24, dpsMaster.pbLife, IntPtr.Zero);
                }
                else
                {
                    drv = new IDSMS();
                    ((IDSMS)drv).SetCameraID(cfg.CameraMaster, 1);
                    drv.Init(0, -1, -1, 24, dpsSlave.pbLife, dpsMaster.pbLife.Handle);
                    ((IDSMS)drv).ImageCapturedSlave += new CameraBridgeEventHandler(cameraSlaveCapture);
                }

                // device
                HidController.Controller.Start(cfg.FrontLight, (int)cfg.BackLigth,
                                               cfg.VibroVal, cfg.VibroVal2);
                HidController.Controller.BlowSetTime(cfg.BlowInterval);
                HidController.Controller.SensorsClear();

                drv.TurnON();
                drv.ImageCaptured += new CameraBridgeEventHandler(cameraMasterCapture);

                if (cbCamOne.Checked)
                {
                    valves.init(((IDS)drv).GetWidth(), ((IDS)drv).GetWidth());
                }
                else
                {
                    valves.init(((IDSMS)drv).GetMasterWidth(), ((IDSMS)drv).GetSlaveWidth());
                }

#if (DEMO)
                cbCamMS.Checked = true;
                timerDEMO.Start();
#endif


                labelMsg.Visible = false;
                clearCounters();
#if (TRACE)
                dtSensor.Rows.Clear();
                dtBlow.Rows.Clear();
                cntBlow = 0;
#endif
            }
        }