Esempio n. 1
0
        private void Communication_PackageReceived(FingerPrint.Frame frame)
        {
            Viewer.UpdateImageCallback  UpdateImage      = ChangeImage;
            Viewer.UpdateStatusCallback UpdateStatusText = ShowStatusText;
            Viewer.UpdateStatusCallback UpdateTNText     = ShowStatusText;
            Viewer.UpadateLogInvoke     UpdateLog        = LogUpdate;
            #region Debug_input
#if DEBUGX
            if (Viewer.frameCount > 0 && Viewer.frameCount % 20 == 0)
            {
                Viewer._Buffer3 = true;
                int        col     = frame.nDataFrameNum * 16;
                Bitmap     clo     = frame.bitmap.Clone(new Rectangle(col, 0, 4, frame.bitmap.Height), PixelFormat.Format24bppRgb);
                BitmapData bmpData = clo.LockBits(new Rectangle(0, 0, 4, clo.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb); //frame.bitmap.Height
                byte[]     data    = new byte[bmpData.Width * bmpData.Height * 3];
                System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, data, 0, data.Length);                                          //複製記憶體區塊
                clo.UnlockBits(bmpData);
                if (data[0] != 0)
                {
                    Viewer.tArrange = new Thread(CheckBmp);
                    Viewer.tArrange.Start(data); //new Rectangle(0, 0, 1600, 1), frame.bitmap.PixelFormat
                }
            }
#endif
            #endregion Debug_input

            if (!Viewer.StreamStart)
            {
                Viewer.StreamStart = true;
                Invoke(UpdateLog, new Object[] { "Frist Stream In, Start Stram...", true });
            }

            Viewer.nDataFrameNum = (uint)frame.nDataFrameNum;
            Viewer.FPS           = frame.nFPS;
            Viewer.bmp_TN_Temp   = frame.bitmap;
            switch (frame.nDataFrameNum)
            {
            case 0:
                Viewer._Buffer0 = false;
                Viewer.bmp0     = frame.bitmap;
                Viewer._Buffer0 = true;
                break;

            case 1:
                Viewer._Buffer1 = false;
                Viewer.bmp1     = frame.bitmap;
                Viewer._Buffer1 = true;
                break;

            case 2:
                Viewer._Buffer2 = false;
                Viewer.bmp2     = frame.bitmap;
                Viewer._Buffer2 = true;
                break;

            default:
                break;
            }
            if (Viewer.DisplayByGL)
            {
                Invoke(UpdateImage);
            }
            Invoke(UpdateStatusText, new Object[] { this.SSL_Framecount, "Frame count : " + Viewer.frameCount, null });
            Invoke(UpdateStatusText, new Object[] { this.SSL_TN, "TN : " + Viewer.TN, null });
            Viewer.frameCount++;

            if (Viewer.save_count > 0)
            {
                Viewer.tSaveImage = new Thread(new ParameterizedThreadStart(Save_Image));
                Viewer.tSaveImage.Start(frame.bitmap);
                Viewer.save_count--;
            }
            GC.Collect();
        }
