RFID pretvarač koda
RFID pretvarač
Pretvorite između RFID Hex (SGTIN-96) i GS1 barkoda (GTIN) + serijskog broja.
EPC URIs
Logika koda i korak po korak
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Kod za razvojne programere
Upotrijebite ovu logiku uslužnog programa u svom projektu. Odaberite jezik u nastavku.
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}Objasni
SGTIN-96 je 96-bitni binarni niz podijeljen u 6 dijelova:
001100000x30Standardni prefiks (00110000) koji identificira ovo kao SGTIN-96.
0113Vrsta objekta (npr. 1 = Maloprodaja). Pogledajte Vodič za referencu u nastavku.
1015Particija 5 znači: Kod tvrtke zauzima 24 bitova, kod proizvoda zauzima 20 bitova.
1000100001010111110000118935363Jedinstveni kod tvrtke koji dodjeljuje GS1.
00010111011001011101095837Vaš specifični kod proizvoda.
000000000000000000000000000000000000011Jedinstveni identifikator za svaki specifični fizički proizvod.
Razumijevanje SGTIN-a i GTIN-a
Vizualizacija odnosa između vašeg fizičkog barkoda i elektroničkog koda proizvoda (EPC).

Logika kodiranja (korak po korak)
- Korak 1: Odredite binarnu vrijednost zaglavlja za EPC shemu. Binarna vrijednost zaglavlja za SGTIN-96 je “00110000.”
- Korak 2: Odaberite vrijednost particije na temelju broja znamenki u prefiksu tvrtke iz tablice vrijednosti particije.
- Korak 3: Pretvorite vrijednost filtera, vrijednost particije, prefiks tvrtke, referencu na stavku i serijski broj u binarnu vrijednost.
- Korak 4: Spojite redom zaglavlje, filter, particiju, prefiks tvrtke, referencu na stavku i binarne vrijednosti serijskog broja kako biste formirali binarni EPC.
SGTIN-96 Referentni vodič
| Vrijednost | Opis |
|---|---|
| 0 | Svi ostali Koristi se za artikle koji se ne uklapaju u druge kategorije. Rijetko se koristi u maloprodaji. |
| 1 | Prodajni artikl (POS) Standardna potrošačka jedinica koja se prodaje na prodajnom mjestu. Primjer: Jedna bočica šampona. |
| 2 | Puni slučaj za transport Standardna transportna jedinica koja sadrži više artikala. Primjer: Karton od 12 bočica šampona. Ključno za logistiku da se razlikuje 'jedan slučaj' od 'jednog artikla'. |
| 3 | Rezervirano Rezervirano za buduću upotrebu. |
| 4 | Grupiranje artikala unutarnjeg pakiranja Grupiranje manje od punog slučaja, često za izlaganje na polici ili rukovanje. Primjer: Skupina od 3 komada u foliji unutar glavnog kartona. |
| 5 | Rezervirano Rezervirano za buduću upotrebu. |
| 6 | Jedinično opterećenje Velika logistička jedinica, obično paleta koja sadrži više kutija. |
| 7 | Komponenta unutar potrošačke jedinice Određeni dio unutar potrošačke jedinice. Primjer: Poklopac baterije unutar igračke. |
| Vrijednost | Prefiks tvrtke | Referenca artikla |
|---|---|---|
| 0 | 40 Bitovi / 12 Znamenke | 4 Bitovi / 1 Znamenke |
| 1 | 37 Bitovi / 11 Znamenke | 7 Bitovi / 2 Znamenke |
| 2 | 34 Bitovi / 10 Znamenke | 10 Bitovi / 3 Znamenke |
| 3 | 30 Bitovi / 9 Znamenke | 14 Bitovi / 4 Znamenke |
| 4 | 27 Bitovi / 8 Znamenke | 17 Bitovi / 5 Znamenke |
| 5 | 24 Bitovi / 7 Znamenke | 20 Bitovi / 6 Znamenke |
| 6 | 20 Bitovi / 6 Znamenke | 24 Bitovi / 7 Znamenke |
SGTIN-96 Često postavljana pitanja
- Sustavu govori o razini pakiranja oznake. Ako sustav očitava oznaku 'Kućište' (Filter 2), zna da sadrži više stavki. To sprječava dvostruko brojanje (npr. brojanje kućišta kao samo jedne jedinice) i omogućuje valjanu provjeru otpreme.
- Kućište (Filter 2) je primarna transportna jedinica koja se koristi za prijevoz. Unutarnje pakiranje (Filter 4) je pododjeljak unutar tog kućišta, obično za lakše rukovanje ili izlaganje (poput paketa od 6 komada unutar kućišta od 24 limenke). Logistički sustavi prate kućišta; Operacije u trgovini mogu učinkovito rukovati unutarnjim pakiranjima.
- Dekodiranje će propasti ili će dati pogrešan barkod. Particija točno određuje gdje završava Prefiks tvrtke, a počinje Referenca stavke. Ako je ova 'točka razdvajanja' pogrešna, dobit ćete drugačiji kod tvrtke od željenog.
- Standardni GTIN (barkod) identificira samo vrstu proizvoda (npr. '12oz Soda'). SGTIN-96 dodaje serijski broj, dajući svakoj pojedinoj limenci jedinstveni identitet. To omogućuje sljedivost na razini stavke, što vam omogućuje da točno pratite koji je određeni artikl prodan, ukraden ili mu je istekao rok trajanja.
- Da. Kao što je prikazano u pretvaraču iznad, niz SGTIN-96 sadrži kompletan GTIN-14. Uklanjanjem serijskog broja i informacija zaglavlja, možete savršeno rekonstruirati izvorni maloprodajni barkod.
- Zaglavlje (0x30) je standardni 8-bitni prefiks definiran od strane GS1. Jednostavno govori bilo kojem RFID čitaču: "Ova je oznaka kodirana pomoću standarda SGTIN-96." Postoje i druga zaglavlja za različite standarde (poput SSCC za palete ili GIAI za imovinu).