Engineering tools · EPC · GS1

RFID kod konvertori

SGTIN-96 (RFID Hex) va Shtrix-kod (GTIN) + Seriya raqami o'rtasidagi konvertatsiya vositasi. Zebra, Chainway, Impinj, Nextwaves kabi standart RFID o'quvchilari bilan mos keladi. GS1 EPC Tag Data Standard asosida yaratilgan.

RFID Konvertori

RFID Hex (SGTIN-96) va GS1 Shtrix-kod (GTIN) + Seriya raqami o'rtasida konvertatsiya qiling.

Scheme:SGTIN-9696 bits / Header 0x30

Kod mantig'i va bosqichma-bosqich

// 1. Binary Conversion

src = bin(0x3076215F0C5D974000000001) // = "001100000111011000100001010111110000110001011101100101110100000000000000000000000000000000000001"

// 2. Extract Fields (Bit Slice)

header = src[0:8] "00110000" 0x30
filter = src[8:11] "011" 3
partition = src[11:14] "101" 5

// 3. Determine Partition Rule (Partition 5)

rule = PARTITIONS[5]
// Company Bits: 24, Item Bits: 20

// 4. Extract Company, Item & Serial

company = src[14:38] "100010000101011111000011" 8935363
itemRef = src[38:58] "00010111011001011101" 095837
serial = src[58:96] "00000000000000000000000000000000000001" 1

Dasturchi kodi

Ushbu yordamchi mantiqni loyihangizda ishlating. Quyida tilni tanlang.

1// TypeScript / JavaScript SGTIN-96 Utils
2
3export const GS1_PARTITION_TABLE = [
4  { value: 0, partition: 0, companyPrefixBits: 40, itemReferenceBits: 4, companyDigits: 12, itemDigits: 1 },
5  { value: 1, partition: 1, companyPrefixBits: 37, itemReferenceBits: 7, companyDigits: 11, itemDigits: 2 },
6  { value: 2, partition: 2, companyPrefixBits: 34, itemReferenceBits: 10, companyDigits: 10, itemDigits: 3 },
7  { value: 3, partition: 3, companyPrefixBits: 30, itemReferenceBits: 14, companyDigits: 9, itemDigits: 4 },
8  { value: 4, partition: 4, companyPrefixBits: 27, itemReferenceBits: 17, companyDigits: 8, itemDigits: 5 },
9  { value: 5, partition: 5, companyPrefixBits: 24, itemReferenceBits: 20, companyDigits: 7, itemDigits: 6 },
10  { value: 6, partition: 6, companyPrefixBits: 20, itemReferenceBits: 24, companyDigits: 6, itemDigits: 7 },
11];
12
13export function encodeSgtin96(gtin: string, serial: string, filter: number) {
14  gtin = gtin.padStart(14, "0");
15  const p = GS1_PARTITION_TABLE.find(rule => {
16    const cp = parseInt(gtin.slice(1, 1 + rule.companyDigits));
17    const ir = parseInt(gtin[0] + gtin.slice(1 + rule.companyDigits, 13));
18    return cp < (1 << rule.companyPrefixBits) && ir < (1 << rule.itemReferenceBits);
19  });
20  if (!p) throw new Error("Invalid GTIN for SGTIN-96");
21
22  const cpVal = parseInt(gtin.slice(1, 1 + p.companyDigits));
23  const irVal = parseInt(gtin[0] + gtin.slice(1 + p.companyDigits, 13));
24  
25  let b = (0x30).toString(2).padStart(8,"0");
26  b += filter.toString(2).padStart(3,"0");
27  b += p.partition.toString(2).padStart(3,"0");
28  b += cpVal.toString(2).padStart(p.companyPrefixBits,"0");
29  b += irVal.toString(2).padStart(p.itemReferenceBits,"0");
30  b += parseInt(serial).toString(2).padStart(38,"0");
31  return binaryToHex(b);
32}
33
34export function decodeSgtin96(hex: string) {
35  const b = hexToBinary(hex);
36  const pVal = parseInt(b.substring(11, 14), 2);
37  const rule = GS1_PARTITION_TABLE.find(r => r.partition === pVal);
38  if (!rule) throw new Error("Invalid Partition");
39
40  const cp = parseInt(b.substring(14, 14 + rule.companyPrefixBits), 2);
41  const ir = parseInt(b.substring(14 + rule.companyPrefixBits, 14 + rule.companyPrefixBits + rule.itemReferenceBits), 2);
42  const serial = parseInt(b.substring(14 + rule.companyPrefixBits + rule.itemReferenceBits, 96), 2);
43
44  const cpStr = cp.toString().padStart(rule.companyDigits, "0");
45  const irStr = ir.toString().padStart(rule.itemDigits, "0");
46  const gtinCore = irStr[0] + cpStr + irStr.substring(1);
47
48  // Check digit calculation
49  let sum = 0;
50  for (let i = 0; i < 13; i++) {
51    sum += parseInt(gtinCore[i]) * (i % 2 === 0 ? 3 : 1);
52  }
53  const check = (10 - (sum % 10)) % 10;
54  
55  return {
56    gtin: gtinCore + check,
57    serial: serial.toString()
58  };
59}
60
61function binaryToHex(b: string) {
62  let hex = "";
63  for (let i = 0; i < b.length; i += 4) {
64    hex += parseInt(b.substring(i, i + 4), 2).toString(16).toUpperCase();
65  }
66  return hex;
67}
68
69function hexToBinary(h: string) {
70  let bin = "";
71  for (let i = 0; i < h.length; i++) {
72    bin += parseInt(h[i], 16).toString(2).padStart(4, "0");
73  }
74  return bin;
75}

