BarcodeScanner.GetDefaultAsync()始终返回null

时间:2017-12-08 10:07:42

标签: c# uwp barcode-scanner

我正在尝试在UWP中为运行Windows 8的Zebra设备(型号TC700J)创建一个简单的应用程序,其中我使用内置的条形码扫描器。

根据我的发现,在Android上进行编程时,有大量的Zebra教程用于访问扫描程序,但是由于Microsoft提供了自己的通用条形码扫描程序API,因此在Windows中没有。 .PointOfService 名称空间。

我目前的代码看起来像这样:

BarcodeScanner scanner;
ClaimedBarcodeScanner claimedScanner;    

scanner = await BarcodeScanner.GetDefaultAsync();

if (scanner != null)
{
    claimedScanner = await scanner.ClaimScannerAsync();
}

问题是if语句永远不会计算为true,因为 GetDefaultAsync 方法总是返回null。

Over here有一个似乎有效的答案,说明它取决于放置 GetDefaultAsync 方法的位置。我试图把它放在所有建议的地方但是没有用。

还有另一种方法, BarcodeScanner.FromIdAsync(),它根据条形码扫描程序的id作为参数发送的字符串表示返回条形码,但我不确定它是否有效这里条码扫描器内置于设备中。

2 个答案:

答案 0 :(得分:1)

似乎Async方法的用法并不合适。

尝试以下代码:

BarcodeScanner scanner;
ClaimedBarcodeScanner claimedScanner;    

scanner = await BarcodeScanner.GetDefaultAsync();

if (scanner != null)
{
    claimedScanner = await scanner.ClaimScannerAsync();
}

更多详情:

https://docs.microsoft.com/en-us/dotnet/csharp/async

https://msdn.microsoft.com/en-us/magazine/jj991977.aspx?f=255&MSPPError=-2147217396

答案 1 :(得分:1)

看看Zebra的网站,TC700J似乎是Windows 10 Mobile IoT Enterprize OS的型号。 该平台是ARM(Qualcomm snapdragon),而不是Intel x86 / x64。

TC70 / TC75触控电脑系列

https://www.zebra.com/us/en/products/mobile-computers/handheld/tc7x-touch-computer-series.html

TC70x操作系统(TC700J)Windows 10移动物联网企业版v1.13.02发行说明

https://www.zebra.com/us/en/support-downloads/software/release-notes/operating-system/tc70x-operating-system-v1-13-02--release-notes.html

例如,如果您的Zebra设备是旧硬件并且Windows Phone 8 / 8.1正在运行,则Windows Phone似乎不支持Windows.Devices.PointOfService命名空间。

在以下文章的评论中描述。 Windows Phone 8.1: Scan Barcodes using Camera

如果您的Zebra设备可以更新到Windows 10移动物联网企业版,请在执行后进行检查。

如果您可以更新它,则可以使用Windows 10的条形码扫描仪示例。

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BarcodeScanner

如果您的设备在Windows 8 for x86上运行,则由于Windows 8.1支持Windows.Devices.PointOfService命名空间,因此如果可能,您需要将操作系统更改为Windows 8.1 / 10.

在这种情况下,您可以使用以下或以上(对于Windows10)样本。

适用于Windows 8.1的条码扫描程序示例

https://code.msdn.microsoft.com/windowsapps/Barcode-scanner-sample-f39aa411

如果您无法更新,请获取Windows上供应商使用BarcodeScanner的软件和文档(电话?)8。