コード例 #1
0
        void cam_PreviewFrameAvailable(ICameraCaptureDevice device, object sender)
        {
            if (isProcessing)
            {
                return;
            }

            cameraDevice.PreviewFrameAvailable -= previewFrameHandler;

            isProcessing = true;

            int len = (int)device.PreviewResolution.Width * (int)device.PreviewResolution.Height;

            if (pixels == null)
            {
                pixels = new byte[len];
            }
            device.GetPreviewBufferY(pixels);
            // Byte[] result = new Byte[10000];
            int width  = (int)device.PreviewResolution.Width;
            int height = (int)device.PreviewResolution.Height;

            ThreadArguments ta = new ThreadArguments();

            ta.height = height;
            ta.width  = width;
            ta.pixels = pixels;


            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {
                bw.RunWorkerAsync(ta);
            });
        }
コード例 #2
0
        /// <summary>
        /// Reads input from the user.
        /// </summary>
        /// <param name="obj">The thread arguments.</param>
        private void ReadInput(object obj)
        {
            ThreadArguments localArgs = (ThreadArguments)obj;
            ConsoleKey      key;

            while (!localArgs.Exit)
            {
                key = Console.ReadKey(true).Key;
                switch (key)
                {
                case ConsoleKey.UpArrow:
                    FireOnKeyPressed(InputTypes.Up);
                    break;

                case ConsoleKey.DownArrow:
                    FireOnKeyPressed(InputTypes.Down);
                    break;

                case ConsoleKey.Spacebar:
                    FireOnKeyPressed(InputTypes.Shoot);
                    break;

                case ConsoleKey.C:
                    FireOnKeyPressed(InputTypes.ChangeLayer);
                    break;
                }
            }
        }
コード例 #3
0
        bool SubmitWork(BackgroundWorker worker)
        {
            if (ExecutionProgress > ExecutionHigherBound || GroupsCount < 1)
            {
                return(false);
            }

            var args = new ThreadArguments();

            args.Executable = ExecutablePath;
            args.Config     = ExecutionConfigs[GroupCursor];
            args.Arguments  = ArgumentsTextBox.Text;
            args.Variable   = ExecutionProgress;
            args.GroupIndex = GroupCursor;

            GroupCursor++;
            if (GroupCursor >= GroupsCount)
            {
                GroupCursor        = 0;
                ExecutionProgress += ExecutionStep;
            }

            worker.RunWorkerAsync(args);

            return(true);
        }
コード例 #4
0
            public void StartThread(string destination, int port)
            {
                thread = new Thread(new ParameterizedThreadStart(Run));
                thread.Name = "Client";

                var arguments = new ThreadArguments();
                arguments.destination = destination;
                arguments.port = port;

                thread.Start(arguments);
            }
コード例 #5
0
            public void StartThread(string destination, int port)
            {
                thread      = new Thread(new ParameterizedThreadStart(Run));
                thread.Name = "Client";

                var arguments = new ThreadArguments();

                arguments.destination = destination;
                arguments.port        = port;

                thread.Start(arguments);
            }
コード例 #6
0
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            Byte[]           result = new Byte[10000];
            BackgroundWorker worker = sender as BackgroundWorker;

            ThreadArguments ta = e.Argument as ThreadArguments;

            int resLen = Scanner.MWBscanGrayscaleImage(ta.pixels, ta.width, ta.height, result);

            if (lastTime != null && lastTime.Ticks > 0)
            {
                long timePrev       = lastTime.Ticks;
                long timeNow        = DateTime.Now.Ticks;
                long timeDifference = (timeNow - timePrev) / 10000;
                System.Diagnostics.Debug.WriteLine("frame time: {0}", timeDifference);
            }

            lastTime = DateTime.Now;
            //ignore results shorter than 4 characters for barcodes with weak checksum
            if (resLen > 4 || ((resLen > 0 && Scanner.MWBgetLastType() != Scanner.FOUND_39 && Scanner.MWBgetLastType() != Scanner.FOUND_25_INTERLEAVED && Scanner.MWBgetLastType() != Scanner.FOUND_25_STANDARD)))
            {
                string resultString = System.Text.Encoding.UTF8.GetString(result, 0, resLen);

                int    bcType   = Scanner.MWBgetLastType();
                String typeName = BarcodeHelper.getBarcodeName(bcType);

                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    BarcodeHelper.scannerResult = new ScannerResult();

                    BarcodeHelper.resultAvailable    = true;
                    BarcodeHelper.scannerResult.code = resultString;
                    BarcodeHelper.scannerResult.type = typeName;

                    Byte[] binArray = new Byte[resLen];
                    for (int i = 0; i < resLen; i++)
                    {
                        binArray[i] = result[i];
                    }


                    BarcodeHelper.scannerResult.bytes = binArray;
                    stopCamera();
                    NavigationService.GoBack();
                });
            }
            else
            {
                isProcessing = false;
                cameraDevice.PreviewFrameAvailable += previewFrameHandler;
            }
        }