Tushuntirish

SGTIN-96 - 6 qismga bo'lingan 96 bitli ikkilik qatori:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
Sarlavha (8 bit)Bits 0-8 (8)
001100000x30

Ushbu SGTIN-96 sifatida aniqlaydigan standart prefiks (00110000).

Filtr (3 bit)Bits 8-11 (3)
0113

Ob'ekt turi (masalan, 1 = Chakana savdo). Quyidagi Ma'lumotnomaga qarang.

Bo'lim (3 bit)Bits 11-14 (3)
1015

5 bo'limi quyidagilarni anglatadi: Kompaniya kodi 24 bit, Mahsulot kodi 20 bit oladi.

Kompaniya prefiksiBits 14-38 (24)
1000100001010111110000118935363

GS1 tomonidan tayinlangan noyob kompaniya kodi.

Mahsulot ma'lumotnomasiBits 38-58 (20)
00010111011001011101095837

Sizning maxsus mahsulot kodingiz.

Seriya raqami (38 bit)Bits 58-96 (38)
000000000000000000000000000000000000011

Har bir jismoniy mahsulot uchun noyob identifikator.

Jismoniy shtrix-kod va elektron mahsulot kodi (EPC) o'rtasidagi munosabatlarni vizualizatsiya qilish.

Barkod (GTIN) va SGTIN-96 URI o'rtasidagi bog'lanishni ko'rsatadigan diagramma
  1. 1-qadam: EPC sxemasi uchun ikkilik sarlavha qiymatini aniqlang. SGTIN-96 uchun ikkilik sarlavha qiymati “00110000”.
  2. 2-qadam: Bo'lim qiymati jadvalidan Kompaniya prefiksidagi raqamlar soniga asoslanib, Bo'lim qiymatini tanlang.
  3. 3-qadam: Filtr qiymati, Bo'lim qiymati, Kompaniya prefiksi, Mahsulot ma'lumotnomasi va Seriya raqamini ikkilik qiymatga aylantiring.
  4. 4-qadam: Ikkilik EPC ni shakllantirish uchun Sarlavha, Filtr, Bo'lim, Kompaniya prefiksi, Mahsulot ma'lumotnomasi va Seriya raqami ikkilik qiymatlarini ketma-ket qo'shing.

SGTIN-96 ma'lumotnomasi

