Mai Canza Lambar RFID
RFID Mai Canjawa
Canjawa tsakanin RFID Hex (SGTIN-96) da GS1 Barcode (GTIN) + Lambar Serial.
EPC URIs
Code Logic & Mataki-Mataki
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
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:
001100000x30Matsayin prefix (00110000) wanda ke gano wannan a matsayin SGTIN-96.
0113Nau'in abu (misali 1 = Retail Retail). Dubi Jagorar Tunani a ƙasa.
1015Raba 5 yana nufin: Lambar Kamfani tana ɗaukar bits 24, Lambar Samfura tana ɗaukar bits 20.
1000100001010111110000118935363Lambar kamfani ta musamman da GS1 ya ba da ita.
00010111011001011101095837Lambarku ta musamman ta samfur.
000000000000000000000000000000000000011Mai gano musamman ga kowane takamaiman samfurin jiki.
Fahimtar SGTIN & GTIN
Nuna alaƙar da ke tsakanin barcode na jiki da lambar samfurin lantarki (EPC).

Ƙirar Ƙirar (Mataki-Mataki)
- Mataki na 1: Ƙayyade darajar kanun labarin binary don tsarin EPC. Darajar kanun labarin binary don SGTIN-96 ita ce “00110000.”
- Mataki na 2: Zaɓi Darajar Raba bisa ga adadin lambobi a cikin Ƙarin Kamfanin daga Teburin Darajar Raba.
- Mataki na 3: Canza Darajar Tace, Darajar Raba, Ƙarin Kamfanin, Manunin Abu, da Serial # zuwa darajar binary.
- 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
| Ƙima | Bayanin |
|---|---|
| 0 | Duk 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. |
| 1 | Wurin Siyarwa (POS) Kasuwancin Abu Matsayin naúrar mabukaci da aka sayar a Wurin Siyarwa. Misali: Ƙaramin shamfu guda ɗaya. |
| 2 | Cikakken 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'. |
| 3 | An 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. |
| 5 | An tanada An tanada don amfani a nan gaba. |
| 6 | Nauyin Naúrar Babban rukunin kayan aiki, yawanci pallet mai ɗauke da akwatuna da yawa. |
| 7 | Kayan aiki a cikin na'urar mai amfani Wani takamaiman sashi a cikin na'urar mai amfani. Misali: Murfin batir a cikin abin wasa. |
| Ƙima | Prefix na Kamfani | Nuni na Abu |
|---|---|---|
| 0 | 40 Bits / 12 Lambobi | 4 Bits / 1 Lambobi |
| 1 | 37 Bits / 11 Lambobi | 7 Bits / 2 Lambobi |
| 2 | 34 Bits / 10 Lambobi | 10 Bits / 3 Lambobi |
| 3 | 30 Bits / 9 Lambobi | 14 Bits / 4 Lambobi |
| 4 | 27 Bits / 8 Lambobi | 17 Bits / 5 Lambobi |
| 5 | 24 Bits / 7 Lambobi | 20 Bits / 6 Lambobi |
| 6 | 20 Bits / 6 Lambobi | 24 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).