Converter ng RFID Code
Converter ng RFID
Mag-convert sa pagitan ng RFID Hex (SGTIN-96) at GS1 Barcode (GTIN) + Serial Number.
EPC URIs
Code Logic & Hakbang-Hakbang
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Kodigo ng Developer
Gamitin ang utility logic na ito sa iyong proyekto. Pumili ng wika sa ibaba.
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}Ipaliwanag
Ang SGTIN-96 ay isang 96-bit binary string na nahahati sa 6 na bahagi:
001100000x30Karaniwang prefix (00110000) na nagpapakilala nito bilang SGTIN-96.
0113Uri ng bagay (hal. 1 = Retail Retail). Tingnan ang Reference Guide sa ibaba.
1015Ang Partition 5 ay nangangahulugan na: Ang Company Code ay kumukuha ng 24 bits, ang Product Code ay kumukuha ng 20 bits.
1000100001010111110000118935363Natatanging code ng kumpanya na itinalaga ng GS1.
00010111011001011101095837Ang iyong partikular na code ng produkto.
000000000000000000000000000000000000011Natatanging identifier para sa bawat partikular na pisikal na produkto.
Pag-unawa sa SGTIN & GTIN
Pagpapakita ng ugnayan sa pagitan ng iyong pisikal na barcode at ang electronic product code (EPC).

Encoding Logic (Hakbang-Hakbang)
- Hakbang 1: Tukuyin ang binary header value para sa EPC schema. Ang binary header value para sa SGTIN-96 ay “00110000.”
- Hakbang 2: Piliin ang Partition Value batay sa bilang ng mga digit sa Company Prefix mula sa Partition Value Table.
- Hakbang 3: I-convert ang Filter Value, Partition Value, Company Prefix, Item Reference, at Serial # sa binary value.
- Hakbang 4: Pagsama-samahin nang sunud-sunod ang Header, Filter, Partition, Company Prefix, Item Reference, at Serial # binary values upang mabuo ang Binary EPC.
Gabay sa Sanggunian ng SGTIN-96
| Halaga | Paglalarawan |
|---|---|
| 0 | Lahat ng Iba Pa Ginagamit para sa mga item na hindi akma sa ibang mga kategorya. Bihirang gamitin sa pangkalahatang retail. |
| 1 | Kalakal sa Point of Sale (POS) Ang karaniwang yunit ng consumer na ibinebenta sa Point of Sale. Halimbawa: Isang bote ng shampoo. |
| 2 | Buong Kaso para sa Transportasyon Isang karaniwang yunit ng pagpapadala na naglalaman ng maraming item. Halimbawa: Isang karton ng 12 bote ng shampoo. Kritikal para sa logistik upang makilala ang 'isang kaso' mula sa 'isang item'. |
| 3 | Nakalaan Nakalaan para sa paggamit sa hinaharap. |
| 4 | Pag-grupo ng Kalakal sa Inner Pack Isang pagpapangkat na mas maliit kaysa sa isang buong kaso, kadalasan para sa pagpapakita sa istante o paghawak. Halimbawa: Isang shrink-wrapped 3-pack sa loob ng pangunahing karton. |
| 5 | Nakalaan Nakalaan para sa paggamit sa hinaharap. |
| 6 | Đơn vị tải Isang malaking yunit ng logistical, kadalasang isang pallet na naglalaman ng maraming kaso. |
| 7 | Komponent sa loob ng Consumer Unit Isang partikular na bahagi sa loob ng isang consumer unit. Halimbawa: Ang takip ng baterya sa loob ng isang laruan. |
| Halaga | Prefix ng Kumpanya | Reference ng Item |
|---|---|---|
| 0 | 40 Mga Bits / 12 Mga Digit | 4 Mga Bits / 1 Mga Digit |
| 1 | 37 Mga Bits / 11 Mga Digit | 7 Mga Bits / 2 Mga Digit |
| 2 | 34 Mga Bits / 10 Mga Digit | 10 Mga Bits / 3 Mga Digit |
| 3 | 30 Mga Bits / 9 Mga Digit | 14 Mga Bits / 4 Mga Digit |
| 4 | 27 Mga Bits / 8 Mga Digit | 17 Mga Bits / 5 Mga Digit |
| 5 | 24 Mga Bits / 7 Mga Digit | 20 Mga Bits / 6 Mga Digit |
| 6 | 20 Mga Bits / 6 Mga Digit | 24 Mga Bits / 7 Mga Digit |
Mga Madalas Itanong tungkol sa SGTIN-96
- Sinabi nito sa sistema ang antas ng packaging ng tag. Kung ang isang sistema ay nagbabasa ng isang 'Case' tag (Filter 2), alam nito na naglalaman ito ng maraming item. Pinipigilan nito ang dobleng pagbibilang (hal., pagbibilang ng isang case bilang isang solong yunit lamang) at nagbibigay-daan para sa wastong pag-verify ng pagpapadala.
- Case (Filter 2) ang pangunahing yunit ng pagpapadala na ginagamit para sa transportasyon. Ang Inner Pack (Filter 4) ay isang subdibisyon sa loob ng case na iyon, kadalasan para sa mas madaling paghawak o pagpapakita (tulad ng 6-pack sa loob ng 24-can case). Sinusubaybayan ng mga sistema ng Logistics ang Cases; Maaaring mahusay na hawakan ng mga operasyon ng Tindahan ang Inner Packs.
- Mabibigo ang pag-decode o makagawa ng maling Barcode. Tinutukoy ng Partition kung saan eksaktong nagtatapos ang Company Prefix at nagsisimula ang Item Reference. Kung mali ang 'split point' na ito, makakakuha ka ng ibang Company Code kaysa sa nilalayon.
- Tinutukoy lamang ng Standard GTIN (Barcode) ang uri ng produkto (hal., '12oz Soda'). Nagdaragdag ang SGTIN-96 ng isang Serial Number, na nagbibigay sa bawat solong lata ng natatanging pagkakakilanlan. Pinapagana nito ang item-level traceability, na nagbibigay-daan sa iyong subaybayan kung aling partikular na item ang naibenta, ninakaw, o nag-expire.
- Oo. Gaya ng ipinapakita sa converter sa itaas, ang SGTIN-96 string ay naglalaman ng kumpletong GTIN-14. Sa pamamagitan ng pag-alis ng Serial Number at impormasyon ng header, maaari mong perpektong muling buuin ang orihinal na retail barcode.
- Ang Header (0x30) ay isang karaniwang 8-bit prefix na tinukoy ng GS1. Sinasabi lamang nito sa anumang RFID reader: "Ang tag na ito ay naka-encode gamit ang SGTIN-96 standard." Mayroon pang ibang mga header para sa iba't ibang mga pamantayan (tulad ng SSCC para sa mga pallet o GIAI para sa mga asset).