RFID ኮድ መቀየሪያ

SGTIN-96 (RFID Hex) እና ባርኮድ (GTIN) + ተከታታይ ቁጥር መካከል ያለው የመቀየሪያ መሳሪያ። እንደ ZebraChainwayImpinjNextwaves ካሉ መደበኛ RFID አንባቢዎች ጋር ተኳሃኝ። በGS1 EPC Tag Data Standard ላይ የተመሰረተ።

RFID መቀየሪያ

የኮድ አመክንዮ እና ደረጃ በደረጃ

// 1. Binary Conversion

src = bin(0x) // = "?"

// 2. Extract Fields (Bit Slice)

header = src[0:8] → "00110000""?" (?)
filter = src[8:11] → "..."?
partition = src[11:14] → "..."?

// 3. Determine Partition Rule (Partition ?)

rule = PARTITIONS[?]
// Company Bits: ?, Item Bits: ?

// 4. Extract Company & Item

company = src[14:14] → "..."?
itemRef = src[14:14] → "..."?
serial = src[14:96] → "..."?

የገንቢ ኮድ

ይህን የፍጆታ አመክንዮ በፕሮጀክትዎ ውስጥ ይጠቀሙ። ከዚህ በታች ቋንቋ ይምረጡ።

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 & GTINን መረዳት

የእርስዎን አካላዊ ባርኮድ እና የኤሌክትሮኒክስ ምርት ኮድ (EPC) መካከል ያለውን ግንኙነት ማሳየት።

በባርኮድ (GTIN) እና በ SGTIN-96 URI መካከል ያለውን ግንኙነት የሚያሳይ ሥዕላዊ መግለጫ

SGTIN-96 በ 6 ክፍሎች የተከፈለ የ96-ቢት የሁለትዮሽ ሕብረቁምፊ ነው:

HDR
FLT
PRT
COMPANY
ITEM
SERIAL (38)

ዝርዝር ትንተና (ቢት በቢት)

ርዕስ (8 ቢት)Bits 0-8 (8)
00110000

ይህንን እንደ SGTIN-96 የሚለይ መደበኛ ቅድመ ቅጥያ (00110000)።

ማጣሪያ (3 ቢት)Bits 8-11 (3)
...

የነገር አይነት (ለምሳሌ 1 = የችርቻሮ ችርቻሮ)። ከዚህ በታች ያለውን የማጣቀሻ መመሪያ ይመልከቱ።

ክፍልፋይ (3 ቢት)Bits 11-14 (3)
...

ክፍልፋይ X ማለት፡ የኩባንያ ኮድ Y ቢት ይወስዳል፣ የምርት ኮድ Z ቢት ይወስዳል።

የኩባንያ ቅድመ ቅጥያBits 14-0 (0)
...

በ GS1 የተመደበ ልዩ የኩባንያ ኮድ።

የእቃ ማጣቀሻBits 0-0 (0)
...

የእርስዎ የተወሰነ የምርት ኮድ።

ተከታታይ ቁጥር (38 ቢት)Bits 0-96 (38)
...

ለእያንዳንዱ የተወሰነ አካላዊ ምርት ልዩ መለያ።

የማስገባት አመክንዮ (ደረጃ በደረጃ)

  1. ደረጃ 1፡ ለEPC እቅድ የሁለትዮሽ የራስጌ እሴትን ይወስኑ። ለSGTIN-96 የሁለትዮሽ የራስጌ እሴት “00110000” ነው።
  2. ደረጃ 2፡ ከክፍልፋይ እሴት ሠንጠረዥ ውስጥ ባለው የኩባንያ ቅድመ ቅጥያ ውስጥ ባሉት አሃዞች ብዛት ላይ በመመስረት የክፍልፋይ እሴትን ይምረጡ።
  3. ደረጃ 3፡ የማጣሪያ እሴትን፣ የክፍልፋይ እሴትን፣ የኩባንያ ቅድመ ቅጥያን፣ የንጥል ማጣቀሻን እና ተከታታይ #ን ወደ ሁለትዮሽ እሴት ይለውጡ።
  4. ደረጃ 4፡ የሁለትዮሽ EPCን ለመመስረት ራስጌን፣ ማጣሪያን፣ ክፍልፋይን፣ የኩባንያ ቅድመ ቅጥያን፣ የንጥል ማጣቀሻን እና ተከታታይ # ሁለትዮሽ እሴቶችን በቅደም ተከተል ያገናኙ።

SGTIN-96 የማጣቀሻ መመሪያ

Fየእሴት ማጣሪያ (3 ቢት)

ዋጋመግለጫ
0
ሌሎች ሁሉ
ከሌሎች ምድቦች ጋር የማይስማሙ እቃዎችን ለመጠቀም። በአጠቃላይ የችርቻሮ ንግድ እምብዛም ጥቅም ላይ አይውልም።
1
የሽያጭ ቦታ (POS) የንግድ ንጥል
በሽያጭ ቦታ የሚሸጠው መደበኛ የሸማች ክፍል. ምሳሌ፡ አንድ የሻምፑ ጠርሙስ።
2
ለማጓጓዝ ሙሉ ሣጥን
በርካታ እቃዎችን የያዘ መደበኛ የመላኪያ ክፍል. ምሳሌ፡ የ12 የሻምፑ ጠርሙሶች ካርቶን። 'አንድ ሣጥን' ከ'አንድ ንጥል' ለመለየት ለሎጂስቲክስ ወሳኝ ነው።
3
የተያዘ
ለወደፊት አገልግሎት የተያዘ።
4
የውስጥ ጥቅል የንግድ ንጥል ስብስብ
ከሙሉ ሣጥን ያነሰ ስብስብ፣ ብዙ ጊዜ ለመደርደሪያ ማሳያ ወይም አያያዝ። ምሳሌ፡ በዋናው ካርቶን ውስጥ ያለ ባለ 3-ጥቅል በሙቀት የታሸገ።
5
የተያዘ
ለወደፊት አገልግሎት የተያዘ።
6
የክፍል ጭነት
ትልቅ የሎጂስቲክስ ክፍል፣ በተለምዶ በርካታ ሳጥኖችን የያዘ ፓሌት።
7
በተጠቃሚ ክፍል ውስጥ ያለ አካል
በተጠቃሚ ክፍል ውስጥ ያለ የተወሰነ ክፍል. ምሳሌ፡ በአሻንጉሊት ውስጥ ያለው የባትሪ ሽፋን።

Pየክፍልፋይ ሠንጠረዥ (3 ቢት)

ዋጋ
የኩባንያ ቅድመ ቅጥያ
(ቢትስ / አሃዞች)
የእቃ ማጣቀሻ
(ቢትስ / አሃዞች)
040 / 124 / 1
137 / 117 / 2
234 / 1010 / 3
330 / 914 / 4
427 / 817 / 5
524 / 720 / 6
620 / 624 / 7

SGTIN-96 በተደጋጋሚ የሚጠየቁ ጥያቄዎች