diff --git a/src/windows/QRReader/Reader.cs b/src/windows/QRReader/Reader.cs index cc145116..e1d5b74b 100644 --- a/src/windows/QRReader/Reader.cs +++ b/src/windows/QRReader/Reader.cs @@ -83,10 +83,17 @@ private async Task GetCameraImage(CancellationToken cancelToken) var videoFrameConfig = new VideoFrame(BitmapPixelFormat.Bgra8, (int)previewProperties.Width, (int)previewProperties.Height); - var videoFrame = await capture.GetPreviewFrameAsync(videoFrameConfig); - - - var result = + VideoFrame videoFrame; + try + { + videoFrame = await capture.GetPreviewFrameAsync(videoFrameConfig); + } + catch (Exception ex) + { + return null; //device not ready + } + + var result = await Task.Run( () => barcodeReader.Decode(videoFrame.SoftwareBitmap), diff --git a/src/windows/QRReader/VideoCapture.cs b/src/windows/QRReader/VideoCapture.cs index 075eb4dd..fe0a3810 100644 --- a/src/windows/QRReader/VideoCapture.cs +++ b/src/windows/QRReader/VideoCapture.cs @@ -33,9 +33,14 @@ private static async Task GetCameras() throw new Exception("No cameras found"); } - var backCamera = cameras.FirstOrDefault((camera) => camera.IsEnabled && camera.EnclosureLocation.Panel == Panel.Back); - var frontCamera = cameras.FirstOrDefault((camera) => camera.IsEnabled && camera.EnclosureLocation.Panel == Panel.Front); + var backCamera = cameras.FirstOrDefault((camera) => camera.IsEnabled && camera.EnclosureLocation?.Panel == Panel.Back); + var frontCamera = cameras.FirstOrDefault((camera) => camera.IsEnabled && camera.EnclosureLocation?.Panel == Panel.Front); + if (backCamera == null && frontCamera == null) + { + backCamera = cameras.FirstOrDefault(information => information.IsEnabled); + } + return new CameraSet { Back = backCamera?.Id ?? "", diff --git a/src/windows/lib/qrScanner.js b/src/windows/lib/qrScanner.js index c79c5181..eec75d70 100644 --- a/src/windows/lib/qrScanner.js +++ b/src/windows/lib/qrScanner.js @@ -233,9 +233,10 @@ qrScanner.enableLight = function () { return init().then(function () { if (statusFlags.lightEnabled) { return generateStatusResponse(); - } + } - statusFlags.lightEnabled = currentVideoCapture.enableLight(); + currentVideoCapture.enableLight(); + statusFlags.lightEnabled = true; if (!statusFlags.lightEnabled) { return Promise.wrapError(errorTypes.LIGHT_UNAVAILABLE); @@ -248,8 +249,10 @@ qrScanner.enableLight = function () { qrScanner.disableLight = function () { if (statusFlags.lightEnabled) { - currentVideoCapture.disableLight(); - } + currentVideoCapture.disableLight(); + + statusFlags.lightEnabled = false; + } return generateStatusResponse();