Ejemplo n.º 1
0
            /// <summary>
            /// 撮影処理を行うループです.
            /// <para>Startメソッドで開始し,Stopメソッドで停止させてください.</para>
            /// <para>画像撮影のみを行います.モータ制御動作を廃止しましした.</para>
            /// </summary>
            private void captureLoop()
            {
                while (flagBreakCaptureLoop)
                {
                    // 撮影画像を取得し,描画する.
#if !_NoHardWare
                    try {
                        captruredBuffer = Ipt.CaptureMain();
                    } catch (Exception ex) {
                        System.Console.WriteLine(ex.Message);
                    }
#else
                    // ハードウェアがないデバッグ時は適当な映像を描写
                    for (int i = 0; i < captruredBuffer.Length; ++i)
                    {
                        captruredBuffer[i] = (byte)(random.Next(255));
                    }
                    Thread.Sleep(10);
#endif

                    if (action != null)
                    {
                        actionThread = new Thread(new ThreadStart(action));
                        actionThread.IsBackground = true;
                        actionThread.Start();
                        actionThread.Join();
                    }
                    Thread.Sleep(10);
                }
            }
Ejemplo n.º 2
0
        private void task()
        {
            try {
                MotorControler mc     = MotorControler.GetInstance(parameterManager);
                Surface        sur    = Surface.GetInstance(parameterManager);
                Camera         camera = Camera.GetInstance();
                Led            led    = Led.GetInstance();
                CoordManager   cm     = new CoordManager(parameterManager);

                Vector3 InitPoint   = mc.GetPoint();
                int     viewcounter = 0;


                //string txtfileName = string.Format(@"{0}\{1}.txt",
                //    direcotryPath, System.DateTime.Now.ToString("yyyyMMdd_HHmmss_ffff"));
                //StreamWriter twriter = File.CreateText(txtfileName);

                //text読み込み
//                List<pointscan> PSList = new List<pointscan>();
                List <Point2d> PSList = new List <Point2d>();

                var reader = new StreamReader(File.OpenRead(@"C:\affine_position.txt"));
                //bool headerflag = true;


                while (!reader.EndOfStream)
                {
                    var      line      = reader.ReadLine();
                    string[] delimiter = { " " };
                    var      values    = line.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);

                    Point2d p2 = new Point2d(
                        double.Parse(values[0]),
                        double.Parse(values[1])
                        );
                    PSList.Add(p2);
                }


                int pixthre = 500;

                for (int pp = 0; pp < PSList.Count(); pp++)
                {
                    viewcounter = 0;

                    Vector3 movepoint = new Vector3(PSList[pp].X, PSList[pp].Y, InitPoint.Z);
                    mc.MoveTo(movepoint);

                    //camera.Start();
                    //surfrecog(pixthre, 0.003);
                    //camera.Stop();
                    //double surfaceZup = mc.GetPoint().Z;

                    //movepoint.Z = surfaceZup;
                    //mc.MoveTo(movepoint);
                    mc.Join();

                    //SurfPoint = mc.GetPoint();


                    camera.Start();
                    led.AdjustLight(parameterManager);
                    camera.Stop();

                    Vector3 p   = mc.GetPoint();
                    byte[]  b   = Ipt.CaptureMain();
                    Mat     src = new Mat(440, 512, MatType.CV_8U, b);



                    String filename = String.Format(@"C:\img\grid\{0}_{1}_.png",
                                                    (p.X * 1000).ToString("0.0"),
                                                    (p.Y * 1000).ToString("0.0"));

                    Cv2.ImWrite(filename, src);


                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                }

                camera.Start();
            } catch (SystemException) {
            }
        }
