Exemplo n.º 1
0
        private void xfer_XferNotify(object sender, SapXferNotifyEventArgs argsNotify)
        {
            try
            {
                var core = argsNotify.Context as DalsaCore;
                if (argsNotify.Trash)
                {
                }
                else
                {
                    //DateTime getStart = DateTime.Now;

                    IntPtr bufferAddress;
                    Buffers.GetAddress(out bufferAddress);
                    Debug.WriteLine(_name + "Dalsa ImgPtr:[" + _id + "]" + bufferAddress + DateTime.Now);

                    var imgInfo = new ImgBytesInfo();
                    imgInfo._imgSrcPtr = bufferAddress;
                    imgInfo._imgBytes  = new byte[ObjSize];
                    imgInfo._imgTicks  = DateTime.Now.Ticks / 10000;
                    Marshal.Copy(bufferAddress, imgInfo._imgBytes, 0, ObjSize);

                    OnDalsaImageArrivedHandle(imgInfo);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Exemplo n.º 2
0
        void GrabDoneEvt_Trg(object sender, SapXferNotifyEventArgs evt)
        {
            Console.WriteLine("Stop Stage Buffer");
            StopStgBuffer(CurrentConfig);
            Console.WriteLine("Grab Done in ");
            Stg.WaitEps("Y")(TrigScanData.EndYPos[CurrentConfig], 0.005);
            var Buf2Img     = FnBuff2Img(Cam.GetBuffWH()["H"], Cam.GetBuffWH()["W"]);
            var currentbuff = FullBuffdata(Cam.Buffers);
            var temp        = Buf2Img(currentbuff, 1);

            Console.WriteLine("send image to viewer");
            evtTrgImg(temp, TrigCount);   // 1 Trigger = 1 Buffer
            TrigCount += 1;
            if (TrigCount < TrigLimit)
            {
                Console.WriteLine("Grab Done IF in ");
                StgReadyTrigScan(TrigCount, CurrentConfig);
                Console.WriteLine("Run stage buffer");
                RunStgBuffer(CurrentConfig);
                System.Threading.Thread.Sleep(100);
                Console.WriteLine("Go to end point");
                ScanMoveXYstg("Y", TrigScanData.EndYPos[CurrentConfig], TrigScanData.Scan_Stage_Speed);
            }
            else
            {
                Console.WriteLine("send image to viewer");
                evtScanEnd();
            }
        }
Exemplo n.º 3
0
        static void xfer_XferNotify(object sender, SapXferNotifyEventArgs args)
        {
            // refresh view
            SapView View = args.Context as SapView;

            View.Show();

            // refresh frame rate
            SapTransfer transfer = sender as SapTransfer;

            if (transfer.UpdateFrameRateStatistics())
            {
                SapXferFrameRateInfo stats = transfer.FrameRateStatistics;
                float framerate            = 0.0f;

                if (stats.IsLiveFrameRateAvailable)
                {
                    framerate = stats.LiveFrameRate;
                }

                // check if frame rate is stalled
                if (stats.IsLiveFrameRateStalled)
                {
                    Console.WriteLine("Live Frame rate is stalled.");
                }

                // update FPS only if the value changed by +/- 0.1
                else if ((framerate > 0.0f) && (Math.Abs(lastFrameRate - framerate) > 0.1f))
                {
                    Console.WriteLine("Grabbing at {0} frames/sec", framerate);
                    lastFrameRate = framerate;
                }
            }
        }
Exemplo n.º 4
0
        void xfer_XferNotify(object sender, SapXferNotifyEventArgs args)
        {
            // refresh view
            SapBuffer buffer   = args.Context as SapBuffer;
            string    filename = _save_dir + string.Format("Frame-{2}--Aux time-{0}--Host time-{1}.bmp", (args.AuxTimeStamp / 1e6).ToString(), (args.HostTimeStamp / 1e7).ToString(), (args.GenericParamValue0 - 1).ToString());

            buffer.Save(filename, "-format bmp");
            //buffer.Save("test.bmp", "-format bmp");
            Console.WriteLine("Aux time: {0}, Host time: {1}, Frame: {2}", (args.AuxTimeStamp / 1e6).ToString(), (args.HostTimeStamp / 1e7).ToString(), args.GenericParamValue0.ToString());


            SapTransfer transfer = sender as SapTransfer;

            if (transfer.UpdateFrameRateStatistics())
            {
                SapXferFrameRateInfo stats = transfer.FrameRateStatistics;
                float framerate            = 0.0f;

                if (stats.IsLiveFrameRateAvailable)
                {
                    framerate = stats.LiveFrameRate;
                }

                // check if frame rate is stalled
                if (stats.IsLiveFrameRateStalled)
                {
                    Console.WriteLine("Live Frame rate is stalled.");
                }
            }
        }
Exemplo n.º 5
0
        void GrabDoneEvt(object sender, SapXferNotifyEventArgs evt)
        {
            Console.WriteLine("IN Evt");
            switch (ScanStatus)
            {
            case ScanState.Stop:
                ScanStatus = ScanState.Wait;

                break;

            case ScanState.Pause:
                PauseProcess(LineCount);
                break;

            case ScanState.Start:
                StartProcess();
                break;

            default:
                evtRealimg(FnBuff2Img(Cam.GetBuffWH()["H"], Cam.GetBuffWH()["W"])(FullBuffdata(), 1));
                var zscore = Idc.Zscore(SingleBuffdata().Cast <double>().ToArray <double>());
                Task.Run(() => evtSV(Idc.Variance(zscore())()));
                break;
            }
        }
Exemplo n.º 6
0
        public void xfer_XferNotify(object sender, SapXferNotifyEventArgs argsNotify)
        {
            DateTime StartTime = DateTime.Now;


            //1.计算图像采集时间
            if (firstFrame)
            {
                firstFrame = false;
                start      = DateTime.Now.Second + (float)DateTime.Now.Millisecond / 1000;
                return;
            }

            end      = DateTime.Now.Second + (float)DateTime.Now.Millisecond / 1000;
            duration = end - start;
            start    = end;
            Console.WriteLine("图像采集时间:" + duration.ToString() + "秒\n");
            Model.AcquisionImageTime[AcquisionImageCount] = duration;



            //2.图像缓存转化为halcon图像类型
            int SubImageWidth  = 13384;
            int SubImageHeight = 100;//7635


            IntPtr dataAddress = IntPtr.Zero;
            bool   Flag        = m_Buffers.GetAddress(out dataAddress);

            if (!Flag)
            {
                MessageBox.Show("图像缓存获取失败!");
            }

            AutoMachineDAL.DAL Dal = new AutoMachineDAL.DAL();
            Model.RawImage = Dal.ImageProcessObject.ImagePtrToHobject(SubImageWidth, SubImageHeight, ref dataAddress);
            HOperatorSet.DispObj(Model.RawImage, Model.MainUI_Camera_WindowID);

            if (Model.SaveImageFlag)
            {
                SaveImage(Model.RawImage, true);
            }


            //CombinImage(CommonModuleClass.RawImage, SubImageWidth, SubImageHeight);


            //5.计算图像转换时间
            DateTime EndTime    = DateTime.Now;
            TimeSpan ts         = EndTime - StartTime;
            double   difference = ts.TotalSeconds; //秒单位

            Console.WriteLine("图像转换时间:" + difference.ToString() + "秒\n");
        }
Exemplo n.º 7
0
        static void xfer_XferNotify(object sender, SapXferNotifyEventArgs argsNotify)
        {
            Homepage GigeDlg = argsNotify.Context as Homepage;

            // If grabbing in trash buffer, do not display the image, update the
            // appropriate number of frames on the status bar instead
            if (argsNotify.Trash)
            {
                GigeDlg.Invoke(new DisplayFrameAcquired(GigeDlg.ShowFrameNumber), argsNotify.EventCount, true);
            }
            else
            {
                GigeDlg.Invoke(new DisplayFrameAcquired(GigeDlg.ShowFrameNumber), argsNotify.EventCount, false);
                GigeDlg.m_View.Show();
            }
        }
Exemplo n.º 8
0
 public TransferNotifyEventArgs(SapXferNotifyEventArgs sapXferNotifyEventArgs)
 {
     Context            = sapXferNotifyEventArgs.Context;
     PairIndex          = sapXferNotifyEventArgs.PairIndex;
     Trash              = sapXferNotifyEventArgs.Trash;
     GenericParamValue3 = sapXferNotifyEventArgs.GenericParamValue3;
     GenericParamValue2 = sapXferNotifyEventArgs.GenericParamValue2;
     GenericParamValue1 = sapXferNotifyEventArgs.GenericParamValue1;
     GenericParamValue0 = sapXferNotifyEventArgs.GenericParamValue0;
     CustomSize         = sapXferNotifyEventArgs.CustomSize;
     CustomData         = sapXferNotifyEventArgs.CustomData;
     AuxTimeStamp       = sapXferNotifyEventArgs.AuxTimeStamp;
     HostTimeStamp      = sapXferNotifyEventArgs.HostTimeStamp;
     EventCount         = sapXferNotifyEventArgs.EventCount;
     EventType          = sapXferNotifyEventArgs.EventType;
 }
Exemplo n.º 9
0
        static void xfer_XferNotify(object sender, SapXferNotifyEventArgs argsNotify)
        {
            Form1 GrabDlg = argsNotify.Context as Form1;

            // If grabbing in trash buffer, do not display the image, update the
            // appropriate number of frames on the status bar instead
            Debug.WriteLine(DateTime.Now.ToString() + ":" + argsNotify.EventCount.ToString());
            if (GrabDlg.testStep == 1)
            {
                if (argsNotify.Trash)
                {
                    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.ShowFrameNumber), argsNotify.EventCount, true);
                }
                // Refresh view
                else
                {
                    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.TestStep1), argsNotify.EventCount, false);
                    //GrabDlg.m_View.Show();
                }
            }
            else if (GrabDlg.testStep == 2)
            {
                if (argsNotify.Trash)
                {
                    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.ShowFrameNumber), argsNotify.EventCount, true);
                }
                // Refresh view
                else
                {
                    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.TestStep2), argsNotify.EventCount, false);
                    //GrabDlg.m_View.Show();
                }
            }
            else if (GrabDlg.testStep == 3)
            {
                if (argsNotify.Trash)
                {
                    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.ShowFrameNumber), argsNotify.EventCount, true);
                }
                // Refresh view
                else
                {
                    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.FPNTest), argsNotify.EventCount, false);
                    //GrabDlg.m_View.Show();
                }
            }
        }