Esempio n. 2
0
        private void btn_connect_Click(object sender, EventArgs e)
        {
            Viewer.UpdateStatusCallback UpdateStatusText = ShowStatusText;
            Viewer.fingerPrint = new FingerPrint();
            Viewer.fingerPrint.AutoConnect_Interval = 5000;
            btn_connect.Enabled = false;
            if (Viewer.fingerPrint.IsConnected)
            {
                Viewer._Initial = true;
                Invoke(UpdateStatusText, new Object[] { SSL_Connect_Status, " Connectted", Color.Green });
                Viewer.fingerPrint.FrameReceived += Communication_PackageReceived;
                Viewer.fingerPrint.LogReceived   += Communication_LogReceived;
                GeneralProtocol.BasicCommand.DeviceDescription devDes = new GeneralProtocol.BasicCommand.DeviceDescription();
                ErrorCode ret = Viewer.fingerPrint.FP_GetDeviceDescription(out devDes);
                if (ret != ErrorCode.FP_STATUS_OK)
                {
                    this.rt_log.AppendText("[E] FP_GetDeviceDescription - ErrorCode = " + ret.ToString() + Environment.NewLine);
                }
                else
                {
                    this.rt_log.AppendText(devDes.ToString() + Environment.NewLine);
                    btn_Reset.Enabled       = true;
                    btn_Start.Enabled       = true;
                    btn_interrupt.Enabled   = true;
                    btn_interrupt.BackColor = Color.PaleVioletRed;
                    gb_ROIC_op.Enabled      = true;
                    gb_PWM.Enabled          = true;

                    ushort duty, freq;
                    ret = Viewer.fingerPrint.FP_GetPWMPara(out freq, out duty);
                    if (ret != ErrorCode.FP_STATUS_OK)
                    {
                        this.rt_log.AppendText("[E] GET PWM - ErrorCode = " + ret.ToString() + Environment.NewLine);
                    }
                    else
                    {
                        Viewer.PWMDuty_memory           = duty;
                        tb_PWM_Duty.Text                = Convert.ToString(duty);
                        tb_PWM_Freq.Text                = Convert.ToString(freq);
                        cb_DebugLog_Level.SelectedIndex = (int)Viewer.debuglevel;
                    }

                    byte o_cfb;
                    Viewer.fingerPrint.FP_GetSensorCfb(out o_cfb);
                    num_cfb.Value = o_cfb * num_cfb.Increment;
                    byte o_pgagain;
                    Viewer.fingerPrint.FP_GetSensorPGAGain(out o_pgagain);
                    num_pgagain_A.Value = o_pgagain / 16 + 1;
                    num_pgagain_B.Value = o_pgagain % 16 + 1;
                    ushort o_vos;
                    Viewer.fingerPrint.FP_GetSensorADCOffset(out o_vos);
                    num_vos.Value               = o_vos;
                    num_cfb.ValueChanged       += num_cfb_ValueChanged;
                    num_pgagain_A.ValueChanged += num_pgagain_ValueChanged;
                    num_pgagain_B.ValueChanged += num_pgagain_ValueChanged;
                    num_vos.ValueChanged       += num_vos_ValueChanged;
                    num_cfb.MouseWheel         += new MouseEventHandler(Num_MouseWheel_DoNothing);
                    num_pgagain_A.MouseWheel   += new MouseEventHandler(Num_MouseWheel_DoNothing);
                    num_pgagain_B.MouseWheel   += new MouseEventHandler(Num_MouseWheel_DoNothing);
                    num_vos.MouseWheel         += new MouseEventHandler(Num_MouseWheel_DoNothing);
                }
                rt_log.Select(rt_log.Text.Length - 1, 0);
                rt_log.ScrollToCaret();
            }
            else
            {
                Viewer._Initial = false;
                rt_log.Text    += "Connect Failed  : \n";
                rt_log.Select(rt_log.Text.Length - 1, 0);
                rt_log.ScrollToCaret();
                Viewer.fingerPrint.Dispose();
                Viewer.fingerPrint  = null;
                btn_connect.Enabled = true;
            }
        }
Esempio n. 3
0
        public void ShowImage()
        {
            Font font = new Font("Times New Roman", 15, FontStyle.Regular);

            System.Drawing.SolidBrush penBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Green);
            PointF drawpoint = new PointF(0, 0);

            Viewer.UpdateStatusCallback  UpdateStatusText = ShowStatusText;
            System.Diagnostics.Stopwatch drawwatch        = new System.Diagnostics.Stopwatch();
            Viewer.frameTime = 100;
            Rectangle Panel_rec = new Rectangle(0, 0, 800, 750);
            int       preframe  = -1;

            while (Viewer.tShowImage.IsAlive)
            {
                do
                {
                    Thread.Sleep(10);
                } while (preframe == Viewer.frameCount);
                preframe = Viewer.frameCount;
                if (Viewer.frameCount % 100 > 0 && Viewer.tictoc.Elapsed.TotalMilliseconds > 0)
                {
                    Viewer.frameTime = Convert.ToInt32(Viewer.tictoc.Elapsed.TotalMilliseconds) / (Convert.ToInt32(Viewer.frameCount % 100));
                }
                Panel_rec.Width  = Drawpanel.Width;
                Panel_rec.Height = Drawpanel.Height;
#if DEBUG
                drawwatch.Reset();
                drawwatch.Start();
#endif
                switch (Viewer.nDataFrameNum)
                {
                case 0:
                    Viewer.Draw_graphic.DrawImage(Viewer.bmp0, Panel_rec);
                    Viewer._Buffer0 = false;
                    break;

                case 1:
                    Viewer.Draw_graphic.DrawImage(Viewer.bmp1, Panel_rec);
                    Viewer._Buffer1 = false;
                    break;

                case 2:
                    Viewer.Draw_graphic.DrawImage(Viewer.bmp2, Panel_rec);
                    Viewer._Buffer2 = false;
                    break;

                default:
                    break;
                }
                if (Form_Main.Engineering_mode)
                {
                    Viewer.Draw_graphic.DrawString("FPS : " + ((float)1000 / Viewer.frameTime).ToString("f4"), font, penBrush, drawpoint);
                }
                Viewer.Draw_graphic.Flush();
#if DEBUG
                drawwatch.Stop();
                Viewer.drawTime = (int)drawwatch.Elapsed.TotalMilliseconds;
                Invoke(UpdateStatusText, new Object[] { this.SSL_TN, "Wait Time : " + Viewer.drawTime, null });
#endif
            }
        }