카테고리 없음

바코드 파싱 메서드

joo_coding 2025. 11. 14. 14:57

맨처음에는 2와 32-0 을 비교했을 때 작은게 2니까

0에서부터 2까지 추출해서 code에 저장하는데

그 추출한값은 01이고, 그 다음에 index에 2가 추가돼

근데 code가 01이면 조건문이 실행돼

14와 32-2 중에 14가 더 작으니까 14만큼을 len에 저장해

index 2부터 14까지 vo.GTIN에 저장해

그리고 index에 14를 추가해 그러면 index는 이제 16이야

        private Vo ParseBarcode(string barcodeData)
        {
            Vo vo = new Vo();

            // FNC1(ASCII 29) 기준으로 분리
            string[] parts = barcodeData.Split('\x1D');  // 바코드에 숨어있는 구분자 기준으로 분리

            foreach (var part in parts)
            {
                if (string.IsNullOrWhiteSpace(part))
                {
                    continue;
                }

                int index = 0;

                while (index < part.Length) // 바코드 길이만큼 반복
                {
                    // code = 식별자
                    string code = part.Substring(index, Math.Min(2, part.Length - index));
                    index += 2;

                    if (code == "01") // GTIN (고정 14자리)
                    {
                        int len = Math.Min(14, part.Length - index);
                        vo.GTIN = part.Substring(index, len);
                        index += len;
                    }
                    else if (code == "17") // 유효기간 (고정 6자리)
                    {
                        int len = Math.Min(6, part.Length - index);
                        vo.Exp = part.Substring(index, len);
                        index += len;
                    }
                    else if (code == "10") // LOT (가변, 나머지 전체)
                    {
                        vo.Lot = part.Substring(index);
                        break;
                    }
                    else if (code == "21") // SERIAL (가변, 나머지 전체)
                    {
                        vo.Serial = part.Substring(index);
                        break;
                    }
                    else
                    {
                        break;
                    }
                }
            }

            return vo;
        }