Engineering tools · EPC · GS1
Troswr Cod RFID
Offeryn tros rhwng SGTIN-96 (RFID Hex) a Mâ Gê (GTIN) + Rhif Cyfresol. Yn gydnaws ag darllenwyr RFID safonol fel Zebra, Chainway, Impinj, Nextwaves. Yn seiliedig ar Stalffordd Data Tag GS1 EPC.
Troswr RFID
Tros rhwng RFID Hex (SGTIN-96) a Mâ Gê GS1 (GTIN) + Rhif Cyfresol.
Scheme:SGTIN-9696 bits / Header 0x30
EPC URIs
Rhesymeg Cod a Gam-wrth-Gam
// 1. Binary Conversion
src = bin(0x3076215F0C5D974000000001) // = "001100000111011000100001010111110000110001011101100101110100000000000000000000000000000000000001"
// 2. Extract Fields (Bit Slice)
header = src[0:8] "00110000" 0x30
filter = src[8:11] "011" 3
partition = src[11:14] "101" 5
// 3. Determine Partition Rule (Partition 5)
rule = PARTITIONS[5]
// Company Bits: 24, Item Bits: 20// 4. Extract Company, Item & Serial
company = src[14:38] "100010000101011111000011" 8935363
itemRef = src[38:58] "00010111011001011101" 095837
serial = src[58:96] "00000000000000000000000000000000000001" 1
Cod Datblygwr
Defnyddiwch y rhesymeg offeryn hwn yn eich prosiect. Dewiswch iaith isod.
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}Esbonio
SGTIN-96 yw llinyn deuaidd 96-bit wedi'i rannu'n 6 rhan:
HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
Pennawd (8 bit)Bits 0-8 (8)
001100000x30Rhagddodiad safonol (00110000) yn dynodi hwn fel SGTIN-96.
Hidlo (3 bit)Bits 8-11 (3)
0113Math o wrthrych (e.e. 1 = Manwerthu). Gweler y Canllaw Cyfeirnod isod.
Rhaniad (3 bit)Bits 11-14 (3)
1015Partition 5 yn golygu: Mae Cod Cwmni'n cymryd 24 bit, Mae Cod Cynnyrch yn cymryd 20 bit.
Rhagddodiad CwmniBits 14-38 (24)
1000100001010111110000118935363Cod cwmni unigryw a neilltuir gan GS1.
Cyfeirnod EitemBits 38-58 (20)
00010111011001011101095837Eich cod cynnyrch penodol.
Rhif Cyfresol (38 bit)Bits 58-96 (38)
000000000000000000000000000000000000011Dynodwr unigryw ar gyfer pob cynnyrch ffisegol penodol.
Deall SGTIN a GTIN
Darlunio'r berthynas rhwng eich mâ gê ffisegol a'r cod cynnyrch electronig (EPC).

