Engineering tools · EPC · GS1

RFID कोड कनवर्टर

SGTIN-96 (RFID हेक्स) और बारकोड (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 एक 96-बिट बाइनरी स्ट्रिंग है जिसे 6 भागों में विभाजित किया गया है:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
शीर्षक (8 बिट)Bits 0-8 (8)
001100000x30

मानक उपसर्ग (00110000) जो इसे SGTIN-96 के रूप में पहचानता है।

फ़िल्टर (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-पैक)। लॉजिस्टिक्स सिस्टम केस को ट्रैक करते हैं; स्टोर संचालन कुशलता से इनर पैक को संभाल सकते हैं।
  • डिकोडिंग विफल हो जाएगी या गलत बारकोड उत्पन्न करेगी। पार्टीशन यह निर्धारित करता है कि कंपनी प्रीफ़िक्स कहाँ समाप्त होता है और आइटम संदर्भ कहाँ शुरू होता है। यदि यह 'विभाजन बिंदु' गलत है, तो आपको इच्छित कंपनी कोड से भिन्न प्राप्त होगा।
  • मानक GTIN (बारकोड) केवल उत्पाद प्रकार की पहचान करता है (उदाहरण के लिए, '12oz सोडा')। SGTIN-96 एक सीरियल नंबर जोड़ता है, जो हर एक कैन को एक अद्वितीय पहचान देता है। यह आइटम-स्तर की ट्रेसबिलिटी को सक्षम बनाता है, जिससे आप ट्रैक कर सकते हैं कि वास्तव में कौन सा विशिष्ट आइटम बेचा गया, चोरी हुआ या समाप्त हो गया।
  • हाँ। जैसा कि ऊपर कनवर्टर में दिखाया गया है, SGTIN-96 स्ट्रिंग में संपूर्ण GTIN-14 शामिल है। सीरियल नंबर और हेडर जानकारी को हटाकर, आप मूल खुदरा बारकोड को पूरी तरह से पुनर्गठित कर सकते हैं।
  • हेडर (0x30) GS1 द्वारा परिभाषित एक मानक 8-बिट प्रीफ़िक्स है। यह बस किसी भी RFID रीडर को बताता है: "यह टैग SGTIN-96 मानक का उपयोग करके एन्कोड किया गया है।" अन्य हेडर विभिन्न मानकों के लिए मौजूद हैं (जैसे पैलेट के लिए SSCC या एसेट्स के लिए GIAI)।