RFID Kood Konverter
RFID Konverter
Teisendamine RFID Hex (SGTIN-96) ja GS1 Vöötkoodi (GTIN) + Seerianumbri vahel.
EPC URIs
Koodi Loogika ja Samm-sammult
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Arendaja Kood
Kasutage seda utiliidi loogikat oma projektis. Valige allpool keel.
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}Selgitus
SGTIN-96 on 96-bitine kahendstring, mis on jagatud 6 ossa:
001100000x30Standardne eesliide (00110000), mis identifitseerib selle kui SGTIN-96.
0113Objekti tüüp (nt 1 = Jaemüügi toode). Vaata allolevat viitejuhendit.
1015Partitsioon 5 tähendab: Ettevõtte Kood võtab 24 bitti, Toote Kood võtab 20 bitti.
1000100001010111110000118935363GS1 poolt määratud ainulaadne ettevõtte kood.
00010111011001011101095837Teie konkreetsed tootekood.
000000000000000000000000000000000000011Kordumatu identifikaator iga konkreetse füüsilise toote jaoks.
SGTIN-i ja GTIN-i Mõistmine
Füüsilise vöötkoodi ja elektroonilise tootekoodi (EPC) vahelise seose visualiseerimine.

Kodeerimise Loogika (Samm-sammult)
- Samm 1: Määratlege EPC skeemi jaoks kahendpäise väärtus. SGTIN-96 binaarpäise väärtus on "00110000".
- Samm 2: Valige Partitsiooni Väärtus, lähtudes Ettevõtte Eesliite numbritest Partitsiooni Väärtuste tabelist.
- Samm 3: Teisendage Filter, Partitsioon, Ettevõtte Eesliide, Toote Viide ja Seerianumber kahendväärtuseks.
- Samm 4: Ühendage järjekorras Päis, Filter, Partitsioon, Ettevõtte Eesliide, Toote Viide ja Seerianumber kahendväärtustena, et moodustada Kahend EPC.
SGTIN-96 Viitejuhend
| Väärtus | Kirjeldus |
|---|---|
| 0 | Kõik Muud Kasutatakse kaupade jaoks, mis ei sobi teistesse kategooriatesse. Üldises jaemüügis harva kasutatud. |
| 1 | Müügikoha (POS) Kaubandusartikkel Standardne tarbijaüksus, mida müügikohas müüakse. Näide: Üksik šampoonipudelitäis. |
| 2 | Täisjuhtum Transpordiks Standardne saatmisüksus, mis sisaldab mitmeid kaupu. Näide: 12 šampoonipudeli kast. Kriitiline logistikale 'ühe juhtumi' ja 'ühe üksuse' eristamiseks. |
| 3 | Reserveeritud Reserveeritud tulevaseks kasutuseks. |
| 4 | Sisemine Pakk Kaubandusartikli Grupeerimine Grupeerimine, mis on väiksem kui täisjuhtum, sageli riiulile või käitlemiseks. Näide: Kilega pakitud 3-pakk peamise kasti sees. |
| 5 | Reserveeritud Reserveeritud tulevaseks kasutuseks. |
| 6 | Ühiku Koormus Suur logistikaüksus, tavaliselt kaubaalune, mis sisaldab mitmeid juhtumeid. |
| 7 | Komponent Tarbija Ühiku Sees Konkreetsed osad tarbijaüksuse sees. Näide: Patareikate mänguasja sees. |
| Väärtus | Ettevõtte Eesliide | Toote Viide |
|---|---|---|
| 0 | 40 Bitid / 12 Numbrid | 4 Bitid / 1 Numbrid |
| 1 | 37 Bitid / 11 Numbrid | 7 Bitid / 2 Numbrid |
| 2 | 34 Bitid / 10 Numbrid | 10 Bitid / 3 Numbrid |
| 3 | 30 Bitid / 9 Numbrid | 14 Bitid / 4 Numbrid |
| 4 | 27 Bitid / 8 Numbrid | 17 Bitid / 5 Numbrid |
| 5 | 24 Bitid / 7 Numbrid | 20 Bitid / 6 Numbrid |
| 6 | 20 Bitid / 6 Numbrid | 24 Bitid / 7 Numbrid |
SGTIN-96 Korduma Kippuvad Küsimused
- See ütleb süsteemile märgi pakenditaseme. Kui süsteem loeb 'Juhtumi' märki (Filter 2), teab see, et see sisaldab mitmeid kaupu. See takistab topeltlugemist (nt juhtumi lugemist üheainsa ühikuna) ja võimaldab kehtivat saatmise kinnitust.
- Juhtum (Filter 2) on esmane saatmisüksus. Sisemine Pakk (Filter 4) on selle juhtumi sees olev alamjagunemine, tavaliselt kergemaks käitlemiseks või eksponeerimiseks (nagu 6-pakk 24-pakis). Logistikasüsteemid jälgivad Juhtumeid; Poodide toimingutes võidakse efektiivselt käidelda Sisemisi Pakke.
- Dekodeerimine ebaõnnestub või toodab vale Vöötkoodi. Partitsioon määrab kindlaks, kus täpselt Ettevõtte Eesliide lõpeb ja Toote Viide algab. Kui see 'jaotuspunkt' on vale, saate erineva Ettevõtte Koodi kui kavatsesite.
- Standardne GTIN (Vöötkood) identifitseerib ainult toote tüübi (nt '330ml karastusjook'). SGTIN-96 lisab Seerianumbri, andes igale purgile ainulaadse identiteedi. See võimaldab üksusetaseme jälgitavust, võimaldades teil täpselt jälgida, milline konkreetne toode müüdi, varastati või aegus.
- Jah. Nagu ülaltoodud konverteris näidatud, sisaldab SGTIN-96 string täielikku GTIN-14. Eemaldades Seerianumbri ja päise teabe, saate perfektselt taastada algse jaemüügi vöötkoodi.
- Päis (0x30) on GS1 poolt määratletud standardne 8-bitine eesliide. See lihtsalt ütleb ükskõik millisele RFID lugejale: "See märk on kodeeritud SGTIN-96 standardi järgi." Muud päised eksisteerivad erinevate standardite jaoks (nagu SSCC kaubaaluste jaoks või GIAI varade jaoks).