コード例 #7
0
        void cam_PreviewFrameAvailable(ICameraCaptureDevice device, object sender)
        {
            if (activeThreads >= param_maxThreads || resultDisplayed)
            {
                return;
            }


            if (isClosing)
            {
                return;
            }

            activeThreads++;

            System.Diagnostics.Debug.WriteLine("ActiveThreads: " + activeThreads.ToString());



            isProcessing = true;

            int len = (int)device.PreviewResolution.Width * (int)device.PreviewResolution.Height;

            if (pixels == null)
            {
                pixels = new byte[len];
            }
            device.GetPreviewBufferY(pixels);
            // Byte[] result = new Byte[10000];
            int width  = (int)device.PreviewResolution.Width;
            int height = (int)device.PreviewResolution.Height;

            ThreadArguments ta = new ThreadArguments();

            ta.height = height;
            ta.width  = width;
            ta.pixels = pixels;


            BackgroundWorker bw1 = new BackgroundWorker();

            bw1.WorkerReportsProgress      = false;
            bw1.WorkerSupportsCancellation = false;
            bw1.DoWork += new DoWorkEventHandler(bw_DoWork);
            bw1.RunWorkerAsync(ta);
        }
コード例 #8
0
        private static void CalculatePi(int mode)
        {
            var threads        = new Thread[ThreadsCount];
            var stepsPerThread = _stepCount / ThreadsCount;
            var step           = 1.0 / _stepCount;

            CriticalSection.SetSpinCount(_spinCount);

            for (var i = 0; i < threads.Length; ++i)
            {
                var thread = mode == StrictMode ? new Thread(Calculate) : new Thread(CalculateWithTry);
                threads[i] = thread;
                var threadArguments = new ThreadArguments(i * stepsPerThread, (i + 1) * stepsPerThread, step);
                thread.Start(threadArguments);
            }

            foreach (var thread in threads)
            {
                thread.Join();
            }
        }
