【问题标题】:ClaimedBarcodeScanner.DataReceived() event as keyboard input for WebView control (UWP)ClaimedBarcodeScanner.DataReceived() 事件作为 WebView 控件 (UWP) 的键盘输入
【发布时间】:2017-10-20 15:05:23
【问题描述】:

我已经成功地为 Honeywell Dolphin 75e 设备编写了一个应用程序,其中包含运行 Windows 10 移动企业版的嵌入式和外部环形扫描仪。

网上有很多关于如何处理 UWP 中的条码扫描器的resources。然而,他们都在扫描一些基于文本的用户控件,如下所示:

private async void ScenarioStartScanButton_Click(object sender, RoutedEventArgs e)
{
    // Add a data receive event handler.
    claimedScanner.DataReceived += claimedScanner_DataReceived;
}

async void claimedScanner_DataReceived(ClaimedBarcodeScanner sender, BarcodeScannerDataReceivedEventArgs args)
{
    // Update the UI with the data received from the scan.
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
    {
        // Read the data from the buffer and convert to string.
        var scanDataLabelReader = DataReader.FromBuffer(args.Report.ScanDataLabel);
        ScenarioOutputScanDataLabel.Text = scanDataLabelReader.ReadString(args.Report.ScanDataLabel.Length);

        var scanDataReader = DataReader.FromBuffer(args.Report.ScanData);
        ScenarioOutputScanData.Text = scanDataReader.ReadString(args.Report.ScanData.Length);

        ScenarioOutputScanDataType.Text = BarcodeSymbologies.GetName(args.Report.ScanDataType);

    }); 
}

但我需要的是扫描仪在我的WebView 控件上充当键盘:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <WebView Source="http://google.co.uk"/>
</Grid>

当我不在我的应用程序中明确使用(不声明)扫描仪并让默认设置像它对任何应用程序一样全局工作时,扫描仪会在我的WebView 中执行我需要的操作。但是由于我必须在我的应用程序中分配/声明不同的扫描仪,我必须让它像键盘一样,这意味着当WebView 内的任何用户输入字段获得焦点时,我只需扫描输入。

Here我发现了一个类似的问题,虽然很容易解决,因为每次扫描只有 URL 中的参数(搜索词)必须不同。

更新:我还考虑了一种解决方法,这样即使我离开应用程序,我的应用程序也会认领扫描仪并保留它。在这种情况下,我可以打开浏览器,导航到我的网络应用程序并使用所需的扫描仪。不幸的是,在我离开应用程序后,除了嵌入式扫描仪之外的所有扫描仪似乎都被丢弃了。即使我没有明确处置它们。

霍尼韦尔提供的测试应用似乎也没有保留这一声明。

【问题讨论】:

  • 我不熟悉声称的条形码扫描仪。但我认为,如果您对 Honeywell Dolphin 75e 设备有疑问,那么联系 Honeywell 的技术支持将是一个更好的选择。他们应该给你快速和专业的建议。
  • 看起来我必须将 XML 扫描配置文件加载到声明的设备中,我应该在 POS 和 Wedge 模式之间进行选择。如果成功,将发布答案。

标签: c# win-universal-app barcode-scanner


【解决方案1】:

好的,看来我现在明白这一切是如何运作的了。对于我所需要的,我不需要创建任何声称并启用特定扫描仪的应用程序,因为它会将扫描仪从 默认 楔形模式转换为 POS 模式。

Dolphin 75e user guide 中描述了这两种模式之间的区别。

运行 Windows 10 IoT Mobile Enterprise 的 Dolphin 75e 型号有两​​种扫描模式,Wedge 模式和 POS 模式。在 Wedge 模式下,条码数据被插入键盘界面,就像条码数据是使用键盘输入的一样。 POS模式实现Microsoft Point of Service interface。在 POS 模式下,条形码数据通过 Microsoft 定义的 API 发送到应用程序。

默认情况下启用扫描楔形模式。 75e 保持楔形模式,直到 POS 应用程序启动并声明扫描仪。 终端仅在 POS 应用程序释放扫描仪声明时才切换回楔形模式。

所以,我只需将scanner config file 放入 /Documents/Profile 文件夹,指定我想在 Wedge 模式下使用的扫描仪。不幸的是,我的 USB HID 环形扫描仪无法进入楔形模式...

请注意,v66.4.0.638 或 v66.4.0.569 中的 USB HID 扫描仪不支持楔形模式。

因此,经过所有这些努力,我发现如果想要将 75e 扫描仪用于自定义 web 应用程序,或者扫描到 Excel 电子表格 - 他唯一的选择是使用嵌入式扫描仪,默认以楔形模式运行。

如果您想使用 USB HID 扫描仪,那么您只能将它用于专门开发的实现 Microsoft 定义的 API 的应用程序。所以基本上,您将只能扫描到特定的用户控件 - 文本块、输入字段 - 如我的第一篇文章所示。

更新:由于版本 66.4.0.718 USB HID 扫描仪也可以在楔形模式下使用!

【讨论】:

  • 根据霍尼韦尔的说法,固件 v66.4.0.718 应该可以解决该问题。
猜你喜欢
  • 1970-01-01
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 2013-03-21
  • 1970-01-01
  • 2021-10-25
  • 2014-12-28
相关资源
最近更新 更多