Engineering tools · EPC · GS1

RFID কোড কনভার্টার

SGTIN-96 (RFID Hex) এবং বারকোড (GTIN) + সিরিয়াল নম্বরের মধ্যে কনভার্টার টুল। Zebra, Chainway, Impinj, Nextwaves-এর মতো স্ট্যান্ডার্ড RFID রিডারের সাথে সামঞ্জস্যপূর্ণ। 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 হল 6টি অংশে বিভক্ত একটি 96-বিট বাইনারি স্ট্রিং:

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 (বারকোড) শুধুমাত্র পণ্যের ধরন চিহ্নিত করে (যেমন '330ml সোডা')। SGTIN-96 একটি সিরিয়াল নম্বর যোগ করে, প্রতিটি একক ক্যানকে একটি অনন্য পরিচয় দেয়। এটি আইটেম-লেভেল ট্রেসএবিলিটি সক্ষম করে, আপনাকে ট্র্যাক করতে দেয় exactly কোন নির্দিষ্ট আইটেম বিক্রি, চুরি বা মেয়াদ শেষ হয়েছে।
  • হ্যাঁ। উপরের কনভার্টারে দেখানো হয়েছে, SGTIN-96 স্ট্রিং সম্পূর্ণ GTIN-14 ধারণ করে। সিরিয়াল নম্বর এবং হেডার তথ্য সরিয়ে, আপনি মূল রিটেইল বারকোড নিখুঁতভাবে পুনর্গঠন করতে পারেন।
  • হেডার (0x30) হল GS1 দ্বারা সংজ্ঞায়িত একটি স্ট্যান্ডার্ড 8-বিট প্রিফিক্স। এটি সহজভাবে যেকোনো RFID রিডারকে বলে: "এই ট্যাগ SGTIN-96 স্ট্যান্ডার্ড ব্যবহার করে এনকোড করা হয়েছে।" প্যালেটের জন্য SSCC বা অ্যাসেটের জন্য GIAI-এর মতো অন্যান্য স্ট্যান্ডার্ডের জন্য অন্যান্য হেডার রয়েছে।