RFID kodu konvertētājs
RFID konvertētājs
Konvertējiet starp RFID Hex (SGTIN-96) un GS1 svītrkodu (GTIN) + sērijas numuru.
EPC URIs
Koda loģika un soli pa solim
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Izstrādātāja kods
Izmantojiet šo utilītas loģiku savā projektā. Zemāk atlasiet valodu.
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}Paskaidrot
SGTIN-96 ir 96 bitu bināra virkne, kas sadalīta 6 daļās:
001100000x30Standarta prefikss (00110000), kas identificē šo kā SGTIN-96.
0113Objekta tips (piemēram, 1 = Mazumtirdzniecība). Skatiet atsauces ceļvedi zemāk.
1015Partīcija 5 nozīmē: Uzņēmuma kods aizņem 24 bitus, preces kods aizņem 20 bitus.
1000100001010111110000118935363Unikāls uzņēmuma kods, ko piešķir GS1.
00010111011001011101095837Jūsu konkrētais produkta kods.
000000000000000000000000000000000000011Unikāls identifikators katram konkrētam fiziskam produktam.
Izpratne par SGTIN un GTIN
Vizualizē saikni starp jūsu fizisko svītrkodu un elektronisko produkta kodu (EPC).

Kodēšanas loģika (soli pa solim)
- 1. solis: Nosakiet bināro galvenes vērtību EPC shēmai. Binārā galvenes vērtība SGTIN-96 ir “00110000”.
- 2. solis: Atlasiet partīcijas vērtību, pamatojoties uz uzņēmuma prefiksa ciparu skaitu no partīcijas vērtību tabulas.
- 3. solis: Konvertējiet filtra vērtību, partīcijas vērtību, uzņēmuma prefiksu, preces atsauci un sērijas numuru binārā vērtībā.
- 4. solis: Konkatenējiet secībā galveni, filtru, partīciju, uzņēmuma prefiksu, preces atsauci un sērijas numura binārās vērtības, lai izveidotu bināro EPC.
SGTIN-96 atsauces rokasgrāmata
| Vērtība | Apraksts |
|---|---|
| 0 | Visi pārējie Izmanto priekšmetiem, kas neatbilst citām kategorijām. Reti izmanto vispārējā mazumtirdzniecībā. |
| 1 | Tirdzniecības vieta (TV) tirdzniecības prece Standarta patērētāja vienība, kas tiek pārdota tirdzniecības vietā. Piemērs: viena šampūna pudele. |
| 2 | Pilns iepakojums transportēšanai Standarta pārvadāšanas vienība, kas satur vairākus priekšmetus. Piemērs: 12 šampūna pudeļu kaste. Būtiski svarīgi loģistikai, lai atšķirtu 'vienu kasti' no 'viena priekšmeta'. |
| 3 | Rezervēts Rezervēts turpmākai lietošanai. |
| 4 | Iekšējais iepakojums tirdzniecības preču grupēšanai Grupējums, kas ir mazāks par pilnu kasti, bieži vien paredzēts plauktu izvietošanai vai apstrādei. Piemērs: saraušanās plēvē ietīts 3 iepakojumu komplekts galvenajā kartona kastē. |
| 5 | Rezervēts Rezervēts turpmākai lietošanai. |
| 6 | Vienības krava Liela loģistikas vienība, parasti palete, kas satur vairākus iepakojumus. |
| 7 | Komponents patērētāja vienībā Konkrēta daļa patērētāja vienībā. Piemērs: Baterijas vāciņš rotaļlietā. |
| Vērtība | Uzņēmuma prefikss | Preces atsauce |
|---|---|---|
| 0 | 40 Biti / 12 Cipari | 4 Biti / 1 Cipari |
| 1 | 37 Biti / 11 Cipari | 7 Biti / 2 Cipari |
| 2 | 34 Biti / 10 Cipari | 10 Biti / 3 Cipari |
| 3 | 30 Biti / 9 Cipari | 14 Biti / 4 Cipari |
| 4 | 27 Biti / 8 Cipari | 17 Biti / 5 Cipari |
| 5 | 24 Biti / 7 Cipari | 20 Biti / 6 Cipari |
| 6 | 20 Biti / 6 Cipari | 24 Biti / 7 Cipari |
SGTIN-96 bieži uzdotie jautājumi
- Tas norāda sistēmai tagu iepakojuma līmeni. Ja sistēma nolasa 'Kastes' tagu (Filtrs 2), tā zina, ka tajā ir vairāki priekšmeti. Tas novērš dubultu skaitīšanu (piemēram, kastes skaitīšanu kā tikai vienu vienību) un nodrošina derīgu sūtījuma verifikāciju.
- Kaste (Filtrs 2) ir galvenā transportēšanai izmantotā sūtījuma vienība. Iekšējais iepakojums (Filtrs 4) ir apakšvienība šajā kastē, parasti ērtai apstrādei vai izstādīšanai (piemēram, 6 iepakojumi 24 kārbu kastē). Loģistikas sistēmas izseko kastes; Veikala operācijas var efektīvi apstrādāt iekšējos iepakojumus.
- Atšifrēšana neizdosies vai radīs nepareizu svītrkodu. Partīcija precīzi nosaka, kur beidzas Uzņēmuma prefikss un sākas Preces atsauce. Ja šis 'sadalīšanas punkts' ir nepareizs, jūs saņemsiet citu Uzņēmuma kodu, nekā paredzēts.
- Standarta GTIN (svītrkods) identificē tikai produkta veidu (piemēram, '12oz Soda'). SGTIN-96 pievieno sērijas numuru, piešķirot katrai atsevišķai kārbiņai unikālu identitāti. Tas nodrošina preču līmeņa izsekojamību, ļaujot precīzi izsekot, kura konkrētā prece tika pārdota, nozagta vai kurai beidzies derīguma termiņš.
- Jā. Kā redzams iepriekšējā pārveidotājā, SGTIN-96 virkne satur pilnu GTIN-14. Noņemot sērijas numuru un galvenes informāciju, jūs varat perfekti rekonstruēt sākotnējo mazumtirdzniecības svītrkodu.
- Galvene (0x30) ir standarta 8 bitu prefikss, ko definē GS1. Tas vienkārši norāda jebkuram RFID lasītājam: "Šis tags ir kodēts, izmantojot SGTIN-96 standartu." Ir arī citas galvenes dažādiem standartiem (piemēram, SSCC paletēm vai GIAI aktīviem).