Ejemplo n.º 3
0
        private void task()
        {
            MotorControler mc     = MotorControler.GetInstance(parameterManager);
            Surface        sur    = Surface.GetInstance(parameterManager);
            Camera         camera = Camera.GetInstance();
            Led            led    = Led.GetInstance();

            Vector3 InitPoint = mc.GetPoint();
            Vector3 p         = new Vector3();

            double emthickness = sur.UpTop - sur.UpBottom;
            int    nshot       = (int)(emthickness / 0.003);


            int blockXCounter = 0;
            int blockYCounter = 0;

            while (blockYCounter < nyView)
            {
                while (blockXCounter < nxView)
                {
                    string txtfileName = string.Format(@"{0}\{1}.txt"
                                                       , direcotryPath
                                                       , System.DateTime.Now.ToString("yyyyMMdd_HHmmss_ffff")
                                                       );
                    StreamWriter twriter = File.CreateText(txtfileName);

                    //Vector3 InitPointofThisBlock = new Vector3(
                    //    InitPoint.X + blockXCounter * 4.350,
                    //    InitPoint.Y + blockYCounter * 4.390,
                    //    InitPoint.Z
                    //    );

                    //Vector3 SurfPointofThisBlock = new Vector3(
                    //    InitPointofThisBlock.X + 2.200,
                    //    InitPointofThisBlock.Y + 2.200,
                    //    InitPoint.Z
                    //    );

                    Vector3 InitPointofThisBlock = new Vector3(
                        InitPoint.X + (double)(blockXCounter) * ((0.210 - 0.01) * 10 - 0.030), //if x40 -> 2.150,
                        InitPoint.Y - (double)(blockYCounter) * ((0.180 - 0.01) * 10 - 0.030), //if x40 -> 2.170,
                        InitPoint.Z
                        );

                    Vector3 SurfPointofThisBlock = new Vector3(
                        InitPointofThisBlock.X + 1.000,
                        InitPointofThisBlock.Y - 1.000,
                        InitPoint.Z
                        );


                    //go to surface measurement
                    mc.MovePoint(SurfPointofThisBlock.X, SurfPointofThisBlock.Y, sur.UpTop + 0.050);//above 50micron
                    mc.Join();

                    //surface landing
                    bool flag         = true;
                    int  layercounter = 0;
                    camera.Start();
                    while (flag)
                    {
                        mc.MoveDistance(-0.003, VectorId.Z);
                        mc.Join();
                        byte[] b   = camera.ArrayImage;
                        Mat    src = new Mat(440, 512, MatType.CV_8U, b);
                        Mat    mat = src.Clone();

                        Cv2.GaussianBlur(mat, mat, Cv.Size(3, 3), -1);
                        Mat gau = mat.Clone();
                        Cv2.GaussianBlur(gau, gau, Cv.Size(31, 31), -1);
                        Cv2.Subtract(gau, mat, mat);
                        Cv2.Threshold(mat, mat, 10, 1, ThresholdType.Binary);
                        int brightness = Cv2.CountNonZero(mat);
                        layercounter++;

                        if (brightness > 10000 || layercounter > 30)
                        {
                            flag = false;
                        }
                    }
                    led.AdjustLight(parameterManager);
                    camera.Stop();

                    //surface
                    double surfacetopz    = mc.GetPoint().Z;
                    double surfacebottomz = surfacetopz - emthickness;


                    //data taking
                    int rowcounter = 0;
                    int colcounter = 0;
                    //while (rowcounter < 24) {
                    //    while (colcounter < 20) {
                    while (rowcounter < 12)
                    {
                        while (colcounter < 10)
                        {
                            string    stlog  = "";
                            byte[]    bb     = new byte[440 * 512 * nshot];
                            double    startZ = 0.0;
                            PlusMinus plusminus;

                            if (colcounter % 2 == 0)
                            {
                                //camera.Start();
                                //led.AdjustLight(parameterManager);
                                //camera.Stop();
                                startZ    = surfacetopz + 0.012;
                                plusminus = PlusMinus.Minus;
                            }
                            else
                            {
                                startZ    = surfacebottomz - 0.009;
                                plusminus = PlusMinus.Plus;
                            }

                            double prev_z = startZ;

                            mc.MovePoint(
                                InitPointofThisBlock.X + (0.210 - 0.01) * colcounter, //x40, 0.230-0.01 //parameterManager.SpiralShiftX
                                InitPointofThisBlock.Y - (0.180 - 0.01) * rowcounter, //x40, 0.195-0.01 //parameterManager.SpiralShiftY
                                startZ);
                            mc.Join();

                            p = mc.GetPoint();
                            DateTime starttime   = System.DateTime.Now;
                            string   datfileName = string.Format(@"{0}\{1}_x{2}_y{3}_xi{4}_yi{5}.dat",
                                                                 direcotryPath,
                                                                 starttime.ToString("yyyyMMdd_HHmmss"),
                                                                 (int)(p.X * 1000),
                                                                 (int)(p.Y * 1000),
                                                                 colcounter,
                                                                 rowcounter
                                                                 );
                            BinaryWriter writer = new BinaryWriter(File.Open(datfileName, FileMode.Create));

                            mc.Inch(plusminus, 0.15, VectorId.Z);

                            int viewcounter = 0;
                            while (viewcounter < nshot + 3)
                            {
                                byte[] b = Ipt.CaptureMain();
                                p = mc.GetPoint();
                                TimeSpan ts = System.DateTime.Now - starttime;
                                stlog += String.Format("{0} {1} {2} {3} {4} {5} {6} {7}\n",
                                                       colcounter % 2,
                                                       System.DateTime.Now.ToString("HHmmss\\.fff"),
                                                       ts.ToString("s\\.fff"),
                                                       (p.X * 1000).ToString("0.0"),
                                                       (p.Y * 1000).ToString("0.0"),
                                                       (p.Z * 1000).ToString("0.0"),
                                                       (prev_z * 1000 - p.Z * 1000).ToString("0.0"),
                                                       viewcounter);
                                prev_z = p.Z;

                                if (viewcounter >= 3)
                                {
                                    b.CopyTo(bb, 440 * 512 * (viewcounter - 3));
                                }
                                viewcounter++;
                            }//view
                            viewcounter = 0;

                            mc.SlowDownStop(VectorId.Z);

                            twriter.Write(stlog);
                            writer.Write(bb);
                            writer.Flush();
                            writer.Close();
                            colcounter++;
                        }//col
                        colcounter = 0;
                        rowcounter++;
                    }//row
                    rowcounter = 0;
                    twriter.Close();
                    blockXCounter++;
                }//blockX
                blockXCounter = 0;
                blockYCounter++;
            }//blockY
            blockYCounter = 0;
            camera.Start();
        }//end of task()
