zxing条码扫描库如何解码EAN128条码

How to decode EAN128 barcode with zxing barcode scanning library

我正在尝试使用 zxing 条码扫描库读取 EAN128 条码。我正在像这样在 Xamarin 共享项目中使用它……

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;
    };
}

问题是结果文本属性不包含特殊字符。

我注意到 属性 RawBytesresult (这是一个字节数组)有一个字节 102每个特殊字符的正确位置,但我似乎无法理解其余字节的计算方式。

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

有没有一种方法可以从 属性 RawBytes 中获取带有特殊字符的正确条码文本,或者有一种方法可以配置 zxing 以便 文本 属性包含特殊字符?

您需要设置扫描选项的条码格式

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

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

};