private void ThreadTest()
        {
            this.isRunning = true;


            var i2cController = I2cController.FromName(SC20260.I2cBus.I2c1);

            try {
                var ov9655 = new Ov9655Controller(i2cController);

read_id:
                try {
                    var id = ov9655.ReadId();
                }
                catch {
                    goto read_id;
                }

                byte[]          data           = null;
                UnmanagedBuffer unmangedBuffer = null;

                if (Memory.UnmanagedMemory.FreeBytes != 0)
                {
                    unmangedBuffer = new UnmanagedBuffer(640 * 480 * 2);
                    data           = unmangedBuffer.Bytes;
                }
                else
                {
                    data = new byte[640 * 480 * 2];
                }

                ov9655.SetResolution(Ov9655Controller.Resolution.Vga);
                var displayController = Display.DisplayController;

                while (this.isRunning)
                {
                    try {
                        ov9655.Capture(data, 500);

                        displayController.DrawBuffer(0, this.TopBar.ActualHeight, 0, 0, 480, 272 - this.TopBar.ActualHeight, 640, data, 0);
                    }
                    catch {
                    }

                    Thread.Sleep(10);
                }

                if (unmangedBuffer != null)
                {
                    unmangedBuffer.Dispose();
                }
            }
            catch {
            }


            this.isRunning = false;

            return;
        }
예제 #2
0
        private bool DoTestCamera()
        {
            this.UpdateStatusText(" Press Next button to start camera test...", true);
            this.UpdateStatusText(" After tested camera, press any buttons (LDR, APP or MOD)", false);
            this.UpdateStatusText(" to move next test.", false);

            this.AddNextButton();

            while (this.doNext == false && this.isRunning)
            {
                Thread.Sleep(100);
            }

            this.RemoveNextButton();

            if (this.isRunning == false)
            {
                return(false);
            }

            var i2cController = I2cController.FromName(SC20260.I2cBus.I2c1);

            var gpioController = GpioController.GetDefault();

            var ldrButton  = gpioController.OpenPin(SC20260.GpioPin.PE3);
            var appButton  = gpioController.OpenPin(SC20260.GpioPin.PB7);
            var modeButton = gpioController.OpenPin(SC20260.GpioPin.PD7);

            ldrButton.SetDriveMode(GpioPinDriveMode.InputPullUp);
            appButton.SetDriveMode(GpioPinDriveMode.InputPullUp);
            modeButton.SetDriveMode(GpioPinDriveMode.InputPullUp);

            try {
                var ov9655 = new Ov9655Controller(i2cController);

                var id = ov9655.ReadId();

                byte[]          data           = null;
                UnmanagedBuffer unmangedBuffer = null;

                if (Memory.UnmanagedMemory.FreeBytes != 0)
                {
                    unmangedBuffer = new UnmanagedBuffer(640 * 480 * 2);
                    data           = unmangedBuffer.Bytes;
                }
                else
                {
                    data = new byte[640 * 480 * 2];
                }

                ov9655.SetResolution(Ov9655Controller.Resolution.Vga);
                var displayController = Display.DisplayController;

                while (ldrButton.Read() == GpioPinValue.High && appButton.Read() == GpioPinValue.High && modeButton.Read() == GpioPinValue.High && this.isRunning)
                {
                    try {
                        ov9655.Capture(data, 500);

                        displayController.DrawBuffer(0, this.TopBar.ActualHeight, 0, 0, 480, 272 - this.TopBar.ActualHeight, 640, data, 0);
                    }
                    catch {
                    }

                    Thread.Sleep(10);
                }

                if (unmangedBuffer != null)
                {
                    unmangedBuffer.Dispose();
                }
            }
            catch {
                this.UpdateStatusText("Failed. Trying to connect to camera...", true);
            }

            ldrButton.Dispose();
            appButton.Dispose();
            modeButton.Dispose();

            return(true);
        }