RFID കോഡ് കൺവെർട്ടർ
RFID കൺവെർട്ടർ
RFID ഹെക്സ് (SGTIN-96) ഉം GS1 ബാർകോഡും (GTIN) + സീരിയൽ നമ്പറും തമ്മിൽ രൂപാന്തരപ്പെടുത്തുക.
EPC URIs
കോഡ് ലോജിക് & ഘട്ടം ഘട്ടമായി
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
ഡെവലപ്പർ കോഡ്
നിങ്ങളുടെ പ്രോജക്റ്റിൽ ഈ യൂട്ടിലിറ്റി ലോജിക് ഉപയോഗിക്കുക. താഴെ ഒരു ഭാഷ തിരഞ്ഞെടുക്കുക.
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-ബിറ്റ് ബൈനറി സ്ട്രിംഗാണ്:
001100000x30SGTIN-96 ആയി ഇത് തിരിച്ചറിയുന്ന സാധാരണ പ്രിഫിക്സ് (00110000).
0113ഒബ്ജക്റ്റ് തരം (ഉദാ. 1 = റീട്ടെയിൽ). താഴെയുള്ള റഫറൻസ് ഗൈഡ് കാണുക.
1015വിഭജനം 5 എന്നാൽ: കമ്പനി കോഡിന് 24 ബിറ്റുകളും, പ്രൊഡക്റ്റ് കോഡിന് 20 ബിറ്റുകളും എടുക്കുന്നു.
1000100001010111110000118935363GS1 നൽകുന്ന അദ്വിതീയ കമ്പനി കോഡ്.
00010111011001011101095837നിങ്ങളുടെ നിർദ്ദിഷ്ട ഉൽപ്പന്ന കോഡ്.
000000000000000000000000000000000000011ഓരോ പ്രത്യേക ഫിസിക്കൽ ഉൽപ്പന്നത്തിനും തനതായ ഐഡൻ്റിഫയർ.
SGTIN & GTIN മനസ്സിലാക്കുക
നിങ്ങളുടെ ഫിസിക്കൽ ബാർകോഡിനും ഇലക്ട്രോണിക് പ്രൊഡക്റ്റ് കോഡിനും (EPC) ഇടയിലുള്ള ബന്ധം ദൃശ്യവൽക്കരിക്കുന്നു.

