맨처음에는 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;
}