/// <summary> /// This is the click handler for the 'ScenarioStartScanningInstance1' button. It initiates creation of scanner instance 1. /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// private async void ButtonStartScanningInstance1_Click(object sender, RoutedEventArgs e) { //Get the handle to the default scanner if (await CreateDefaultScannerObjectAsync(BarcodeScannerInstance.Instance1)) { //Claim the scanner if (await ClaimBarcodeScannerAsync(BarcodeScannerInstance.Instance1)) { //add the event handlers claimedBarcodeScannerInstance1.ReleaseDeviceRequested += claimedBarcodeScannerInstance1_ReleaseDeviceRequested; claimedBarcodeScannerInstance1.DataReceived += claimedBarcodeScannerInstance1_DataReceived; claimedBarcodeScannerInstance1.IsDecodeDataEnabled = true; //Enable the Scanner if (await EnableBarcodeScannerAsync(BarcodeScannerInstance.Instance1)) { //Set the UI state ResetUI(); SetUI(BarcodeScannerInstance.Instance1); } } else { if (barcodeScannerInstance1 != null) { barcodeScannerInstance1.Dispose(); barcodeScannerInstance1 = null; } } } }
/// <summary> /// Reset the Scenario state /// </summary> private void ResetTheScenarioState() { if (claimedScanner != null) { // Detach the event handlers claimedScanner.DataReceived -= claimedScanner_DataReceived; claimedScanner.ReleaseDeviceRequested -= claimedScanner_ReleaseDeviceRequested; // Release the Barcode Scanner and set to null claimedScanner.Dispose(); claimedScanner = null; } if (scanner != null) { scanner.Dispose(); scanner = null; } // Reset the UI if we are still the current page. if (Frame.Content == this) { rootPage.NotifyUser("Click the start scanning button to begin.", NotifyType.StatusMessage); this.ScenarioOutputScanData.Text = "No data"; this.ScenarioOutputScanDataLabel.Text = "No data"; this.ScenarioOutputScanDataType.Text = "No data"; // reset the button state ScenarioEndScanButton.IsEnabled = false; ScenarioStartScanButton.IsEnabled = true; } }
/// <summary> /// Close the scanners and stop the preview. /// </summary> private async Task CloseScannerResourcesAsync() { claimedScanner?.Dispose(); claimedScanner = null; selectedScanner?.Dispose(); selectedScanner = null; SoftwareTriggerStarted = false; RaisePropertyChanged(nameof(SoftwareTriggerStarted)); if (IsPreviewing) { if (mediaCapture != null) { await mediaCapture.StopPreviewAsync(); mediaCapture.Dispose(); mediaCapture = null; } // Allow the display to go to sleep. displayRequest.RequestRelease(); IsPreviewing = false; RaisePropertyChanged(nameof(IsPreviewing)); } }
/// <summary> /// Event Handler for Start Scan Button Click. /// Sets up the barcode scanner to be ready to receive the data events from the scan. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void ScenarioStartScanButton_Click(object sender, RoutedEventArgs e) { ScenarioStartScanButton.IsEnabled = false; rootPage.NotifyUser("Acquiring barcode scanner object.", NotifyType.StatusMessage); // create the barcode scanner. scanner = await DeviceHelpers.GetFirstBarcodeScannerAsync(); if (scanner != null) { // after successful creation, list supported symbologies IReadOnlyList <uint> supportedSymbologies = await scanner.GetSupportedSymbologiesAsync(); foreach (uint symbology in supportedSymbologies) { listOfSymbologies.Add(new SymbologyListEntry(symbology)); } // Claim the scanner for exclusive use and enable it so raises DataReceived events. claimedScanner = await scanner.ClaimScannerAsync(); if (claimedScanner != null) { // It is always a good idea to have a release device requested event handler. // If this event is not handled, then another app can claim ownership of the barcode scanner. claimedScanner.ReleaseDeviceRequested += claimedScanner_ReleaseDeviceRequested; // after successfully claiming, attach the datareceived event handler. claimedScanner.DataReceived += claimedScanner_DataReceived; // Ask the platform to decode the data by default. When this is set, the platform // will decode the raw data from the barcode scanner and include in the // BarcodeScannerReport.ScanDataLabel and ScanDataType in the DataReceived event. claimedScanner.IsDecodeDataEnabled = true; // Enable the scanner so it raises DataReceived events. // Do this after adding the DataReceived event handler. await claimedScanner.EnableAsync(); // reset the button state ScenarioEndScanButton.IsEnabled = true; SetActiveSymbologiesButton.IsEnabled = true; rootPage.NotifyUser("Ready to scan. Device ID: " + claimedScanner.DeviceId, NotifyType.StatusMessage); } else { scanner.Dispose(); scanner = null; ScenarioStartScanButton.IsEnabled = true; rootPage.NotifyUser("Claim barcode scanner failed.", NotifyType.ErrorMessage); } } else { ScenarioStartScanButton.IsEnabled = true; rootPage.NotifyUser("Barcode scanner not found. Please connect a barcode scanner.", NotifyType.ErrorMessage); } }
/// <summary> /// Reset the Scenario state /// </summary> private void ResetTheScenarioState() { if (claimedScanner != null) { // Detach the event handlers claimedScanner.DataReceived -= claimedScanner_DataReceived; claimedScanner.ReleaseDeviceRequested -= claimedScanner_ReleaseDeviceRequested; // Release the Barcode Scanner and set to null claimedScanner.Dispose(); claimedScanner = null; } if (scanner != null) { scanner.Dispose(); scanner = null; } // Reset the strings in the UI rootPage.NotifyUser("Click the start scanning button to begin.", NotifyType.StatusMessage); this.ScenarioOutputScanData.Text = "No data"; this.ScenarioOutputScanDataLabel.Text = "No data"; this.ScenarioOutputScanDataType.Text = "No data"; // reset the button state SetActiveSymbologiesButton.IsEnabled = false; ScenarioEndScanButton.IsEnabled = false; ScenarioStartScanButton.IsEnabled = true; // reset symbology list listOfSymbologies.Clear(); }
/// <summary> /// Event Handler for Start Scan Button Click. /// Sets up the barcode scanner to be ready to receive the data events from the scan. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void ScenarioStartScanButton_Click(object sender, RoutedEventArgs e) { ScenarioStartScanButton.IsEnabled = false; rootPage.NotifyUser("Acquiring barcode scanner object.", NotifyType.StatusMessage); // create the barcode scanner. scanner = await DeviceHelpers.GetFirstBarcodeScannerAsync(); if (scanner != null) { // claim the scanner for exclusive use and enable it so that data received events are received. claimedScanner = await scanner.ClaimScannerAsync(); if (claimedScanner != null) { // It is always a good idea to have a release device requested event handler. If this event is not handled, there are chances of another app can // claim ownership of the barcode scanner. claimedScanner.ReleaseDeviceRequested += claimedScanner_ReleaseDeviceRequested; // after successfully claiming, attach the datareceived event handler. claimedScanner.DataReceived += claimedScanner_DataReceived; // Ask the API to decode the data by default. By setting this, API will decode the raw data from the barcode scanner and // send the ScanDataLabel and ScanDataType in the DataReceived event claimedScanner.IsDecodeDataEnabled = true; // enable the scanner. // Note: If the scanner is not enabled (i.e. EnableAsync not called), attaching the event handler will not be any useful because the API will not fire the event // if the claimedScanner has not been Enabled await claimedScanner.EnableAsync(); // after successful claim, list supported symbologies IReadOnlyList <uint> supportedSymbologies = await scanner.GetSupportedSymbologiesAsync(); foreach (uint symbology in supportedSymbologies) { listOfSymbologies.Add(new SymbologyListEntry(symbology)); } // reset the button state ScenarioEndScanButton.IsEnabled = true; rootPage.NotifyUser("Ready to scan. Device ID: " + claimedScanner.DeviceId, NotifyType.StatusMessage); } else { scanner.Dispose(); scanner = null; ScenarioStartScanButton.IsEnabled = true; rootPage.NotifyUser("Claim barcode scanner failed.", NotifyType.ErrorMessage); } } else { ScenarioStartScanButton.IsEnabled = true; rootPage.NotifyUser("Barcode scanner not found. Please connect a barcode scanner.", NotifyType.ErrorMessage); } }
private void Form1_Closing(object sender, CancelEventArgs e) { if (xBCScanner != null) { xBCScanner.Dispose(); } // сохранение рабочих данных (если есть) if (bGoodAvtor == true) { //xNSI.SaveCS(xSm, xPars); xSm.SaveCS(xPars.sDataPath, xNSI.DT[NSI.TBD_DOC].dt.Rows.Count); xNSI.DSSave(xPars.sDataPath); } if (swProt != null) { swProt.Close(); } }