Exemplo n.º 10
0
        static void xfer_XferNotify(object sender, SapXferNotifyEventArgs argsNotify)
        {
            Form5 GrabDlg = argsNotify.Context as Form5;

            // If grabbing in trash buffer, do not display the image, update the
            // appropriate number of frames on the status bar instead
            if (argsNotify.Trash)
            {
                GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.ShowFrameNumber), argsNotify.EventCount, true);
            }
            // Refresh view
            else
            {
                GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.TestStep1), argsNotify.EventCount, false);
                //GrabDlg.m_View.Show();
            }
        }
Exemplo n.º 11
0
        void XferNotify(object sender, SapXferNotifyEventArgs argsNotify)
        {
            TransferNotifyEventArgs transferNotifyEventArgs = new TransferNotifyEventArgs(argsNotify);

            FrameCaptured?.Invoke(transferNotifyEventArgs);
            //  instance.FrameCaptured?.Invoke(new TransferNotifyEventArgs(argsNotify));

            //GrabDemoDlg GrabDlg = argsNotify.Context as GrabDemoDlg;
            //// If grabbing in trash buffer, do not display the image, update the
            //// appropriate number of frames on the status bar instead
            //if (argsNotify.Trash)
            //    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.ShowFrameNumber), argsNotify.EventCount, true);
            //// Refresh view
            //else
            //{
            //    GrabDlg.Invoke(new DisplayFrameAcquired(GrabDlg.ShowFrameNumber), argsNotify.EventCount, false);
            //    GrabDlg.m_View.Show();
            //}
        }