Ejemplo n.º 4
0
        private void task()
        {
            MotorControler mc     = MotorControler.GetInstance(parameterManager);
            Surface        sur    = Surface.GetInstance(parameterManager);
            Camera         camera = Camera.GetInstance();
            Led            led    = Led.GetInstance();
            CoordManager   cm     = new CoordManager(parameterManager);


            Vector3 initialpoint = mc.GetPoint();

            int pixthre = 500;


            for (int bx = -5; bx <= 5; bx++)
            {
                for (int by = -5; by <= 5; by++)
                {
                    string       txtfileName = string.Format(@"E:\img\{0}_{1}.txt", bx, by);
                    StreamWriter twriter     = File.CreateText(txtfileName);

                    Vector3 blockstartpoint = new Vector3();
                    blockstartpoint.X = initialpoint.X + bx * 1.0;
                    blockstartpoint.Y = initialpoint.Y + by * 1.0;
                    blockstartpoint.Z = initialpoint.Z;

                    mc.MoveTo(new Vector3(blockstartpoint.X + 0.5, blockstartpoint.Y + 0.5, initialpoint.Z - 0.020));
                    mc.Join();

                    int ledbrightness = led.AdjustLight(parameterManager);


                    camera.Start();
                    surfrecog(pixthre, 0.003);
                    camera.Stop();
                    double surfaceZup = mc.GetPoint().Z;



                    //上面  ベース中からはじめ、ベース上側を表面認識
                    //ベース上側からはじめてZ方向正の向きにスキャン


                    for (int vy = 0; vy < 10; vy++)
                    {
                        Vector3 linestartpoint = mc.GetPoint();
                        linestartpoint.X = blockstartpoint.X;
                        linestartpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY;
                        linestartpoint.Z = surfaceZup;

                        for (int vx = 0; vx < 8;)
                        {
                            if (vx == 0)
                            {
                                Vector3 approachingpoint = mc.GetPoint();
                                approachingpoint.X = blockstartpoint.X + vx * parameterManager.SpiralShiftX - 0.05;
                                approachingpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY - 0.05;
                                approachingpoint.Z = linestartpoint.Z - 0.006;
                                mc.MoveTo(approachingpoint);
                                mc.Join();
                            }

                            Vector3 viewstartpoint = mc.GetPoint();
                            viewstartpoint.X = blockstartpoint.X + vx * parameterManager.SpiralShiftX;
                            viewstartpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY;
                            viewstartpoint.Z = linestartpoint.Z - 0.006;

                            mc.MoveTo(viewstartpoint);
                            mc.Join();
                            Thread.Sleep(100);

                            Vector3            viewpoint = mc.GetPoint();
                            List <ImageTaking> lit       = new List <ImageTaking>();

                            mc.Inch(PlusMinus.Plus, 0.15, VectorId.Z);

                            int viewcounter = 0;
                            while (viewcounter < 16 + 3)
                            {
                                byte[]  b = Ipt.CaptureMain();
                                Vector3 p = mc.GetPoint();

                                if (viewcounter >= 3)
                                {
                                    ImageTaking it = new ImageTaking(p, b);

                                    string stlog = "";
                                    stlog += String.Format("{0}   {1}  {2}  {3}\n",
                                                           ledbrightness,
                                                           p.X,
                                                           p.Y,
                                                           p.Z);
                                    twriter.Write(stlog);
                                }
                                viewcounter++;
                            }//view
                            viewcounter = 0;
                            double endz = mc.GetPoint().Z;

                            mc.SlowDownStop(VectorId.Z);
                            mc.Join();

                            if (endz - viewstartpoint.Z < 0.070)
                            {
                                tsparams tsp = new tsparams();
                                tsp.phthre = 10;
                                List <microtrack> lm = TrackSelector.Select(lit, tsp);
                                foreach (microtrack m in lm)
                                {
                                    double viewx  = viewpoint.X;
                                    double viewy  = viewpoint.Y;
                                    double pixelx = 135.0 / 512.0;
                                    double pixely = 115.0 / 440.0;
                                    double x      = viewx - (m.cx - 256) * pixelx;
                                    double y      = viewy + (m.cy - 220) * pixely;
                                    Console.WriteLine(string.Format("{0:0.0} {1:0.0}   {2:0.0} {3:0.0}    {4:0.0} {5:0.0}  {6:0.0} {7:0.0}", m.ph, m.pv, m.ax, m.ay, x, y, m.cx, m.cy));
                                }
                                vx++;
                            }
                        } //vx
                    }     //vy



                    //下面  ベース中からはじめ、ベース下側を表面認識
                    //ベース下側からはじめてZ方向負の向きにスキャン

                    mc.MoveTo(new Vector3(blockstartpoint.X + 0.5, blockstartpoint.Y + 0.5, initialpoint.Z - 0.140));
                    mc.Join();

                    camera.Start();
                    surfrecog(pixthre, -0.003);
                    camera.Stop();

                    double surfaceZdown = mc.GetPoint().Z;


                    for (int vy = 0; vy < 10; vy++)
                    {
                        Vector3 linestartpoint = mc.GetPoint();
                        linestartpoint.X = blockstartpoint.X;
                        linestartpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY;
                        linestartpoint.Z = surfaceZdown;


                        for (int vx = 0; vx < 8;)
                        {
                            if (vx == 0)
                            {
                                Vector3 approachingpoint = mc.GetPoint();
                                approachingpoint.X = blockstartpoint.X + vx * parameterManager.SpiralShiftX - 0.05;
                                approachingpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY - 0.05;
                                approachingpoint.Z = linestartpoint.Z + 0.006;
                                mc.MoveTo(approachingpoint);
                                mc.Join();
                            }

                            Vector3 viewstartpoint = mc.GetPoint();
                            viewstartpoint.X = blockstartpoint.X + vx * parameterManager.SpiralShiftX;
                            viewstartpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY;
                            viewstartpoint.Z = linestartpoint.Z + 0.006;

                            mc.MoveTo(viewstartpoint);
                            mc.Join();
                            Thread.Sleep(100);

                            Vector3 viewpoint = mc.GetPoint();

                            byte[] bb          = new byte[440 * 512 * 16];
                            string datfileName = string.Format(@"E:\img\d_{0}_{1}_{2}_{3}.dat",
                                                               (int)(viewpoint.X * 1000),
                                                               (int)(viewpoint.Y * 1000),
                                                               vx,
                                                               vy
                                                               );
                            BinaryWriter writer = new BinaryWriter(File.Open(datfileName, FileMode.Create));

                            mc.Inch(PlusMinus.Minus, 0.15, VectorId.Z);

                            int viewcounter = 0;
                            while (viewcounter < 16 + 3)
                            {
                                byte[]  b = Ipt.CaptureMain();
                                Vector3 p = mc.GetPoint();

                                if (viewcounter >= 3)
                                {
                                    b.CopyTo(bb, 440 * 512 * (viewcounter - 3));

                                    string stlog = "";
                                    stlog += String.Format("{0}   {1}  {2}  {3}\n",
                                                           ledbrightness,
                                                           p.X,
                                                           p.Y,
                                                           p.Z);
                                    twriter.Write(stlog);
                                }
                                viewcounter++;
                            }//view
                            viewcounter = 0;
                            double endz = mc.GetPoint().Z;

                            mc.SlowDownStop(VectorId.Z);
                            mc.Join();
                            Thread.Sleep(100);

                            if (viewstartpoint.Z - endz < 0.070)
                            {
                                vx++;
                                writer.Write(bb);
                                writer.Flush();
                                writer.Close();
                            }
                        } //vx
                    }     //vy



                    camera.Stop();
                    twriter.Close();
                } //blocky
            }     //blockx
        }         //task
