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 అనేది 6 భాగాలుగా విభజించబడిన 96-బిట్ బైనరీ స్ట్రింగ్:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
హెడర్ (8 బిట్)Bits 0-8 (8)
001100000x30

SGTIN-96గా దీన్ని గుర్తించే ప్రామాణిక ఉపసర్గ (00110000).

ఫిల్టర్ (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 వంటివి).