Engineering tools · EPC · GS1

RFID കോഡ് കൺവെർട്ടർ

SGTIN-96 (RFID Hex) നും ബാർകോഡിനും (GTIN) + സീരിയൽ നമ്പറിനുമിടയിലുള്ള കൺവെർട്ടർ ടൂൾ. Zebra, Chainway, Impinj, Nextwaves പോലുള്ള സാധാരണ RFID റീഡറുകളുമായി പൊരുത്തപ്പെടുന്നു. GS1 EPC ടാഗ് ഡാറ്റാ സ്റ്റാൻഡേർഡിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

RFID കൺവെർട്ടർ

RFID ഹെക്സ് (SGTIN-96) ഉം GS1 ബാർകോഡും (GTIN) + സീരിയൽ നമ്പറും തമ്മിൽ രൂപാന്തരപ്പെടുത്തുക.

Scheme:SGTIN-9696 bits / Header 0x30

കോഡ് ലോജിക് & ഘട്ടം ഘട്ടമായി

// 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

ഡെവലപ്പർ കോഡ്

നിങ്ങളുടെ പ്രോജക്റ്റിൽ ഈ യൂട്ടിലിറ്റി ലോജിക് ഉപയോഗിക്കുക. താഴെ ഒരു ഭാഷ തിരഞ്ഞെടുക്കുക.

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}

വിശദീകരിക്കുക

SGTIN-96 എന്നത് 6 ഭാഗങ്ങളായി തിരിച്ചിട്ടുള്ള 96-ബിറ്റ് ബൈനറി സ്ട്രിംഗാണ്:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
ഹെഡർ (8 ബിറ്റ്)Bits 0-8 (8)
001100000x30

SGTIN-96 ആയി ഇത് തിരിച്ചറിയുന്ന സാധാരണ പ്രിഫിക്സ് (00110000).

ഫിൽട്ടർ (3 ബിറ്റ്)Bits 8-11 (3)
0113

ഒബ്ജക്റ്റ് തരം (ഉദാ. 1 = റീട്ടെയിൽ). താഴെയുള്ള റഫറൻസ് ഗൈഡ് കാണുക.

വിഭജനം (3 ബിറ്റ്)Bits 11-14 (3)
1015

വിഭജനം 5 എന്നാൽ: കമ്പനി കോഡിന് 24 ബിറ്റുകളും, പ്രൊഡക്റ്റ് കോഡിന് 20 ബിറ്റുകളും എടുക്കുന്നു.

കമ്പനി പ്രിഫിക്സ്Bits 14-38 (24)
1000100001010111110000118935363

GS1 നൽകുന്ന അദ്വിതീയ കമ്പനി കോഡ്.

ഇനം റഫറൻസ്Bits 38-58 (20)
00010111011001011101095837

നിങ്ങളുടെ നിർദ്ദിഷ്ട ഉൽപ്പന്ന കോഡ്.

സീരിയൽ നമ്പർ (38 ബിറ്റ്)Bits 58-96 (38)
000000000000000000000000000000000000011

ഓരോ പ്രത്യേക ഫിസിക്കൽ ഉൽപ്പന്നത്തിനും തനതായ ഐഡൻ്റിഫയർ.

നിങ്ങളുടെ ഫിസിക്കൽ ബാർകോഡിനും ഇലക്ട്രോണിക് പ്രൊഡക്റ്റ് കോഡിനും (EPC) ഇടയിലുള്ള ബന്ധം ദൃശ്യവൽക്കരിക്കുന്നു.

ബാർകോഡിനും (GTIN) SGTIN-96 URI-ക്കും ഇടയിലുള്ള ബന്ധം കാണിക്കുന്ന ഡയഗ്രം
  1. ഘട്ടം 1: EPC സ്കീമയുടെ ബൈനറി ഹെഡർ മൂല്യം നിർണ്ണയിക്കുക. SGTIN-96-ന്റെ ബൈനറി ഹെഡർ മൂല്യം “00110000.” ആണ്.
  2. ഘട്ടം 2: വിഭജന മൂല്യ പട്ടികയിൽ നിന്ന് കമ്പനി പ്രിഫിക്സിലെ അക്കങ്ങളുടെ എണ്ണം അനുസരിച്ച് വിഭജന മൂല്യം തിരഞ്ഞെടുക്കുക.
  3. ഘട്ടം 3: ഫിൽട്ടർ മൂല്യം, വിഭജന മൂല്യം, കമ്പനി പ്രിഫിക്സ്, ഇനം റഫറൻസ്, സീരിയൽ # എന്നിവ ബൈനറി മൂല്യത്തിലേക്ക് പരിവർത്തനം ചെയ്യുക.
  4. ഘട്ടം 4: ബൈനറി EPC രൂപീകരിക്കുന്നതിന് ഹെഡർ, ഫിൽട്ടർ, വിഭജനം, കമ്പനി പ്രിഫിക്സ്, ഇനം റഫറൻസ്, സീരിയൽ # ബൈനറി മൂല്യങ്ങൾ എന്നിവ ക്രമത്തിൽ ചേർക്കുക.

