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).