Ejemplo n.º 5
0
        private void task()
        {
            MotorControler mc     = MotorControler.GetInstance(parameterManager);
            Surface        sur    = Surface.GetInstance(parameterManager);
            Camera         camera = Camera.GetInstance();
            Led            led    = Led.GetInstance();
            CoordManager   cm     = new CoordManager(parameterManager);


            Vector3 initialpoint = mc.GetPoint();

            int pixthre = 500;


            for (int bx = -1; bx <= 1; bx++)
            {
                for (int by = -1; by <= 1; by++)
                {
                    string       txtfileName = string.Format(@"E:\img\{0}_{1}.txt", bx, by);
                    StreamWriter twriter     = File.CreateText(txtfileName);

                    Vector3 blockstartpoint = new Vector3();
                    blockstartpoint.X = initialpoint.X + bx * 1.0;
                    blockstartpoint.Y = initialpoint.Y + by * 1.0;
                    blockstartpoint.Z = initialpoint.Z;

                    mc.MoveTo(new Vector3(blockstartpoint.X + 0.5, blockstartpoint.Y + 0.5, initialpoint.Z));
                    mc.Join();

                    camera.Start();
                    int ledbrightness = led.AdjustLight(parameterManager);
                    camera.Stop();


                    //初期位置からはじめてZ方向正の向きにスキャン


                    for (int vy = 0; vy < 10; vy++)
                    {
                        Vector3 linestartpoint = mc.GetPoint();
                        linestartpoint.X = blockstartpoint.X;
                        linestartpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY;
                        linestartpoint.Z = initialpoint.Z;

                        for (int vx = 0; vx < 8;)
                        {
                            if (vx == 0)
                            {
                                Vector3 approachingpoint = mc.GetPoint();
                                approachingpoint.X = blockstartpoint.X + vx * parameterManager.SpiralShiftX - 0.05;
                                approachingpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY - 0.05;
                                approachingpoint.Z = linestartpoint.Z;
                                mc.MoveTo(approachingpoint);
                                mc.Join();
                            }

                            Vector3 viewstartpoint = mc.GetPoint();
                            viewstartpoint.X = blockstartpoint.X + vx * parameterManager.SpiralShiftX;
                            viewstartpoint.Y = blockstartpoint.Y + vy * parameterManager.SpiralShiftY;
                            viewstartpoint.Z = linestartpoint.Z;

                            mc.MoveTo(viewstartpoint);
                            mc.Join();
                            Thread.Sleep(100);

                            Vector3 viewpoint = mc.GetPoint();

                            int    npict       = 300;
                            byte[] bb          = new byte[440 * 512 * npict];
                            string datfileName = string.Format(@"E:\img\u_{0}_{1}_{2}_{3}.dat",
                                                               (int)(viewpoint.X * 1000),
                                                               (int)(viewpoint.Y * 1000),
                                                               vx,
                                                               vy
                                                               );
                            BinaryWriter writer = new BinaryWriter(File.Open(datfileName, FileMode.Create));

                            mc.Inch(PlusMinus.Plus, 0.15 / 12, VectorId.Z);

                            int viewcounter = 0;
                            while (viewcounter < npict + 3)
                            {
                                byte[]  b = Ipt.CaptureMain();
                                Vector3 p = mc.GetPoint();

                                if (viewcounter >= 3)
                                {
                                    b.CopyTo(bb, 440 * 512 * (viewcounter - 3));

                                    string stlog = "";
                                    stlog += String.Format("{0}   {1}  {2}  {3}\n",
                                                           ledbrightness,
                                                           p.X,
                                                           p.Y,
                                                           p.Z);
                                    twriter.Write(stlog);
                                }
                                viewcounter++;
                            }//view
                            viewcounter = 0;
                            double endz = mc.GetPoint().Z;

                            mc.SlowDownStop(VectorId.Z);
                            mc.Join();
                            Thread.Sleep(100);

                            if (endz - viewstartpoint.Z < 0.15)
                            {
                                vx++;
                                writer.Write(bb);
                                writer.Flush();
                                writer.Close();
                            }
                        } //vx
                    }     //vy



                    camera.Stop();
                    twriter.Close();
                } //blocky
            }     //blockx
        }         //task