SGTIN-96 റഫറൻസ് ഗൈഡ്

മൂല്യംവിവരണം
0മറ്റുള്ളവയെല്ലാം
മറ്റ് വിഭാഗങ്ങളിൽ ഉൾപ്പെടാത്ത ഇനങ്ങൾക്ക് ഉപയോഗിക്കുന്നു. പൊതുവായ റീട്ടെയിലിൽ ഇത് വളരെ കുറവായി ഉപയോഗിക്കുന്നു.
1വിൽപ്പന കേന്ദ്രം (POS) ട്രേഡ് ഇനം
വിൽപ്പന കേന്ദ്രത്തിൽ വിൽക്കുന്ന സാധാരണ ഉപഭോക്തൃ യൂണിറ്റ്. ഉദാഹരണം: ഒരു ഷാംപൂ ബോട്ടിൽ.
2ഗതാഗതത്തിനായുള്ള മുഴുവൻ കേസ്
ഒന്നിലധികം ഇനങ്ങൾ അടങ്ങിയ ഒരു സാധാരണ ഷിപ്പിംഗ് യൂണിറ്റ്. ഉദാഹരണം: 12 ഷാംപൂ ബോട്ടിലുകളുടെ ഒരു കാർട്ടൺ. 'ഒരു കേസ്' എന്നത് 'ഒരിനം' എന്നിവയിൽ നിന്ന് വേർതിരിക്കുന്നതിന് ലോജിസ്റ്റിക്സിന് ഇത് നിർണായകമാണ്.
3സംവരണം ചെയ്തിരിക്കുന്നു
ഭാവിയിലെ ഉപയോഗത്തിനായി സംവരണം ചെയ്തിരിക്കുന്നു.
4ആന്തരിക പാക്ക് ട്രേഡ് ഇനം ഗ്രൂപ്പിംഗ്
ഒരു മുഴുവൻ കേസിനേക്കാൾ ചെറുതും, സാധാരണയായി ഷെൽഫ് പ്രദർശനത്തിനോ കൈകാര്യം ചെയ്യാനോ ഉപയോഗിക്കുന്നു. ഉദാഹരണം: പ്രധാന കാർട്ടണിനുള്ളിൽ ചുരുക്കിയ 3-പാക്ക്.
5സംവരണം ചെയ്തിരിക്കുന്നു
ഭാവിയിലെ ഉപയോഗത്തിനായി സംവരണം ചെയ്തിരിക്കുന്നു.
6യൂണിറ്റ് ലോഡ്
ഒരു വലിയ ലോജിസ്റ്റിക്കൽ യൂണിറ്റ്, സാധാരണയായി ഒന്നിലധികം കേസുകൾ അടങ്ങിയ ഒരു പാലറ്റ്.
7ഉപഭോക്തൃ യൂണിറ്റിനുള്ളിലെ ഘടകം
ഒരു ഉപഭോക്തൃ യൂണിറ്റിനുള്ളിലെ ഒരു പ്രത്യേക ഭാഗം. ഉദാഹരണം: ഒരു കളിപ്പാട്ടത്തിനുള്ളിലെ ബാറ്ററി കവർ.
മൂല്യംകമ്പനി പ്രിഫിക്സ്ഇനം റഫറൻസ്
040 ബിറ്റുകൾ / 12 അക്കങ്ങൾ4 ബിറ്റുകൾ / 1 അക്കങ്ങൾ
137 ബിറ്റുകൾ / 11 അക്കങ്ങൾ7 ബിറ്റുകൾ / 2 അക്കങ്ങൾ
234 ബിറ്റുകൾ / 10 അക്കങ്ങൾ10 ബിറ്റുകൾ / 3 അക്കങ്ങൾ
330 ബിറ്റുകൾ / 9 അക്കങ്ങൾ14 ബിറ്റുകൾ / 4 അക്കങ്ങൾ
427 ബിറ്റുകൾ / 8 അക്കങ്ങൾ17 ബിറ്റുകൾ / 5 അക്കങ്ങൾ
524 ബിറ്റുകൾ / 7 അക്കങ്ങൾ20 ബിറ്റുകൾ / 6 അക്കങ്ങൾ
620 ബിറ്റുകൾ / 6 അക്കങ്ങൾ24 ബിറ്റുകൾ / 7 അക്കങ്ങൾ