コード例 #9
0
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            Byte[]           result = new Byte[10000];
            BackgroundWorker worker = sender as BackgroundWorker;

            ThreadArguments ta = e.Argument as ThreadArguments;

            int resLen = Scanner.MWBscanGrayscaleImage(ta.pixels, ta.width, ta.height, result);

            //ignore positive result if closing is in progress
            if (isClosing)
            {
                resLen = -1;
            }

            if (resLen > 0 && resultDisplayed)
            {
                resLen = -1;
            }

            MWResult mwResult = null;

            if (resLen > 0 && Scanner.MWBgetResultType() == Scanner.MWB_RESULT_TYPE_MW)
            {
                MWResults results = new MWResults(result);

                if (results.count > 0)
                {
                    mwResult = results.getResult(0);
                    result   = mwResult.bytes;
                }
            }

            if (lastTime != null && lastTime.Ticks > 0)
            {
                long timePrev       = lastTime.Ticks;
                long timeNow        = DateTime.Now.Ticks;
                long timeDifference = (timeNow - timePrev) / 10000;
                System.Diagnostics.Debug.WriteLine("frame time: {0}", timeDifference);
            }

            lastTime = DateTime.Now;
            //ignore results shorter than 4 characters for barcodes with weak checksum
            if (mwResult != null && mwResult.bytesLength > 4 || (mwResult != null && mwResult.bytesLength > 0 && mwResult.type != Scanner.FOUND_39 && mwResult.type != Scanner.FOUND_25_INTERLEAVED && mwResult.type != Scanner.FOUND_25_STANDARD))
            {
                resultDisplayed = true;
                String typeName = BarcodeHelper.getBarcodeName(mwResult);

                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    isClosing = true;
                    BarcodeHelper.scannerResult = new ScannerResult();

                    BarcodeHelper.resultAvailable     = true;
                    BarcodeHelper.scannerResult.code  = mwResult.text;
                    BarcodeHelper.scannerResult.type  = BarcodeHelper.getBarcodeName(mwResult);
                    BarcodeHelper.scannerResult.isGS1 = mwResult.isGS1;

                    Byte[] binArray = new Byte[mwResult.bytesLength];
                    for (int i = 0; i < mwResult.bytesLength; i++)
                    {
                        binArray[i] = mwResult.bytes[i];
                    }


                    BarcodeHelper.scannerResult.bytes = binArray;
                    stopCamera();
                    NavigationService.GoBack();

                    isProcessing    = false;
                    resultDisplayed = false;
                });
            }


            else
            {
                isProcessing = false;
            }
            activeThreads--;
        }
コード例 #10
0
        void cam_PreviewFrameAvailable(ICameraCaptureDevice device, object sender)
        {
            if (closeScanner)
            {
                closeScanner = false;
                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    string resultString  = "{\"type\":" + JsonHelper.Serialize("Cancel") + "}";
                    PluginResult pResult = new PluginResult(PluginResult.Status.OK, resultString);
                    pResult.KeepCallback = true;
                    MWBarcodeScanner.mwbScanner.DispatchCommandResult(pResult, MWBarcodeScanner.kallbackID);
                    if (this.NavigationService.CanGoBack)
                    {
                        this.NavigationService.GoBack();
                    }
                    return;
                });
            }

            if (activeThreads >= param_maxThreads || resultDisplayed)
            {
                return;
            }


            if (isClosing)
            {
                return;
            }

            activeThreads++;

            // System.Diagnostics.Debug.WriteLine("ActiveThreads: " + activeThreads.ToString());

            isProcessing = true;

            int len = (int)device.PreviewResolution.Width * (int)device.PreviewResolution.Height;

            if (pixels == null)
            {
                pixels = new byte[len];
            }
            device.GetPreviewBufferY(pixels);
            // Byte[] result = new Byte[10000];
            int width  = (int)device.PreviewResolution.Width;
            int height = (int)device.PreviewResolution.Height;

            ThreadArguments ta = new ThreadArguments();

            ta.height = height;
            ta.width  = width;
            ta.pixels = pixels;


            BackgroundWorker bw1 = new BackgroundWorker();

            bw1.WorkerReportsProgress      = false;
            bw1.WorkerSupportsCancellation = false;
            bw1.DoWork += new DoWorkEventHandler(bw_DoWork);
            bw1.RunWorkerAsync(ta);
        }
