Xamarin Forms - ZXing Scan PDF417 Штрих-код - Как декодировать результаты.Текст - PullRequest
0 голосов
/ 21 октября 2019

Я успешно отсканировал штрих-код 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);
        }

Я могу получить результаты Text в методе Handle_OnScanResult, но теперь я хочу преобразовать это в объект.

Вот возвращаемая строка:

"@ \ n \ x1e \ rANSI 636000090002DL00410278ZV03190008DLDAQT64235789 \ nDCSSAMPLE \ nDDEN \ nDACMICHAEL \ nDDJO \ nDDNND \ nDDNN\ nDCDPH \ nDBD06062016 \ nDBB06061986 \ nDBA12102024 \ nDBC1 \ nDAU068 в \ nDAYBRO \ nDAG2300 WEST BROAD STREET \ nDAIRICHMOND \ nDAJVA \ nDAK232690000 \ nDCF2424244747474786102204 \ nDCGUSA \ nDCK123456789 \ nDDAF \ nDDB06062008 \ nDDC06062009 \ nDDD1 \ rZVZVA01 \ г "

1012*

С этого штрих-кода:

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

1 Ответ

0 голосов
/ 21 октября 2019

нет смысла сначала конвертировать в 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
    }
  }
}
...