SGTIN-96 പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ

  • ഇത് ടാഗിന്റെ പാക്കേജിംഗ് ലെവൽ സിസ്റ്റത്തിന് നൽകുന്നു. ഒരു സിസ്റ്റം ഒരു 'കേസ്' ടാഗ് (ഫിൽട്ടർ 2) വായിക്കുകയാണെങ്കിൽ, അതിൽ ഒന്നിലധികം ഇനങ്ങൾ അടങ്ങിയിരിക്കുന്നു എന്ന് അത് അറിയുന്നു. ഇത് ഇരട്ട-കണക്കുകൂട്ടൽ (ഉദാഹരണത്തിന്, ഒരു കേസ് ഒരൊറ്റ യൂണിറ്റായി കണക്കാക്കുന്നത്) തടയുകയും സാധുവായ ഷിപ്പിംഗ് പരിശോധന അനുവദിക്കുകയും ചെയ്യുന്നു.
  • കേസ് (ഫിൽട്ടർ 2) ഗതാഗതത്തിനായി ഉപയോഗിക്കുന്ന പ്രാഥമിക ഷിപ്പിംഗ് യൂണിറ്റാണ്. ഇന്നർ പാക്ക് (ഫിൽട്ടർ 4) എന്നത് ആ കേസിനുള്ളിലെ ഒരു ഉപവിഭാഗമാണ്, സാധാരണയായി എളുപ്പത്തിൽ കൈകാര്യം ചെയ്യാനോ പ്രദർശിപ്പിക്കാനോ (ഒരു 24-കാൻ കേസിനുള്ളിലെ 6-പാക്ക് പോലെ). ലോജിസ്റ്റിക്സ് സിസ്റ്റങ്ങൾ കേസുകൾ ട്രാക്ക് ചെയ്യുന്നു; സ്റ്റോർ പ്രവർത്തനങ്ങൾ കാര്യക്ഷമമായി ഇന്നർ പാക്കുകൾ കൈകാര്യം ചെയ്തേക്കാം.
  • ഡീകോഡിംഗ് പരാജയപ്പെടും അല്ലെങ്കിൽ തെറ്റായ ബാർകോഡ് ഉണ്ടാക്കും. വിഭജനം കമ്പനി പ്രിഫിക്സ് എവിടെ അവസാനിക്കുന്നു, ഇനം റഫറൻസ് എവിടെ തുടങ്ങുന്നു എന്ന് കൃത്യമായി നിർണ്ണയിക്കുന്നു. ഈ 'സ്പ്ലിറ്റ് പോയിന്റ്' തെറ്റാണെങ്കിൽ, നിങ്ങൾ ഉദ്ദേശിച്ചതിനേക്കാൾ വ്യത്യസ്തമായ ഒരു കമ്പനി കോഡ് ലഭിക്കും.
  • Standard GTIN (ബാർകോഡ്) എന്നത് ഉൽപ്പന്ന തരം (ഉദാഹരണത്തിന്, '12oz സോഡ') തിരിച്ചറിയുന്നു. SGTIN-96 ഒരു സീരിയൽ നമ്പർ ചേർക്കുന്നു, ഇത് ഓരോ കാനും ഒരു അദ്വിതീയ ઓળખ നൽകുന്നു. ഇത് ഇനം-തല ട്രാക്കബിലിറ്റി പ്രാപ്തമാക്കുന്നു, ഇത് ഏത് നിർദ്ദിഷ്ട ഇനമാണ് വിറ്റത്, മോഷ്ടിക്കപ്പെട്ടത് അല്ലെങ്കിൽ കാലഹരണപ്പെട്ടത് എന്ന് കൃത്യമായി ട്രാക്ക് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു.
  • അതെ. മുകളിലുള്ള കൺവെർട്ടറിൽ കാണിച്ചിരിക്കുന്നതുപോലെ, SGTIN-96 സ്ട്രിംഗിൽ പൂർണ്ണമായ GTIN-14 അടങ്ങിയിരിക്കുന്നു. സീരിയൽ നമ്പറും, ഹെഡർ വിവരങ്ങളും നീക്കം ചെയ്യുന്നതിലൂടെ, നിങ്ങൾക്ക് യഥാർത്ഥ റീട്ടെയിൽ ബാർകോഡ് പൂർണ്ണമായി പുനർനിർമ്മിക്കാൻ കഴിയും.
  • Header (0x30) എന്നത് GS1 നിർവചിച്ചിട്ടുള്ള ഒരു സാധാരണ 8-ബിറ്റ് പ്രിഫിക്സാണ്. ഇത് ഏതെങ്കിലും RFID റീഡറിനോട് ലളിതമായി പറയുന്നത്: "ഈ ടാഗ് എൻകോഡ് ചെയ്തിരിക്കുന്നത് SGTIN-96 സ്റ്റാൻഡേർഡ് ഉപയോഗിച്ചാണ്." മറ്റ് സ്റ്റാൻഡേർഡുകൾക്കായി മറ്റ് ശീർഷകങ്ങൾ നിലവിലുണ്ട് (പാ for ക്കുകൾക്കായി SSCC അല്ലെങ്കിൽ അസറ്റുകൾക്കായി GIAI പോലെ).