Exemple #1
0
 public async void StartLineScan(int startposX, int endposX, int speed)
 {
     ReadyLineScan(startposX);
     DataFullScan.LineLimit = 0;
     InitCount();
     SetDir();
     await Task.Run(() => {
         ImgSrcByte = new byte[0];
         System.Threading.Thread.Sleep(2000);
         AcsXYZControl.XMove(endposX);
         System.Threading.Thread.Sleep(2500);
         StatusFullScan = FullScanState.Start;
     });
 }
Exemple #2
0
        public MainModule()
        {
            DalsaMemObj = new DalsaMember();
            GrabM       = new GrabMana(ImgBasePath);
            CameraSet   = new CameraSetting();
            IConnection DalsaConnect = new Connection();

            AFMeasrue     = new AFCalc();
            DataFullScan  = new FullScanData();
            AcsXYZControl = new AcsContol();

            CreateDeviceMana(DalsaConnect);
            TimerSetting();
            StatusFullScan = FullScanState.Wait;
            FeedBackPos    = new double[3];
        }
Exemple #3
0
 void BeginScanning(int posX, int posY)
 {
     //XYStageControler.XYMoveAbsPos(posX, posY);
     StatusFullScan = FullScanState.Start;
     //XYStageControler.XYWait2ArriveEpsilon(posX, posY, 80);
 }
Exemple #4
0
        void GrabDoneEventMethod(object sender, SapXferNotifyEventArgs evt)
        {
            byte[] buffData = GrabM.DataTransFromBuffer(DalsaMemObj.Buffers);
            evtRealimg(Buff2Img(buffData, 1));
            ScanDirec = ScanDirection.Forward;

            Console.WriteLine(StatusFullScan.ToString());

            #region New
            switch (StatusFullScan)
            {
            case FullScanState.Stop:
                StatusFullScan = FullScanState.Wait;
                Freeze();
                //evtScanEnd();
                break;

            case FullScanState.Pause:
                double currentYPos = AcsXYZControl.GetMotorFPos()[1];
                AcsXYZControl.YMove(3);
                AcsXYZControl.Wait2ArriveEpsilon("Y", currentYPos + 3, 0.02);
                System.Threading.Thread.Sleep(100);       // Need Pos Check Later //sjw
                if (ScanDirec == ScanDirection.Forward)
                {
                    ScanDirec = ScanDirection.Back;
                    NextXPos  = StartP;
                }
                else
                {
                    ScanDirec = ScanDirection.Forward;
                    NextXPos  = EndP;
                }


                AcsXYZControl.XMove(NextXPos);
                StatusFullScan = FullScanState.Start;

                break;

            case FullScanState.Start:
                //evtScanStart();
                ImgSrcByte = Matrix.Concatenate <byte>(ImgSrcByte, buffData);
                //SaveFullDat(ImgSrcByte,LineCount,UnitCount,BuffCount);

                evtFScanImgOnGoing(Buff2Img(ImgSrcByte, BuffCount + 1), LineCount, UnitCount);
                //evtlineUnitNum(LineCount, UnitCount); // for Watch

                if (BuffCount == DataFullScan.BuffLimit)
                {
                    ImgSrcByte = null;
                    ImgSrcByte = new byte[0];
                    BuffCount  = 0;

                    if (UnitCount == DataFullScan.UnitLimit)
                    {
                        UnitCount = 0;

                        if (LineCount == DataFullScan.LineLimit)
                        {
                            StatusFullScan = FullScanState.Stop;
                            break;
                        }
                        else
                        {
                            LineCount     += 1;
                            StatusFullScan = FullScanState.Pause;
                        }
                        break;
                    }
                    else
                    {
                        UnitCount += 1;
                    }
                }
                else
                {
                    BuffCount++;
                }
                break;
            }
            #endregion
        }