Rhesymeg Amgryptio (Gam-wrth-Gam)
- Cam 1: Pennwch werth header deuaidd ar gyferchema EPC. Yr werth header deuaidd ar gyfer SGTIN-96 yw "00110000."
- Cam 2: Dewiswch y Gwerth Partition yn seiliedig ar nifer y digidau yn y Rhagddodiad Cwmni o'r Tabl Gwerth Partition.
- Cam 3: Troswch y Gwerth Filter, Gwerth Partition, Rhagddodiad Cwmni, Cyfeirnod Eitem, a Rhif Cyfresol i werth deuaidd.
- Cam 4: Cysylltwch mewn trefn Header, Filter, Partition, Rhagddodiad Cwmni, Cyfeirnod Eitem, a Rhif Cyfresol i ffurfio'r EPC Deuaidd.
Canllaw Cyfeirnod SGTIN-96
| Gwerth | Disgrifiad |
|---|---|
| 0 | Pob Un Arall Wedi'i defnyddio ar gyfer eitemau nad ydynt yn addas ar gyfer categorïau eraill. Anaml ei defnyddio mewn manwerthu cyffredinol. |
| 1 | Eitem Masnach Pwynt Gwerthu (POS) Yr uned ddefnyddiwr safonol a werthir ar Bwynt Gwerthu. Enghraifft: Potel o sebon pennau. |
| 2 | Achos Llawn ar gyfer Cludo Uned gludo safonol sy'n cynnwys eitemau lluosog. Enghraifft: Carton o 12 potel sebon pennau. Hanfodol ar gyfer logisteg i wahaniaethu rhwng 'un achos' ac 'un eitem'. |
| 3 | Wedi Cadw Wedi'i gadw ar gyfer defnydd yn y dyfodol. |
| 4 | Grwpio Eitemau Pecyn Mewnol Grwpio llai nag achos llawn, yn aml ar gyfer arddangos neu drin. Enghraifft: Pecyn 3 wedi'i lapio mewn gwydr y tu mewn i'r carton prif. |
| 5 | Wedi Cadw Wedi'i gadw ar gyfer defnydd yn y dyfodol. |
| 6 | Llwyth Uned Uned logisteg fawr, yn nodweddiadol paled sy'n cynnwys achosion lluosog. |
| 7 | Cydran tu Mewn i Uned Ddefnyddiwr Rhan benodol tu mewn i uned ddefnyddiwr. Enghraifft: Clawr batri tu mewn i dy pob. |
| Gwerth | Rhagddodiad Cwmni | Cyfeirnod Eitem |
|---|---|---|
| 0 | 40 Didau / 12 Digit | 4 Didau / 1 Digit |
| 1 | 37 Didau / 11 Digit | 7 Didau / 2 Digit |
| 2 | 34 Didau / 10 Digit | 10 Didau / 3 Digit |
| 3 | 30 Didau / 9 Digit | 14 Didau / 4 Digit |
| 4 | 27 Didau / 8 Digit | 17 Didau / 5 Digit |
| 5 | 24 Didau / 7 Digit | 20 Didau / 6 Digit |
| 6 | 20 Didau / 6 Digit | 24 Didau / 7 Digit |
Cwestiynau Cyffredin SGTIN-96
- Mae'n dweud wrth y system lefel y pecynnu o'r tag. Os yw system yn darllen tag 'Achos' (Filter 2), mae'n gwybod ei fod yn cynnwys eitemau lluosog. Mae hyn yn atal cyfrif dwbl (e.e. cyfrif achos fel dim ond un uned sengl) ac yn galluogi dilysu cludo.
- Achos (Filter 2) yw'r uned gludo sylfaenol a ddefnyddir ar gyfer cludo. Mae Pocyn Mewnol (Filter 4) yn is-adrannau o fewn yr achos hwnnw, yn aml ar gyfer trin neu arddangos haws (fel pecyn 6 o fewn achos 24). Mae systemau logisteg yn olrhain Achosion; Gallai gweithrediadau siop drin Pocynau Mewnol yn effeithlon.
- Bydd y dadgodio'n methu neu'n cynhyrchu'r mâ gê anghywir. Mae Partition yn pennu'n union ble mae'r Rhagddodiad Cwmni'n gorffen a ble mae'r Cyfeirnod Eitem yn dechrau. Os yw'r 'pwynt hollt' hwn yn anghywir, cewch Cod Cwmni gwahanol na'r bwriad.
- Dim ond yn nodi math y cynnyrch y mae GTIN safonol (Mâ Gê) (e.e. 'Soda 12oz'). Mae SGTIN-96 yn ychwanegu Rhif Cyfresol, gan roi identity unigryw i bob unigolyn. Galluoga tracio lefel eitem, gan ganiatáu ichi olrhain union ba eitem benodol a werthwyd, a gafodd ei dwyn, neu a ddaeth i ben.
- Gallwch. Fel y gwelwch yn y troswr uchod, mae'r llinyn SGTIN-96 yn cynnwys y GTIN-14 cyflawn. Drwy dynnu'r Rhif Cyfresol a gwybodaeth header, gallwch adeiladu'n berffaith y mâ gê manwerthu gwreiddiol.
- Y Header (0x30) yw rhagddodiad safonol 8-bit a ddiffinnir gan GS1. Mae'n syml yn dweud wrth unrhyw ddarllenydd RFID: "Mae'r tag hwn wedi'i amgryptio gan ddefnyddio'r safon SGTIN-96." Mae headerau eraill yn bodoli ar gyfer safonau gwahanol (fel SSCC ar gyfer paledi neu GIAI ar gyfer asedau).