QiymatTavsif
0Boshqalar
Boshqa toifalarga mos kelmaydigan mahsulotlar uchun ishlatiladi. Umumiy chakana savdoda kamdan-kam qo'llaniladi.
1Savdo nuqtasi (POS) savdo mahsuloti
Savdo nuqtasida sotiladigan standart iste'mol birligi. Misol: bitta shampun shishasi.
2Transport uchun to'liq quti
Bir nechta mahsulotni o'z ichiga olgan standart yuk tashish birligi. Misol: 12 ta shampun shishasi kartoni. Logistika uchun 'bir quti'ni 'bir mahsulot'dan ajratish muhim.
3Zaxiralangan
Kelajakda foydalanish uchun zaxiralangan.
4Ichki paket savdo mahsulotini guruhlash
To'liq qutidan kichikroq guruhlash, ko'pincha tokchada ko'rsatish yoki ishlov berish uchun. Misol: asosiy karton ichidagi shrink-o'ralgan 3-paket.
5Zaxiralangan
Kelajakda foydalanish uchun zaxiralangan.
6Birlik yuk
Katta logistika birligi, odatda bir nechta qutilarni o'z ichiga olgan pallet.
7Iste'mol birligi ichidagi komponent
Iste'mol birligi ichidagi ma'lum bir qism. Misol: O'yinchoq ichidagi batareya qopqog'i.
QiymatKompaniya prefiksiMahsulot ma'lumotnomasi
040 Bitlar / 12 Raqamlar4 Bitlar / 1 Raqamlar
137 Bitlar / 11 Raqamlar7 Bitlar / 2 Raqamlar
234 Bitlar / 10 Raqamlar10 Bitlar / 3 Raqamlar
330 Bitlar / 9 Raqamlar14 Bitlar / 4 Raqamlar
427 Bitlar / 8 Raqamlar17 Bitlar / 5 Raqamlar
524 Bitlar / 7 Raqamlar20 Bitlar / 6 Raqamlar
620 Bitlar / 6 Raqamlar24 Bitlar / 7 Raqamlar

SGTIN-96 Savol-Javoblar

  • Bu tizimga tegning qadoqlash darajasi haqida ma'lumot beradi. Agar tizim 'Quti' tegini (Filter 2) o'qisa, u bir nechta elementni o'z ichiga olishini biladi. Bu ikki marta hisoblashning oldini oladi (masalan, qutini bitta birlik sifatida hisoblash) va haqiqiy yuk tashishni tekshirishga imkon beradi.
  • Quti (Filter 2) - tashish uchun ishlatiladigan asosiy yuk tashish birligi. Ichki o'ram (Filter 4) - bu qutining ichidagi bo'linma bo'lib, odatda osonroq ishlash yoki ko'rsatish uchun (masalan, 24 qutili qutining ichidagi 6-paket). Logistika tizimlari qutilarni kuzatadi; Do'kon operatsiyalari ichki o'ramlarni samarali boshqarishi mumkin.
  • Dekodlash muvaffaqiyatsiz yakunlanadi yoki noto'g'ri shtrix-kodni beradi. Partition kompaniya prefiksi qayerda tugashini va mahsulot ma'lumotnomasi qayerdan boshlanishini aniq belgilaydi. Agar bu 'bo'linish nuqtasi' noto'g'ri bo'lsa, siz mo'ljallanganidan farq qiladigan kompaniya kodini olasiz.
  • Standart GTIN (shtrix-kod) faqat mahsulot turini (masalan, '12oz Soda') aniqlaydi. SGTIN-96 har bir qutiga noyob identifikator berib, seriya raqamini qo'shadi. Bu mahsulot darajasida kuzatuvni yoqadi, bu sizga aynan qaysi mahsulot sotilganini, o'g'irlanganini yoki muddati o'tganini kuzatishga imkon beradi.
  • Ha. Yuqoridagi konvertorda ko'rsatilganidek, SGTIN-96 qatori to'liq GTIN-14 ni o'z ichiga oladi. Seriya raqami va sarlavha ma'lumotlarini olib tashlash orqali siz asl chakana shtrix-kodni mukammal qayta tiklashingiz mumkin.
  • Header (0x30) - GS1 tomonidan belgilangan standart 8-bitli prefiks. U shunchaki har qanday RFID o'quvchiga shunday deydi: "Ushbu teg SGTIN-96 standarti yordamida kodlangan." Boshqa sarlavhalar turli standartlar uchun mavjud (masalan, palletlar uchun SSCC yoki aktivlar uchun GIAI).