Ejemplo n.º 6
0
        private void task()
        {
            try {
                MotorControler mc     = MotorControler.GetInstance(parameterManager);
                Surface        sur    = Surface.GetInstance(parameterManager);
                Camera         camera = Camera.GetInstance();
                Led            led    = Led.GetInstance();
                CoordManager   cm     = new CoordManager(parameterManager);

                Vector3 InitPoint   = mc.GetPoint();
                Vector3 SurfPoint   = mc.GetPoint();
                Vector3 p           = new Vector3();
                int     viewcounter = 0;


                //string txtfileName = string.Format(@"{0}\{1}.txt",
                //    direcotryPath, System.DateTime.Now.ToString("yyyyMMdd_HHmmss_ffff"));
                //StreamWriter twriter = File.CreateText(txtfileName);

                List <pointscan> PSList = new List <pointscan>();

                var  reader     = new StreamReader(File.OpenRead(@"C:\test\list.txt"));
                bool headerflag = true;


                while (!reader.EndOfStream)
                {
                    var      line      = reader.ReadLine();
                    string[] delimiter = { " " };
                    var      values    = line.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);

                    pointscan ps = new pointscan();
                    ps.id         = int.Parse(values[1]);
                    ps.stagecoord = new Vector3(
                        double.Parse(values[12]),
                        double.Parse(values[13]),
                        double.Parse(values[14])
                        );
                    PSList.Add(ps);
                }


                int    nshot = 26;
                byte[] bb    = new byte[440 * 512 * nshot];
                camera.Stop();

                for (int pp = 0; pp < PSList.Count(); pp++)
                {
                    viewcounter = 0;
                    if (pp % 1 == 0)
                    {
                        Vector3 surfrecogpoint = PSList[pp].stagecoord;
                        surfrecogpoint.Z = InitPoint.Z + 0.06;
                        mc.MoveTo(surfrecogpoint);
                        mc.Join();

                        bool flag = true;
                        while (flag)
                        {
                            mc.MoveDistance(-0.003, VectorId.Z);
                            mc.Join();
                            byte[] b = Ipt.CaptureMain();
                            int    brightness;

                            using (Mat src = new Mat(440, 512, MatType.CV_8U, b))
                                using (Mat mat = src.Clone()) {
                                    Cv2.GaussianBlur(mat, mat, Cv.Size(3, 3), -1);
                                    using (Mat gau = mat.Clone()) {
                                        Cv2.GaussianBlur(gau, gau, Cv.Size(31, 31), -1);
                                        Cv2.Subtract(gau, mat, mat);
                                        Cv2.Threshold(mat, mat, 10, 1, ThresholdType.Binary);
                                        brightness = Cv2.CountNonZero(mat);
                                    }//using gau
                                }//using src and mat

                            viewcounter++;

                            if (brightness > 5000 || viewcounter > 40)
                            {
                                flag = false;
                            }
                        }

                        SurfPoint = mc.GetPoint();
                    }

                    Vector3 CandPoint = PSList[pp].stagecoord;
                    CandPoint.Z = SurfPoint.Z + CandPoint.Z - 0.044;

                    mc.MoveTo(CandPoint);
                    mc.Join();

                    camera.Start();
                    led.AdjustLight(parameterManager);
                    camera.Stop();

                    p = mc.GetPoint();
                    double   prev_z      = p.Z;
                    DateTime starttime   = System.DateTime.Now;
                    string   datfileName = string.Format(@"{0}\{1:00000}_x{2}_y{3}.dat",
                                                         direcotryPath,
                                                         PSList[pp].id,
                                                         (int)(p.X * 1000),
                                                         (int)(p.Y * 1000));
                    BinaryWriter writer = new BinaryWriter(File.Open(datfileName, FileMode.Create));

                    string stlog = "";
                    viewcounter = 0;
                    while (viewcounter < nshot)
                    {
                        mc.MoveDistance(0.003, VectorId.Z);
                        mc.Join();
                        byte[] b = Ipt.CaptureMain();
                        p = mc.GetPoint();
                        TimeSpan ts = System.DateTime.Now - starttime;
                        stlog += String.Format("{0} {1} {2} {3} {4} {5} {6} {7}\n",
                                               pp,
                                               System.DateTime.Now.ToString("HHmmss\\.fff"),
                                               ts.ToString("s\\.fff"),
                                               (p.X * 1000).ToString("0.0"),
                                               (p.Y * 1000).ToString("0.0"),
                                               (p.Z * 1000).ToString("0.0"),
                                               (prev_z * 1000 - p.Z * 1000).ToString("0.0"),
                                               viewcounter);
                        b.CopyTo(bb, 440 * 512 * viewcounter);
                        viewcounter++;
                    }

                    //twriter.Write(stlog);
                    writer.Write(bb);
                    writer.Flush();
                    writer.Close();

                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                }

                camera.Start();
                //twriter.Close();
            } catch (Exception ex) {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 7
0
        private void task()
        {
            try {
                MotorControler mc     = MotorControler.GetInstance(parameterManager);
                Surface        sur    = Surface.GetInstance(parameterManager);
                Camera         camera = Camera.GetInstance();
                Led            led    = Led.GetInstance();

                Vector3 initialpoint = mc.GetPoint();

                camera.Stop();


                string txtfileName = string.Format(@"C:\img\{0}_{1}.txt",
                                                   initialpoint.X,
                                                   initialpoint.Y);
                StreamWriter twriter = File.CreateText(txtfileName);



                double thickness = sur.UpTop - initialpoint.Z;
                int    npict     = (int)(thickness / 0.002) + 3;

                byte[] bb          = new byte[440 * 512 * npict];
                string datfileName = string.Format(@"C:\img\{0}_{1}.dat",
                                                   (int)(initialpoint.X),
                                                   (int)(initialpoint.Y)
                                                   );
                BinaryWriter writer = new BinaryWriter(File.Open(datfileName, FileMode.Create));



                string stlog       = "";
                int    viewcounter = 0;

                Vector3 p = new Vector3();

                while (viewcounter < npict)
                {
                    mc.MoveDistance(0.002, VectorId.Z);
                    mc.Join();
                    byte[] b = Ipt.CaptureMain();
                    p = mc.GetPoint();

                    stlog += String.Format("{0}  {1} {2} {3}  {4}\n",
                                           System.DateTime.Now.ToString("HHmmss\\.fff"),
                                           (p.X * 1000).ToString("0.0"),
                                           (p.Y * 1000).ToString("0.0"),
                                           (p.Z * 1000).ToString("0.0"),
                                           viewcounter);
                    b.CopyTo(bb, 440 * 512 * viewcounter);
                    viewcounter++;
                }


                twriter.Write(stlog);
                twriter.Close();

                writer.Write(bb);
                writer.Flush();
                writer.Close();

                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();

                camera.Start();
            } catch (SystemException) {
            }
        }//task