RFID Kódkonverter
RFID konverter
Konvertálás az RFID Hex (SGTIN-96) és a GS1 vonalkód (GTIN) + sorozatszám között.
EPC URIs
Kódlogika és lépésről lépésre
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Fejlesztői kód
Használja ezt a segédlogikát a projektjében. Válasszon nyelvet alább.
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}Magyarázat
A SGTIN-96 egy 96 bites bináris karakterlánc, amely 6 részre oszlik:
001100000x30Szabványos előtag (00110000), amely SGTIN-96-ként azonosítja.
0113Objektum típusa (pl. 1 = Kiskereskedelmi egység). Lásd a hivatkozási útmutatót alább.
1015A 5 partíció a következőket jelenti: A Vállalati kód 24 bitet, a Termékkód 20 bitet foglal el.
1000100001010111110000118935363A GS1 által hozzárendelt egyedi vállalati kód.
00010111011001011101095837Az Ön egyedi termékkódja.
000000000000000000000000000000000000011Egyedi azonosító az egyes fizikai termékekhez.
A SGTIN és a GTIN megértése
A fizikai vonalkód és az elektronikus termékkód (EPC) közötti kapcsolat vizualizálása.

Kódolási logika (lépésről lépésre)
- 1. lépés: Határozza meg az EPC séma bináris fejléc értékét. A SGTIN-96 bináris fejléc értéke „00110000”.
- 2. lépés: Válassza ki a Partíció értékét a Vállalati előtagban lévő számjegyek száma alapján a Partíció érték táblázatból.
- 3. lépés: Konvertálja a Szűrő értéket, a Partíció értéket, a Vállalati előtagot, a Cikk referenciát és a Sorozatszámot bináris értékre.
- 4. lépés: Fűzze össze a Fejlécet, a Szűrőt, a Partíciót, a Vállalati előtagot, a Cikk referenciát és a Sorozatszám bináris értékeit, hogy megkapja a Bináris EPC-t.
SGTIN-96 Referencia útmutató
| Érték | Leírás |
|---|---|
| 0 | Minden más Olyan tételekhez használják, amelyek nem illeszkednek más kategóriákba. Ritkán használják a kiskereskedelemben. |
| 1 | Értékesítési pont (POS) kereskedelmi tétel A szabványos fogyasztói egység, amelyet az értékesítési ponton értékesítenek. Példa: Egyetlen samponos üveg. |
| 2 | Teljes tok a szállításhoz Egy szabványos szállítási egység, amely több tételt tartalmaz. Példa: Egy karton 12 samponos üveggel. Kritikus a logisztika számára, hogy megkülönböztesse az 'egy tokot' az 'egy tételtől'. |
| 3 | Fenntartva Jövőbeni felhasználásra fenntartva. |
| 4 | Belső csomag kereskedelmi tételcsoportosítás Egy teljes toknál kisebb csoportosítás, gyakran polcon történő megjelenítéshez vagy kezeléshez. Példa: Egy zsugorcsomagolt 3-as csomag a fő kartonon belül. |
| 5 | Fenntartva Jövőbeni felhasználásra fenntartva. |
| 6 | Egységrakomány Nagy logisztikai egység, jellemzően egy raklap, amely több kartont tartalmaz. |
| 7 | Komponens a fogyasztói egységen belül Egy adott alkatrész a fogyasztói egységen belül. Példa: Az elemtartó fedél egy játékon belül. |
| Érték | Cég előtag | Tétel hivatkozás |
|---|---|---|
| 0 | 40 Bitek / 12 Számjegyek | 4 Bitek / 1 Számjegyek |
| 1 | 37 Bitek / 11 Számjegyek | 7 Bitek / 2 Számjegyek |
| 2 | 34 Bitek / 10 Számjegyek | 10 Bitek / 3 Számjegyek |
| 3 | 30 Bitek / 9 Számjegyek | 14 Bitek / 4 Számjegyek |
| 4 | 27 Bitek / 8 Számjegyek | 17 Bitek / 5 Számjegyek |
| 5 | 24 Bitek / 7 Számjegyek | 20 Bitek / 6 Számjegyek |
| 6 | 20 Bitek / 6 Számjegyek | 24 Bitek / 7 Számjegyek |
SGTIN-96 Gyakran Ismételt Kérdések
- Megadja a rendszernek a címke csomagolási szintjét. Ha egy rendszer egy 'Case' (Tok) címkét olvas (Szűrő 2), tudja, hogy több terméket tartalmaz. Ez megakadályozza a duplán számolást (pl. egy tokot egyetlen egységként számolva), és lehetővé teszi az érvényes szállítási ellenőrzést.
- Case (Tok, Szűrő 2) a szállítás során használt elsődleges szállítási egység. A Inner Pack (Belső Csomag, Szűrő 4) egy felosztás a tokon belül, általában a könnyebb kezelés vagy a bemutatás érdekében (mint például egy 6-os csomag egy 24-es dobozban). A logisztikai rendszerek a Tokokat követik nyomon; az áruházi műveletek hatékonyan kezelhetik a Belső Csomagokat.
- A dekódolás sikertelen lesz, vagy rossz vonalkódot eredményez. A Partíció pontosan meghatározza, hogy hol ér véget a Vállalati Előtag, és hol kezdődik az Elem Referencia. Ha ez a 'felosztási pont' rossz, akkor a szándékolttól eltérő Vállalati Kódot kap.
- A standard GTIN (Vonalkód) csak a terméktípust azonosítja (pl. '12oz Soda'). Az SGTIN-96 hozzáad egy Sorozatszámot, amely minden egyes doboznak egyedi identitást ad. Ez lehetővé teszi az elem szintű nyomon követhetőséget, lehetővé téve, hogy pontosan nyomon kövesse, hogy melyik konkrét terméket adták el, lopták el vagy járt le.
- Igen. Ahogy a fenti konverterben látható, az SGTIN-96 karakterlánc tartalmazza a teljes GTIN-14-et. A Sorozatszám és a fejléc információk eltávolításával tökéletesen rekonstruálhatja az eredeti kiskereskedelmi vonalkódot.
- A Fejléc (0x30) egy GS1 által meghatározott szabványos 8 bites előtag. Egyszerűen azt mondja az RFID olvasónak: "Ez a címke a SGTIN-96 szabványt használja." Más fejlécek is léteznek a különböző szabványokhoz (például SSCC a raklapokhoz vagy GIAI az eszközökhöz).