Engineering tools · EPC · GS1

Mai Canza Lambar RFID

Kayan aiki na canzawa tsakanin SGTIN-96 (RFID Hex) da Barcode (GTIN) + Lambar Serial. Yana aiki da na'urorin karanta RFID na yau da kullun kamar Zebra, Chainway, Impinj, Nextwaves. Dangane da GS1 EPC Tag Data Standard.

RFID Mai Canjawa

Canjawa tsakanin RFID Hex (SGTIN-96) da GS1 Barcode (GTIN) + Lambar Serial.

Scheme:SGTIN-9696 bits / Header 0x30

Code Logic & Mataki-Mataki

// 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

Lambar Mai Haɓakawa

Yi amfani da wannan dabaru a cikin aikin ku. Zaɓi yare a ƙasa.

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}

Bayyana

SGTIN-96 igiya ce ta binary mai bits 96 wacce aka raba zuwa sassa 6:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
Kai (bit 8)Bits 0-8 (8)
001100000x30

Matsayin prefix (00110000) wanda ke gano wannan a matsayin SGTIN-96.

Tace (bit 3)Bits 8-11 (3)
0113

Nau'in abu (misali 1 = Retail Retail). Dubi Jagorar Tunani a ƙasa.

Raba (bit 3)Bits 11-14 (3)
1015

Raba 5 yana nufin: Lambar Kamfani tana ɗaukar bits 24, Lambar Samfura tana ɗaukar bits 20.

Ƙarin KamfaniBits 14-38 (24)
1000100001010111110000118935363

Lambar kamfani ta musamman da GS1 ya ba da ita.

Manunin AbuBits 38-58 (20)
00010111011001011101095837

Lambarku ta musamman ta samfur.

Lamban Serial (bit 38)Bits 58-96 (38)
000000000000000000000000000000000000011

Mai gano musamman ga kowane takamaiman samfurin jiki.

Nuna alaƙar da ke tsakanin barcode na jiki da lambar samfurin lantarki (EPC).

Zane yana nuna haɗin tsakanin Barcode (GTIN) da SGTIN-96 URI
  1. Mataki na 1: Ƙayyade darajar kanun labarin binary don tsarin EPC. Darajar kanun labarin binary don SGTIN-96 ita ce “00110000.”
  2. Mataki na 2: Zaɓi Darajar Raba bisa ga adadin lambobi a cikin Ƙarin Kamfanin daga Teburin Darajar Raba.
  3. Mataki na 3: Canza Darajar Tace, Darajar Raba, Ƙarin Kamfanin, Manunin Abu, da Serial # zuwa darajar binary.
  4. Mataki na 4: Haɗa a cikin tsari Kanun labari, Tace, Raba, Ƙarin Kamfanin, Manunin Abu, da Serial # darajar binary don samar da Binary EPC.

Jagorar Tunani na SGTIN-96

ƘimaBayanin
0Duk Sauran
Ana amfani da shi don abubuwan da ba su dace da sauran nau'ikan ba. Ba kasafai ake amfani da shi a cikin dillali gaba ɗaya ba.
1Wurin Siyarwa (POS) Kasuwancin Abu
Matsayin naúrar mabukaci da aka sayar a Wurin Siyarwa. Misali: Ƙaramin shamfu guda ɗaya.
2Cikakken Akwati don Sufuri
Matsayin naúrar jigilar kaya wanda ke ɗauke da abubuwa da yawa. Misali: Akwatin kwalabe 12 na shamfu. Mahimmanci ga kayan aiki don bambance 'akwati ɗaya' daga 'abu ɗaya'.
3An tanada
An tanada don amfani a nan gaba.
4Ƙungiyar Kasuwancin Cikin Akwati
Ƙungiya ƙarama fiye da cikakken akwati, galibi don nunin shiryayye ko sarrafawa. Misali: 3-kunshin da aka nannade a cikin babban akwatin.
5An tanada
An tanada don amfani a nan gaba.
6Nauyin Naúrar
Babban rukunin kayan aiki, yawanci pallet mai ɗauke da akwatuna da yawa.
7Kayan aiki a cikin na'urar mai amfani
Wani takamaiman sashi a cikin na'urar mai amfani. Misali: Murfin batir a cikin abin wasa.
ƘimaPrefix na KamfaniNuni na Abu
040 Bits / 12 Lambobi4 Bits / 1 Lambobi
137 Bits / 11 Lambobi7 Bits / 2 Lambobi
234 Bits / 10 Lambobi10 Bits / 3 Lambobi
330 Bits / 9 Lambobi14 Bits / 4 Lambobi
427 Bits / 8 Lambobi17 Bits / 5 Lambobi
524 Bits / 7 Lambobi20 Bits / 6 Lambobi
620 Bits / 6 Lambobi24 Bits / 7 Lambobi

SGTIN-96 Tambayoyin da Ake Yawan Yi

  • Yana gaya wa tsarin matakin marufi na alamar. Idan tsarin ya karanta alamar 'Akwati' (Tace 2), ya san cewa ya ƙunshi abubuwa da yawa. Wannan yana hana ƙidaya sau biyu (misali, ƙidaya akwati a matsayin naúrar guda ɗaya) kuma yana ba da damar ingantaccen tabbatar da jigilar kaya.
  • Akwati (Tace 2) ita ce babban naúrar jigilar kaya da ake amfani da ita don sufuri. Kunshin Ciki (Tace 4) wani yanki ne a cikin wannan akwati, yawanci don sauƙin sarrafawa ko nunawa (kamar fakitin 6 a cikin akwati 24-gwangwani). Tsarin dabaru suna bin diddigin Akwatuna; Ayyukan kantin sayar da kaya na iya sarrafa Kunshin Ciki yadda ya kamata.
  • Ƙaddamarwa zai gaza ko samar da Barcode mara kyau. Rarraba yana ƙayyade ainihin inda Ƙarin Kamfanin ya ƙare kuma Manunin Abu ya fara. Idan wannan 'raba' ba daidai ba ne, za ku sami Lambar Kamfani daban da aka nufa.
  • GTIN (Barcode) na yau da kullun kawai yana gano nau'in samfurin (misali, '12oz Soda'). SGTIN-96 yana ƙara Lambar Serial, yana ba kowane gwangwani guda ɗaya takamaiman asali. Wannan yana ba da damar bin diddigin matakin abu, yana ba ku damar bin diddigin ainihin abin da aka sayar, aka sace, ko ya ƙare.
  • E. Kamar yadda aka nuna a cikin mai juyawa a sama, igiyar SGTIN-96 ta ƙunshi cikakken GTIN-14. Ta hanyar cire Lambar Serial da bayanin kanun labarai, zaku iya sake gina ainihin barcode na siyarwa.
  • Kanun labarai (0x30) shine ma'aunin 8-bit da GS1 ya ayyana. Yana gaya wa kowane mai karanta RFID: "An ɓoye wannan alamar ta amfani da ma'aunin SGTIN-96." Sauran kanun labarai suna wanzu don ma'auni daban-daban (kamar SSCC don pallets ko GIAI don kadarori).