Exemplo n.º 12
0
 void GrabDoneEvt_Trg( object sender , SapXferNotifyEventArgs evt )
 {
     Console.WriteLine( "Grab Done in " );
     var Buf2Img = FnBuff2Img( Cam.GetBuffWH()["H"] , Cam.GetBuffWH()["W"] );
     var currentbuff = FullBuffdata();
     var temp = Buf2Img( currentbuff , 1 );
     evtTrgImg( temp, TrigCount ); // 1 Trigger = 1 Buffer
     Freeze();
     TrigCount += 1;
     if ( TrigCount < TrigLimit )
     {
         Console.WriteLine( "Grab Done IF in " );
         StgReadyTrigScan( TrigCount , CurrentConfig );
         Grab();
         System.Threading.Thread.Sleep( 100 );
         ScanMoveXYstg( "Y" , TrigScanData.EndYPos[CurrentConfig] , TrigScanData.Scan_Stage_Speed );
     }
     else {
         evtScanEnd();
         StopStgBuffer( CurrentConfig );
     }
 }
Exemplo n.º 13
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
        }
Exemplo n.º 14
0
 private void AcqCallback1(object sender, SapXferNotifyEventArgs argsNotify)
 {
     m_FrmaeCount++;
 }
Exemplo n.º 15
0
        static void Xfer_XferNotify(object sender, SapXferNotifyEventArgs args)
        {
            SapView view = args.Context as SapView;

            view.Show();
        }
Exemplo n.º 16
0
 static void xfer_XferNotify(object sender, SapXferNotifyEventArgs args)
 {
     SapView View = args.Context as SapView;
     View.Show();
 }
Exemplo n.º 17
0
 void GrabDoneEvt_Non( object sender, SapXferNotifyEventArgs evt )
 {
     evtRealimg( Reshape2D( FullBuffdata(), 1 ) );
     Task.Run( () => TferVariance( SingleBuffdata() ) );
 }