コード例 #11
0
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            Byte[]           result = new Byte[10000];
            BackgroundWorker worker = sender as BackgroundWorker;

            ThreadArguments ta = e.Argument as ThreadArguments;

            int resLen = Scanner.MWBscanGrayscaleImage(ta.pixels, ta.width, ta.height, result);

            //ignore positive result if closing is in progress
            if (isClosing)
            {
                resLen = -1;
            }

            if (resLen > 0 && resultDisplayed)
            {
                resLen = -1;
            }

            MWResult mwResult = null;

            if (resLen > 0 && Scanner.MWBgetResultType() == Scanner.MWB_RESULT_TYPE_MW)
            {
                MWResults results = new MWResults(result);

                if (results.count > 0)
                {
                    mwResult = results.getResult(0);
                    result   = mwResult.bytes;
                }
            }

            if (lastTime != null && lastTime.Ticks > 0)
            {
                long timePrev       = lastTime.Ticks;
                long timeNow        = DateTime.Now.Ticks;
                long timeDifference = (timeNow - timePrev) / 10000;
                //System.Diagnostics.Debug.WriteLine("frame time: {0}", timeDifference);
            }

            lastTime = DateTime.Now;
            //ignore results shorter than 4 characters for barcodes with weak checksum
            if (mwResult != null && mwResult.bytesLength > 4 || (mwResult != null && mwResult.bytesLength > 0 && mwResult.type != Scanner.FOUND_39 && mwResult.type != Scanner.FOUND_25_INTERLEAVED && mwResult.type != Scanner.FOUND_25_STANDARD))
            {
                Scanner.MWBsetDuplicate(mwResult.bytes, mwResult.bytesLength);
                resultDisplayed = true;
                String typeName = BarcodeHelper.getBarcodeName(mwResult);

                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    BarcodeHelper.scannerResult = new ScannerResult();

                    BarcodeHelper.resultAvailable     = true;
                    BarcodeHelper.scannerResult.code  = mwResult.text;
                    BarcodeHelper.scannerResult.type  = BarcodeHelper.getBarcodeName(mwResult);
                    BarcodeHelper.scannerResult.isGS1 = mwResult.isGS1;
                    if (mwResult.locationPoints != null)
                    {
                        BarcodeHelper.scannerResult.location = "{\"p1\":{\"x\":" + floatToStrDot(mwResult.locationPoints.p1.x) + ", \"y\":" + floatToStrDot(mwResult.locationPoints.p1.y) + "},"
                                                               + "\"p2\":{\"x\":" + floatToStrDot(mwResult.locationPoints.p2.x) + ", \"y\":" + floatToStrDot(mwResult.locationPoints.p2.y) + "},"
                                                               + "\"p3\":{\"x\":" + floatToStrDot(mwResult.locationPoints.p3.x) + ", \"y\":" + floatToStrDot(mwResult.locationPoints.p3.y) + "},"
                                                               + "\"p4\":{\"x\":" + floatToStrDot(mwResult.locationPoints.p4.x) + ", \"y\":" + floatToStrDot(mwResult.locationPoints.p4.y) + "}}";
                    }
                    else
                    {
                        BarcodeHelper.scannerResult.location = "false";
                    }

                    BarcodeHelper.scannerResult.imageWidth  = mwResult.imageWidth;
                    BarcodeHelper.scannerResult.imageHeight = mwResult.imageHeight;

                    Byte[] binArray = new Byte[mwResult.bytesLength];
                    for (int i = 0; i < mwResult.bytesLength; i++)
                    {
                        binArray[i] = mwResult.bytes[i];
                    }


                    BarcodeHelper.scannerResult.bytes = binArray;

                    stopCamera();

                    string resultString = "{\"code\":" + JsonHelper.Serialize(BarcodeHelper.scannerResult.code) + ","
                                          + "\"type\":" + JsonHelper.Serialize(BarcodeHelper.scannerResult.type) + ","
                                          + "\"bytes\":" + JsonHelper.Serialize(BarcodeHelper.scannerResult.bytes) + ","
                                          + "\"isGS1\":" + JsonHelper.Serialize(BarcodeHelper.scannerResult.isGS1) + ","
                                          + "\"location\":" + BarcodeHelper.scannerResult.location + ","
                                          + "\"imageWidth\":" + BarcodeHelper.scannerResult.imageWidth + ","
                                          + "\"imageHeight\":" + BarcodeHelper.scannerResult.imageHeight
                                          + "}";
                    PluginResult pResult = new PluginResult(PluginResult.Status.OK, resultString);
                    pResult.KeepCallback = true;
                    MWBarcodeScanner.mwbScanner.DispatchCommandResult(pResult, MWBarcodeScanner.kallbackID);
                    if (param_CloseScannerOnDecode)
                    {
                        isClosing = true;
                        if (isPage)
                        {
                            NavigationService.GoBack();
                        }
                        else
                        {
                            MWBarcodeScanner.mwbScanner.stopScanner("");
                        }
                        resultDisplayed = false;
                    }

                    isProcessing = false;
                });
            }
            else
            {
                isProcessing = false;
            }
            activeThreads--;
        }
