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
EPC URIs
کوڈ منطق اور مرحلہ وار
// 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)
1000100001010111110000118935363GS1 کے ذریعہ تفویض کردہ منفرد کمپنی کوڈ۔
آئٹم حوالہBits 38-58 (20)
00010111011001011101095837آپ کا مخصوص پروڈکٹ کوڈ۔
سیریل نمبر (38 بٹ)Bits 58-96 (38)
000000000000000000000000000000000000011ہر مخصوص جسمانی مصنوعات کے لیے منفرد شناخت کنندہ۔
SGTIN اور GTIN کو سمجھنا
اپنے جسمانی بارکوڈ اور الیکٹرانک پروڈکٹ کوڈ (EPC) کے درمیان تعلق کو تصور کرنا۔

انکوڈنگ منطق (مرحلہ وار)
- پہلا مرحلہ: EPC سکیم کے لیے بائنری ہیڈر ویلیو کا تعین کریں۔ SGTIN-96 کے لیے بائنری ہیڈر ویلیو “00110000” ہے۔
- دوسرا مرحلہ: پارٹیشن ویلیو ٹیبل سے کمپنی کے سابقے میں موجود ہندسوں کی تعداد کی بنیاد پر پارٹیشن ویلیو منتخب کریں۔
- تیسرا مرحلہ: فلٹر ویلیو، پارٹیشن ویلیو، کمپنی سابقہ، آئٹم ریفرنس، اور سیریل # کو بائنری ویلیو میں تبدیل کریں۔
- چوتھا مرحلہ: بائنری 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 پیک)۔ لاجسٹکس سسٹم کیسز کو ٹریک کرتے ہیں؛ اسٹور آپریشنز مؤثر طریقے سے اندرونی پیک کو ہینڈل کر سکتے ہیں۔
- ڈی کوڈنگ ناکام ہو جائے گی یا غلط بارکوڈ تیار کرے گی۔ پارٹیشن بالکل متعین کرتا ہے کہ کمپنی کا سابقہ کہاں ختم ہوتا ہے اور آئٹم کا حوالہ کہاں سے شروع ہوتا ہے۔ اگر یہ 'تقسیم نقطہ' غلط ہے، تو آپ کو مطلوبہ کمپنی کوڈ سے مختلف کوڈ ملے گا۔
- معیاری GTIN (بارکوڈ) صرف پروڈکٹ کی قسم کی نشاندہی کرتا ہے (مثال کے طور پر، '12oz سوڈا')۔ SGTIN-96 ایک سیریل نمبر شامل کرتا ہے، جو ہر ایک کین کو ایک منفرد شناخت دیتا ہے۔ یہ آئٹم لیول ٹریسیبلٹی کو فعال کرتا ہے، جس سے آپ بالکل ٹریک کر سکتے ہیں کہ کون سی مخصوص شے فروخت ہوئی، چوری ہوئی، یا ختم ہو گئی۔
- جی ہاں۔ جیسا کہ اوپر والے کنورٹر میں دکھایا گیا ہے، SGTIN-96 سٹرنگ میں مکمل GTIN-14 شامل ہے۔ سیریل نمبر اور ہیڈر کی معلومات کو ہٹا کر، آپ اصل ریٹیل بارکوڈ کو مکمل طور پر دوبارہ بنا سکتے ہیں۔
- ہیڈر (0x30) GS1 کے ذریعہ متعین کردہ ایک معیاری 8 بٹ سابقہ ہے۔ یہ آسانی سے کسی بھی RFID ریڈر کو بتاتا ہے: "یہ ٹیگ SGTIN-96 معیار کا استعمال کرتے ہوئے انکوڈ کیا گیا ہے۔" مختلف معیارات کے لیے دوسرے ہیڈرز موجود ہیں (جیسے پیلیٹس کے لیے SSCC یا اثاثوں کے لیے GIAI)۔