我无法使用 ZXing.Net.Maui 检测运输标签条形码

问题描述 投票:0回答:1

在我的 .NET Maui 8.0 移动应用程序中,我需要能够扫描条形码。我正在使用 NuGet 包ZXing.Net.Maui。我根据他们的 Git 页面设置了一切。

我的设置

我添加了 NuGet 包

ZXing.Net.MAUI
ZXing.Net.MAUI.Controls
,将
.UseBarcodeReader()
添加到了
CreateMauiApp
中的构建器,并在 XAML 中使用该控件,如下所示:

<Frame Grid.Row="3"
       Padding="0">
    <zxing:CameraBarcodeReaderView x:Name="cameraBarcodeReaderView"
                                   BarcodesDetected="BarcodesDetected" />
</Frame>

对 zxing 的 XAML 引用定义为

xmlns:zxing="clr-namespace:ZXing.Net.Maui.Controls;assembly=ZXing.Net.MAUI.Controls"

在页面的代码隐藏类中,我在调用

InitializeComponent()
之后立即使用以下代码来设置构造函数中的选项。

cameraBarcodeReaderView.Options = new BarcodeReaderOptions
{
    Formats = BarcodeFormats.All,
    AutoRotate = true,
    Multiple = true,
    TryHarder = true,
    TryInverted = true
};

同一类中的以下函数处理检测到的条形码。

private void BarcodesDetected(object sender, BarcodeDetectionEventArgs e)
{
    _logService?.LogInfo($"{this}.BarcodesDetected > {nameof(sender)} = {sender}, {nameof(e)} = [{e}]");

    foreach (var barcode in e.Results)
    {
        _logService?.LogInfo($"{this}.BarcodesDetected > {nameof(sender)} = {sender}, {nameof(e)} = [{e}] > Barcode: {barcode.Format} -> {barcode.Value}");

        _viewModel.ProcessScan(new ScanResult(ScanSource.BarcodeScan, barcode.Value, barcode.Raw));
    }
}

视图模型然后处理扫描。

我的问题

我们需要为应用程序的不同模块支持不同类型的条形码。对于使用像

Code 128
这样的一维条形码的模块来说,效果非常好!没有抱怨,一切正常!

但是,我无法扫描任何 FedEx 运输标签条形码。这些是二维条形码,根据网站的说法,它们是

PDF417
条形码。我没有收到他们的任何活动。如果我将手机进一步向下移动到运输标签上一维条形码的位置,它就会被正确检测到。然而,对我们来说很重要的二维二维却没有被检测到。

我尝试过的

我尝试在不同位置(例如页面的构造函数)或 Loaded 事件中设置条形码扫描仪视图的选项,但它永远不会触发二维条形码。我还尝试将格式设置更改为

BarcodeFormats.TwoDimensional
BarcodeFormat.Pdf417
,但我没有运气。

我认为这只是一个设置错误,但我错过了什么?

maui zxing barcode-scanner zxing.net
1个回答
0
投票

看起来您已正确设置所有内容,但 PDF417 条形码是 ZXing 的一个已知挑战。与 Code 128 等简单格式不同,ZXing 由于密度和尺寸的原因,常常难以处理 PDF417 等复杂的二维条码。

您可以尝试设置格式:直接使用

BarcodeFormats.Pdf417
而不是
BarcodeFormats.All
。另外,PDF417条码通常需要清晰的焦点和良好的照明,因此您可以尝试在不同的环境下扫描。

您可能会考虑商业替代方案,例如 Scanbot SDK(免责声明:我为他们工作)。它专为 PDF417 等复杂条形码而构建,并由企业物流应用程序使用。

您可以在演示应用程序中快速检查您要扫描的代码是否可以被它读取

© www.soinside.com 2019 - 2024. All rights reserved.