Engineering tools · EPC · GS1

RFID کوڈ کنورٹر

SGTIN-96 (RFID ہیکس) اور بارکوڈ (GTIN) + سیریل نمبر کے درمیان کنورٹر ٹول۔ معیاری RFID ریڈرز جیسے Zebra, Chainway, Impinj, Nextwaves کے ساتھ مطابقت رکھتا ہے۔ GS1 EPC ٹیگ ڈیٹا سٹینڈرڈ پر مبنی ہے۔

RFID کنورٹر

RFID Hex (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. پہلا مرحلہ: EPC سکیم کے لیے بائنری ہیڈر ویلیو کا تعین کریں۔ SGTIN-96 کے لیے بائنری ہیڈر ویلیو “00110000” ہے۔
  2. دوسرا مرحلہ: پارٹیشن ویلیو ٹیبل سے کمپنی کے سابقے میں موجود ہندسوں کی تعداد کی بنیاد پر پارٹیشن ویلیو منتخب کریں۔
  3. تیسرا مرحلہ: فلٹر ویلیو، پارٹیشن ویلیو، کمپنی سابقہ، آئٹم ریفرنس، اور سیریل # کو بائنری ویلیو میں تبدیل کریں۔
  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)۔