首页 > 解决方案 > 如何用zxing条码扫描库解码EAN128条码

问题描述

我正在尝试使用 zxing 条码扫描库读取 EAN128 条码。而且我在这样的 Xamarin 共享项目中使用它……</p>

private async void OnButtonForBarcodeReadPressed(object sender, EventArgs e)
{
    ZXingScannerPage scannerPage = new ZXingScannerPage();
    scannerPage.OnScanResult += (result) =>
    {
        scannerPage.IsScanning = false;
        var rawBytes = result.RawBytes;
        var barcodeType = result.BarcodeFormat.ToString();
        var barcodeText = result.Text;
    };
}

问题是结果的Text属性不包含特殊字符。

我注意到结果的属性RawBytes是一个字节数组)在每个特殊字符的正确位置都有一个字节 102,但我似乎无法理解其余字节是如何计算的。

这是一个例子。我生成了这个 EAN128 条形码(21)500600(11)201201。我是使用在线条形码生成器完成的,所以我确信在正确的位置有一个特殊字符!当我用 zxing 扫描它时,结果的Text属性是“2150060011201201”,长度正好是 16 个字符,因此不包含特殊字符。这RawBytes属性中字节数组的图像。正如您所看到的,在每个应用程序标识符之前都有一个字节 102。但其余的似乎有点。当你在条形码中添加一个字母时,它会更加混乱。

有没有办法从属性RawBytes获取带有特殊字符的正确条形码文本,或者配置 zxing 以使Text属性包含特殊字符?

标签: xamarinxamarin.formsbarcodezxingbarcode-scanner

解决方案


您需要设置 ScanningOptions 的BarcodeFormat

var options = new ZXing.Mobile.MobileBarcodeScanningOptions
{
    PossibleFormats = new List<ZXing.BarcodeFormat>() {
          ZXing.BarcodeFormat.CODE_128
    },

    ryHarder = true,
    AssumeGS1 = true,
    AutoRotate = true,

};

推荐阅读