Engineering tools · EPC · GS1

RFID කේත පරිවර්තකය

SGTIN-96 (RFID Hex) සහ බාර්කෝඩ් (GTIN) + අනුක්‍රමික අංකය අතර පරිවර්තක මෙවලම. Zebra, Chainway, Impinj, Nextwaves වැනි ප්‍රමිතීකරණ RFID පඬිවල සමඟ අනුකූල වේ. GS1 EPC Tag Data Standard මත පදනම්ව.

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

S​GTIN-96 ලෙස හඳුනාගැනීමට භාවිතා වන ප්‍රමිතීකරණ ප්‍රිෆික්ස් (00110000).

ෆිල්ටරය (බිට් 3)Bits 8-11 (3)
0113

වස්තු වර්ගය (උදා: 1 = රීටේල් රීටේල්). පහත සඳහන් රෙෆරන්ස් මාර්ගෝපදේශය බලන්න.

පාර්ටිෂන් (බිට් 3)Bits 11-14 (3)
1015

Partition 5 යනු: Company Code එක 24 බිට් ගනනක්, Product Code එක 20 බිට් ගනනක් ගනී.

සමාගමේ ප්‍රිෆික්ස්Bits 14-38 (24)
1000100001010111110000118935363

GS1 විසින් නියම කරන ලද අද්විතීය සමාගම් කේතය.

අයිතම යොමුකිරීමBits 38-58 (20)
00010111011001011101095837

ඔබගේ විශේෂිත නිෂ්පාදන කේතය.

සීරියල් අංකය (බිට් 38)Bits 58-96 (38)
000000000000000000000000000000000000011

සෑම විශේෂිත භෞතික නිෂ්පාදනයක් සඳහා අද්විතීය හැඳුනුම්කාරකය.

ඔබගේ භෞතික බාර්කෝඩ් සහ ඉලෙක්ට්‍රොනික නිෂ්පාදන කේතය (EPC) අතර සම්බන්ධතාවය දර්ශනය කිරීම.

Barcode (GTIN) සහ SGTIN-96 URI අතර සම්බන්ධතාවය පෙන්වන රූපය
  1. පියවර 1: EPC සැකසුම සඳහා බයිනරි ශීර්ෂ අගය තීරණය කරන්න. SGTIN-96 සඳහා බයිනරි ශීර්ෂ අගය “00110000.” වේ.
  2. පියවර 2: Partition Value Table එකෙන් Company Prefix හි අංක ගණන අනුව Partition Value තෝරන්න.
  3. පියවර 3: Filter Value, Partition Value, Company Prefix, Item Reference, සහ Serial # බයිනරි අගයට පරිවර්තනය කරන්න.
  4. පියවර 4: Header, Filter, Partition, Company Prefix, Item Reference, සහ Serial # බයිනරි අගයන් අනුක්‍රමයෙන් එක් කර Binary 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 නිතර අසන ප්‍රශ්න

  • මෙය පද්ධතියට ටැග් එකේ ඇසුරුම් මට්ටම කියා දෙයි. පද්ධතිය 'Case' ටැග් (Filter 2) කියවූ විට, එය බහු අයිතමයන් අඩංගු බව දැනගනී. මෙය ද්විතීයකරණය (උදාහරණයක් ලෙස, කේස් එකක් එකක ලෙස ගණනය කිරීම) වැළැක්වීම සහ වලංගු නැව්ගත කිරීමේ සත්‍යාපනය සලසයි.
  • කේස් (Filter 2) යනු ප්‍රවාහනය සඳහා භාවිතා වන ප්‍රධාන නැව්ගත ඒකකයයි. අභ්‍යන්තර පැක් (Filter 4) යනු එම කේස් තුළ ඇති උපවಿಭාගයක්, සාමාන්‍යයෙන් පහසු හසුරුවීම හෝ ප්‍රදර්ශනය සඳහා (උදා: 24‑කැන් කේස් තුළ 6‑පැක්). ලොජිස්ටික් පද්ධති කේස් ගණන කරයි; ගබඩා මෙහෙයුම් අභ්‍යන්තර පැක් කාර්යක්ෂමව හසුරවයි.
  • ඩිකෝඩ් කිරීම අසාර්ථක වනු ඇත හෝ වැරදි බාර්කෝඩ් එකක් ලබා දේ. Partition සමාගමේ ප්‍රතිකේතය අවසන් වන ස්ථානය සහ අයිතම යොමුකිරීම ආරම්භ වන ස්ථානය නියම කරයි. මෙම 'විභජන බින්දුව' වැරදි නම්, ඔබට අදහස් කළ සමාගම් කේතය වෙනස්ව ලැබේ.
  • සම්මත GTIN (බාර්කෝඩ්) කෙරෙහි නිෂ්පාදන වර්ගය (උදා: '12oz සෝඩා') පමණක් හඳුනාගනී. SGTIN-96 අනුක්‍රමික අංකයක් එක් කරයි, එමඟින් එක් එක් කැන් එකට අද්විතීය හැඳුනුමක් ලැබේ. මෙය අයිතම-මට්ටමේ හඹායෑම සක්‍රිය කරයි, ඔබට විශේෂිත අයිතමය විකුණා ගත්තා, හොරකම් වුණා, හෝ කල් ඉකුත් වුණා යන දේ නිරීක්ෂණය කළ හැක.
  • ඔව්. ඉහත පරිවර්තකයේ පෙන්වා ඇති පරිදි, SGTIN-96 පදය සම්පූර්ණ GTIN-14 අඩංගු වේ. අනුක්‍රමික අංකය සහ ශීර්ෂ තොරතුරු ඉවත් කිරීමෙන්, ඔබට මුල් සිල්ලර බාර්කෝඩ් පූර්ණයෙන්ම නැවත සාදගත හැක.
  • Header (0x30) යනු GS1 විසින් 정의 කරන ලද ප්‍රමිතිය 8-බිට් ප්‍රතිකේතයකි. එය සරලව ඕනෑම RFID රීඩරයකට කියයි: "මෙම ටැග් SGTIN-96 ප්‍රමිතිය භාවිතා කරමින් කේතනය කර ඇත." වෙනත් ප්‍රමිතීන් සඳහා වෙනත් Header පවතී (උදා: පෑලට් සඳහා SSCC හෝ සම්පත් සඳහා GIAI).