【问题标题】:Xamarin Forms - ZXing Scan PDF417 Barcode - How to decode Results.TextXamarin Forms - ZXing 扫描 PDF417 条码 - 如何解码 Results.Text
【发布时间】:2020-02-17 18:41:06
【问题描述】:

我已成功扫描驾驶执照中的 PDF417 条码,结果为字符串,我的问题是如何将其解码为对象?以前有人做过吗?

这是我的代码:

public void Scan_Barcode(object sender, EventArgs e)
        {

            var options = new MobileBarcodeScanningOptions
            {
                TryHarder = true,
                CameraResolutionSelector = HandleCameraResolutionSelectorDelegate,
                PossibleFormats = new List<BarcodeFormat> { BarcodeFormat.PDF_417 }
            };


            BarcodeScanView.Options = options;

            BarcodeScanView.IsVisible = true;
            BarcodeScanView.IsScanning = true;
        }

        public CameraResolution HandleCameraResolutionSelectorDelegate(List<CameraResolution> availableResolutions)
        {
            if (availableResolutions == null || availableResolutions.Count < 1)
                return new CameraResolution() { Width = 800, Height = 600 };

            return availableResolutions[availableResolutions.Count - 1];
        }

        public void Handle_OnScanResult(Result result)
        {
            Console.WriteLine(result.Text);
        }

我可以在 Handle_OnScanResult 方法中获取 Text 结果,但现在我想将其转换为对象。

这是返回的字符串:

"@\n\x1e\rANSI 636000090002DL00410278ZV03190008DLDAQT64235789\nDCSSAMPLE\nDDEN\nDACMICHAEL\nDDFN\nDADJOHN\nDDGN\nDCUJR\nDCAD\nDCBK\nDCDPH\nDBD06062016\nDBB060619864\nDBA1\nDAU2102 在\nDAYBRO\nDAG2300 西广 街道\n代里奇蒙德\nDAJVA\nDAK232690000 \nDCF2424244747474786102204\nDCGUSA\nDCK123456789\nDDAF\nDDB06062008\nDDC06062009\nDDD1\rZVZVA01\r"

从此条码:

https://user-images.githubusercontent.com/482138/51589235-b638d500-1ee6-11e9-87f0-5acb9229b9a5.png

这是我尝试将数据放入的自定义类:

public class DriversLicenseClass
    {
        public DriversLicenseClass()
        {
        }

        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime DOB { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string PostalCode { get; set; }
        public string DriversLicenceNumber { get; set; }
        public DateTime Issued { get; set; }
        public DateTime Expiry { get; set; }
        public string DD { get; set; }
        public string Height { get; set; }
    }

【问题讨论】:

  • @Jason 我不明白。
  • 解释所有数据字段是什么
  • 但是如何将其转换为 json @Jason....一旦我能够将其转换为 json,那么我就可以将其转换为对象。

标签: c# xamarin.forms zxing


【解决方案1】:

首先转换为 JSON 确实没有意义。只需将数据解析到您的对象中

//response is the decoded text from the barcode
var data = response.Split('\n');

foreach(var line in data)
{

  if (line.Length > 3) {
    var code = line.Substring(0,3);
    var value = line.Substring(4);

    switch (code) {
      case "DAB":  // last name
        LastName = value;
        break;
      case "DAC":  // first name
        FirstName = value;
        break;
      ... add other cases here
    }
  }
}

【讨论】:

  • 第一个代码子字符串出现错误,因为第一个是“@”
  • 我不知道什么是“错误”。是否有特定的错误代码或消息?是编译器错误还是运行时异常?
  • 您可能应该为少于 3 个字符的行添加测试并跳过它们
猜你喜欢
  • 2020-12-03
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多