【发布时间】: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