എൻകോഡിംഗ് ലോജിക് (ഘട്ടം ഘട്ടമായി)
- ഘട്ടം 1: EPC സ്കീമയുടെ ബൈനറി ഹെഡർ മൂല്യം നിർണ്ണയിക്കുക. SGTIN-96-ന്റെ ബൈനറി ഹെഡർ മൂല്യം “00110000.” ആണ്.
- ഘട്ടം 2: വിഭജന മൂല്യ പട്ടികയിൽ നിന്ന് കമ്പനി പ്രിഫിക്സിലെ അക്കങ്ങളുടെ എണ്ണം അനുസരിച്ച് വിഭജന മൂല്യം തിരഞ്ഞെടുക്കുക.
- ഘട്ടം 3: ഫിൽട്ടർ മൂല്യം, വിഭജന മൂല്യം, കമ്പനി പ്രിഫിക്സ്, ഇനം റഫറൻസ്, സീരിയൽ # എന്നിവ ബൈനറി മൂല്യത്തിലേക്ക് പരിവർത്തനം ചെയ്യുക.
- ഘട്ടം 4: ബൈനറി EPC രൂപീകരിക്കുന്നതിന് ഹെഡർ, ഫിൽട്ടർ, വിഭജനം, കമ്പനി പ്രിഫിക്സ്, ഇനം റഫറൻസ്, സീരിയൽ # ബൈനറി മൂല്യങ്ങൾ എന്നിവ ക്രമത്തിൽ ചേർക്കുക.
SGTIN-96 റഫറൻസ് ഗൈഡ്
| മൂല്യം | വിവരണം |
|---|---|
| 0 | മറ്റുള്ളവയെല്ലാം മറ്റ് വിഭാഗങ്ങളിൽ ഉൾപ്പെടാത്ത ഇനങ്ങൾക്ക് ഉപയോഗിക്കുന്നു. പൊതുവായ റീട്ടെയിലിൽ ഇത് വളരെ കുറവായി ഉപയോഗിക്കുന്നു. |
| 1 | വിൽപ്പന കേന്ദ്രം (POS) ട്രേഡ് ഇനം വിൽപ്പന കേന്ദ്രത്തിൽ വിൽക്കുന്ന സാധാരണ ഉപഭോക്തൃ യൂണിറ്റ്. ഉദാഹരണം: ഒരു ഷാംപൂ ബോട്ടിൽ. |
| 2 | ഗതാഗതത്തിനായുള്ള മുഴുവൻ കേസ് ഒന്നിലധികം ഇനങ്ങൾ അടങ്ങിയ ഒരു സാധാരണ ഷിപ്പിംഗ് യൂണിറ്റ്. ഉദാഹരണം: 12 ഷാംപൂ ബോട്ടിലുകളുടെ ഒരു കാർട്ടൺ. 'ഒരു കേസ്' എന്നത് 'ഒരിനം' എന്നിവയിൽ നിന്ന് വേർതിരിക്കുന്നതിന് ലോജിസ്റ്റിക്സിന് ഇത് നിർണായകമാണ്. |
| 3 | സംവരണം ചെയ്തിരിക്കുന്നു ഭാവിയിലെ ഉപയോഗത്തിനായി സംവരണം ചെയ്തിരിക്കുന്നു. |
| 4 | ആന്തരിക പാക്ക് ട്രേഡ് ഇനം ഗ്രൂപ്പിംഗ് ഒരു മുഴുവൻ കേസിനേക്കാൾ ചെറുതും, സാധാരണയായി ഷെൽഫ് പ്രദർശനത്തിനോ കൈകാര്യം ചെയ്യാനോ ഉപയോഗിക്കുന്നു. ഉദാഹരണം: പ്രധാന കാർട്ടണിനുള്ളിൽ ചുരുക്കിയ 3-പാക്ക്. |
| 5 | സംവരണം ചെയ്തിരിക്കുന്നു ഭാവിയിലെ ഉപയോഗത്തിനായി സംവരണം ചെയ്തിരിക്കുന്നു. |
| 6 | യൂണിറ്റ് ലോഡ് ഒരു വലിയ ലോജിസ്റ്റിക്കൽ യൂണിറ്റ്, സാധാരണയായി ഒന്നിലധികം കേസുകൾ അടങ്ങിയ ഒരു പാലറ്റ്. |
| 7 | ഉപഭോക്തൃ യൂണിറ്റിനുള്ളിലെ ഘടകം ഒരു ഉപഭോക്തൃ യൂണിറ്റിനുള്ളിലെ ഒരു പ്രത്യേക ഭാഗം. ഉദാഹരണം: ഒരു കളിപ്പാട്ടത്തിനുള്ളിലെ ബാറ്ററി കവർ. |
| മൂല്യം | കമ്പനി പ്രിഫിക്സ് | ഇനം റഫറൻസ് |
|---|---|---|
| 0 | 40 ബിറ്റുകൾ / 12 അക്കങ്ങൾ | 4 ബിറ്റുകൾ / 1 അക്കങ്ങൾ |
| 1 | 37 ബിറ്റുകൾ / 11 അക്കങ്ങൾ | 7 ബിറ്റുകൾ / 2 അക്കങ്ങൾ |
| 2 | 34 ബിറ്റുകൾ / 10 അക്കങ്ങൾ | 10 ബിറ്റുകൾ / 3 അക്കങ്ങൾ |
| 3 | 30 ബിറ്റുകൾ / 9 അക്കങ്ങൾ | 14 ബിറ്റുകൾ / 4 അക്കങ്ങൾ |
| 4 | 27 ബിറ്റുകൾ / 8 അക്കങ്ങൾ | 17 ബിറ്റുകൾ / 5 അക്കങ്ങൾ |
| 5 | 24 ബിറ്റുകൾ / 7 അക്കങ്ങൾ | 20 ബിറ്റുകൾ / 6 അക്കങ്ങൾ |
| 6 | 20 ബിറ്റുകൾ / 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 പോലെ).