コード例 #12
0
        void cam_PreviewFrameAvailable(ICameraCaptureDevice device, object sender)
        {

            if (closeScanner) {
                closeScanner = false;
                Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                   
                    string resultString = "{\"type\":" + JsonHelper.Serialize("Cancel") + "}";
                    PluginResult pResult = new PluginResult(PluginResult.Status.OK, resultString);
                    pResult.KeepCallback = true;
                    MWBarcodeScanner.mwbScanner.DispatchCommandResult(pResult, MWBarcodeScanner.kallbackID);
                    if (this.NavigationService.CanGoBack) { 
                        this.NavigationService.GoBack();
                    }
                   return;
               });
            }

            if (activeThreads >= param_maxThreads || resultDisplayed)
            {
                return;
            }


            if (isClosing)
            {
                return;
            }

            activeThreads++;

           // System.Diagnostics.Debug.WriteLine("ActiveThreads: " + activeThreads.ToString());

            isProcessing = true;

            int len = (int)device.PreviewResolution.Width * (int)device.PreviewResolution.Height;
            if (pixels == null)
                pixels = new byte[len];
            device.GetPreviewBufferY(pixels);
            // Byte[] result = new Byte[10000];
            int width = (int)device.PreviewResolution.Width;
            int height = (int)device.PreviewResolution.Height;

            ThreadArguments ta = new ThreadArguments();
            ta.height = height;
            ta.width = width;
            ta.pixels = pixels;


            BackgroundWorker bw1 = new BackgroundWorker();
            bw1.WorkerReportsProgress = false;
            bw1.WorkerSupportsCancellation = false;
            bw1.DoWork += new DoWorkEventHandler(bw_DoWork);
            bw1.RunWorkerAsync(ta);

        }
コード例 #13
0
        void cam_PreviewFrameAvailable(ICameraCaptureDevice device, object sender)
        {

            if (activeThreads >= param_maxThreads || resultDisplayed)
            {
                return;
            }


            if (isClosing)
            {
                return;
            }

            activeThreads++;

            System.Diagnostics.Debug.WriteLine("ActiveThreads: " + activeThreads.ToString());

           

            

            isProcessing = true;

            int len = (int)device.PreviewResolution.Width * (int)device.PreviewResolution.Height;
            if (pixels == null)
                pixels = new byte[len];
            device.GetPreviewBufferY(pixels);
            // Byte[] result = new Byte[10000];
            int width = (int)device.PreviewResolution.Width;
            int height = (int)device.PreviewResolution.Height;

            ThreadArguments ta = new ThreadArguments();
            ta.height = height;
            ta.width = width;
            ta.pixels = pixels;


            BackgroundWorker bw1 = new BackgroundWorker();
            bw1.WorkerReportsProgress = false;
            bw1.WorkerSupportsCancellation = false;
            bw1.DoWork += new DoWorkEventHandler(bw_DoWork);
            bw1.RunWorkerAsync(ta);

        }
コード例 #14
0
        void cam_PreviewFrameAvailable(ICameraCaptureDevice device, object sender)
        {

            if (isProcessing)
            {
                return;
            }

            cameraDevice.PreviewFrameAvailable -= previewFrameHandler;

            isProcessing = true;

            int len = (int)device.PreviewResolution.Width * (int)device.PreviewResolution.Height;
            if (pixels == null)
                pixels = new byte[len];
            device.GetPreviewBufferY(pixels);
            // Byte[] result = new Byte[10000];
            int width = (int)device.PreviewResolution.Width;
            int height = (int)device.PreviewResolution.Height;

            ThreadArguments ta = new ThreadArguments();
            ta.height = height;
            ta.width = width;
            ta.pixels = pixels;


            Deployment.Current.Dispatcher.BeginInvoke(delegate()
            {

                bw.RunWorkerAsync(ta);
            });

        }
コード例 #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ControlPlayer"/> class.
 /// </summary>
 public ControlPlayer()
 {
     this.workerThreadArguments = new ThreadArguments();
 }