Engineering tools · EPC · GS1
RFID ਕੋਡ ਕਨਵਰਟਰ
SGTIN-96 (RFID ਹੈਕਸ) ਅਤੇ Barcode (GTIN) + ਸੀਰੀਅਲ ਨੰਬਰ ਦੇ ਵਿਚਕਾਰ ਕਨਵਰਟਰ ਟੂਲ। Zebra, Chainway, Impinj, Nextwaves ਵਰਗੇ ਸਟੈਂਡਰਡ RFID ਰੀਡਰਾਂ ਦੇ ਨਾਲ ਅਨੁਕੂਲ। GS1 EPC ਟੈਗ ਡਾਟਾ ਸਟੈਂਡਰਡ 'ਤੇ ਆਧਾਰਿਤ।
RFID ਕਨਵਰਟਰ
RFID Hex (SGTIN-96) ਅਤੇ GS1 ਬਾਰਕੋਡ (GTIN) + ਸੀਰੀਅਲ ਨੰਬਰ ਦੇ ਵਿਚਕਾਰ ਕਨਵਰਟ ਕਰੋ।
Scheme:SGTIN-9696 bits / Header 0x30
EPC URIs
ਕੋਡ ਲਾਜਿਕ ਅਤੇ ਕਦਮ-ਦਰ-ਕਦਮ
// 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
ਡਿਵੈਲਪਰ ਕੋਡ
ਆਪਣੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਇਸ ਯੂਟਿਲਿਟੀ ਲਾਜਿਕ ਨੂੰ ਵਰਤੋ। ਹੇਠਾਂ ਭਾਸ਼ਾ ਚੁਣੋ।
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}ਸਮਝਾਓ
SGTIN-96 ਇੱਕ 96-ਬਿੱਟ ਬਾਈਨਰੀ ਸਟ੍ਰਿੰਗ ਹੈ ਜੋ 6 ਭਾਗਾਂ ਵਿੱਚ ਵੰਡਿਆ ਗਿਆ ਹੈ:
HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
ਹੈਡਰ (8 ਬਿੱਟ)Bits 0-8 (8)
001100000x30ਸਟੈਂਡਰਡ ਪ੍ਰੀਫਿਕਸ (00110000) ਜੋ ਇਸਨੂੰ SGTIN-96 ਵਜੋਂ ਪਛਾਣਦਾ ਹੈ।
ਫਿਲਟਰ (3 ਬਿਟ)Bits 8-11 (3)
0113ਆਬਜੈਕਟ ਕਿਸਮ (ਉਦਾਹਰਨ ਲਈ, 1 = ਰੀਟੇਲ)। ਹੇਠਾਂ ਰੈਫਰੈਂਸ ਗਾਈਡ ਵੇਖੋ।
ਵੰਡ (3 ਬਿੱਟ)Bits 11-14 (3)
1015ਵੰਡ 5 ਦਾ ਮਤਲਬ ਹੈ: ਕੰਪਨੀ ਕੋਡ 24 ਬਿੱਟ ਲੈਂਦਾ ਹੈ, ਉਤਪਾਦ ਕੋਡ 20 ਬਿੱਟ ਲੈਂਦਾ ਹੈ।
ਕੰਪਨੀ ਪ੍ਰੀਫਿਕਸBits 14-38 (24)
1000100001010111110000118935363GS1 ਦੁਆਰਾ ਦਿੱਤਾ ਗਿਆ ਵਿਲੱਖਣ ਕੰਪਨੀ ਕੋਡ।
ਆਈਟਮ ਰੈਫਰੈਂਸBits 38-58 (20)
00010111011001011101095837ਤੁਹਾਡਾ ਖਾਸ ਉਤਪਾਦ ਕੋਡ।
ਸੀਰੀਅਲ ਨੰਬਰ (38 ਬਿੱਟ)Bits 58-96 (38)
000000000000000000000000000000000000011ਹਰੇਕ ਖਾਸ ਭੌਤਿਕ ਉਤਪਾਦ ਲਈ ਵਿਲੱਖਣ ਪਛਾਣਕਰਤਾ।
SGTIN ਅਤੇ GTIN ਨੂੰ ਸਮਝਣਾ
ਤੁਹਾਡੇ ਭੌਤਿਕ ਬਾਰਕੋਡ ਅਤੇ ਇਲੈਕਟ੍ਰਾਨਿਕ ਉਤਪਾਦ ਕੋਡ (EPC) ਵਿਚਕਾਰ ਸਬੰਧ ਨੂੰ ਦਰਸਾਉਣਾ।

ਕੋਡਿੰਗ ਤਰਕ (ਕਦਮ-ਦਰ-ਕਦਮ)
- ਕਦਮ 1: EPC ਸਕੀਮਾ ਲਈ ਬਾਈਨਰੀ ਹੈਡਰ ਮੁੱਲ ਨਿਰਧਾਰਤ ਕਰੋ। SGTIN-96 ਲਈ ਬਾਈਨਰੀ ਹੈਡਰ ਮੁੱਲ “00110000” ਹੈ।
- ਕਦਮ 2: ਵੰਡ ਮੁੱਲ ਟੇਬਲ ਤੋਂ ਕੰਪਨੀ ਪ੍ਰੀਫਿਕਸ ਵਿੱਚ ਅੰਕਾਂ ਦੀ ਗਿਣਤੀ ਦੇ ਅਧਾਰ 'ਤੇ ਵੰਡ ਮੁੱਲ ਚੁਣੋ।
- ਕਦਮ 3: ਫਿਲਟਰ ਮੁੱਲ, ਵੰਡ ਮੁੱਲ, ਕੰਪਨੀ ਪ੍ਰੀਫਿਕਸ, ਆਈਟਮ ਰੈਫਰੈਂਸ, ਅਤੇ ਸੀਰੀਅਲ # ਨੂੰ ਬਾਈਨਰੀ ਮੁੱਲ ਵਿੱਚ ਬਦਲੋ।
- ਕਦਮ 4: ਬਾਈਨਰੀ EPC ਬਣਾਉਣ ਲਈ ਹੈਡਰ, ਫਿਲਟਰ, ਵੰਡ, ਕੰਪਨੀ ਪ੍ਰੀਫਿਕਸ, ਆਈਟਮ ਰੈਫਰੈਂਸ, ਅਤੇ ਸੀਰੀਅਲ # ਬਾਈਨਰੀ ਮੁੱਲਾਂ ਨੂੰ ਕ੍ਰਮ ਵਿੱਚ ਜੋੜੋ।
SGTIN-96 ਰੈਫਰੈਂਸ ਗਾਈਡ
| ਮੁੱਲ | ਵੇਰਵਾ |
|---|---|
| 0 | ਹੋਰ ਸਾਰੇ ਉਹਨਾਂ ਆਈਟਮਾਂ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਦੂਜੀਆਂ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ ਫਿੱਟ ਨਹੀਂ ਹੁੰਦੀਆਂ। ਆਮ ਪ੍ਰਚੂਨ ਵਿੱਚ ਘੱਟ ਹੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
| 1 | ਵਿਕਰੀ ਦਾ ਬਿੰਦੂ (POS) ਵਪਾਰਕ ਆਈਟਮ ਵਿਕਰੀ ਦੇ ਬਿੰਦੂ 'ਤੇ ਵੇਚੀ ਜਾਣ ਵਾਲੀ ਸਟੈਂਡਰਡ ਖਪਤਕਾਰ ਇਕਾਈ। ਉਦਾਹਰਨ: ਸ਼ੈਂਪੂ ਦੀ ਇੱਕ ਬੋਤਲ। |
| 2 | ਆਵਾਜਾਈ ਲਈ ਪੂਰਾ ਕੇਸ ਇੱਕ ਸਟੈਂਡਰਡ ਸ਼ਿਪਿੰਗ ਯੂਨਿਟ ਜਿਸ ਵਿੱਚ ਕਈ ਆਈਟਮਾਂ ਹੁੰਦੀਆਂ ਹਨ। ਉਦਾਹਰਨ: 12 ਸ਼ੈਂਪੂ ਦੀਆਂ ਬੋਤਲਾਂ ਦਾ ਇੱਕ ਡੱਬਾ। ਲੌਜਿਸਟਿਕਸ ਲਈ 'ਇੱਕ ਕੇਸ' ਅਤੇ 'ਇੱਕ ਆਈਟਮ' ਵਿੱਚ ਫਰਕ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। |
| 3 | ਰਾਖਵਾਂ ਭਵਿੱਖ ਵਿੱਚ ਵਰਤੋਂ ਲਈ ਰਾਖਵਾਂ। |
| 4 | ਅੰਦਰੂਨੀ ਪੈਕ ਵਪਾਰਕ ਆਈਟਮ ਸਮੂਹ ਇੱਕ ਪੂਰੇ ਕੇਸ ਨਾਲੋਂ ਛੋਟਾ ਸਮੂਹ, ਅਕਸਰ ਸ਼ੈਲਫ ਡਿਸਪਲੇ ਜਾਂ ਹੈਂਡਲਿੰਗ ਲਈ। ਉਦਾਹਰਨ: ਮੁੱਖ ਡੱਬੇ ਦੇ ਅੰਦਰ ਇੱਕ ਸੁੰਗੜਿਆ ਹੋਇਆ 3-ਪੈਕ। |
| 5 | ਰਾਖਵਾਂ ਭਵਿੱਖ ਵਿੱਚ ਵਰਤੋਂ ਲਈ ਰਾਖਵਾਂ। |
| 6 | ਯੂਨਿਟ ਲੋਡ ਇੱਕ ਵੱਡਾ ਲੌਜਿਸਟਿਕਲ ਯੂਨਿਟ, ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਪੈਲੇਟ ਜਿਸ ਵਿੱਚ ਕਈ ਕੇਸ ਹੁੰਦੇ ਹਨ। |
| 7 | ਖਪਤਕਾਰ ਯੂਨਿਟ ਦੇ ਅੰਦਰ ਕੰਪੋਨੈਂਟ ਇੱਕ ਖਪਤਕਾਰ ਯੂਨਿਟ ਦੇ ਅੰਦਰ ਇੱਕ ਖਾਸ ਹਿੱਸਾ। ਉਦਾਹਰਨ: ਇੱਕ ਖਿਡੌਣੇ ਦੇ ਅੰਦਰ ਬੈਟਰੀ ਕਵਰ। |
| ਮੁੱਲ | ਕੰਪਨੀ ਪ੍ਰੀਫਿਕਸ | ਆਈਟਮ ਰੈਫਰੈਂਸ |
|---|---|---|
| 0 | 40 ਬਿੱਟ / 12 ਅੰਕ | 4 ਬਿੱਟ / 1 ਅੰਕ |
| 1 | 37 ਬਿੱਟ / 11 ਅੰਕ | 7 ਬਿੱਟ / 2 ਅੰਕ |
| 2 | 34 ਬਿੱਟ / 10 ਅੰਕ | 10 ਬਿੱਟ / 3 ਅੰਕ |
| 3 | 30 ਬਿੱਟ / 9 ਅੰਕ | 14 ਬਿੱਟ / 4 ਅੰਕ |
| 4 | 27 ਬਿੱਟ / 8 ਅੰਕ | 17 ਬਿੱਟ / 5 ਅੰਕ |
| 5 | 24 ਬਿੱਟ / 7 ਅੰਕ | 20 ਬਿੱਟ / 6 ਅੰਕ |
| 6 | 20 ਬਿੱਟ / 6 ਅੰਕ | 24 ਬਿੱਟ / 7 ਅੰਕ |
SGTIN-96 ਆਮ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ
- ਇਹ ਸਿਸਟਮ ਨੂੰ ਟੈਗ ਦੀ ਪੈਕੇਜਿੰਗ ਲੈਵਲ ਦੱਸਦਾ ਹੈ। ਜੇਕਰ ਸਿਸਟਮ 'Case' ਟੈਗ (Filter 2) ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ, ਤਾਂ ਇਹ ਜਾਣਦਾ ਹੈ ਕਿ ਇਸ ਵਿੱਚ ਕਈ ਆਈਟਮ ਹਨ। ਇਸ ਨਾਲ ਡਬਲ-ਕਾਊਂਟਿੰਗ (ਉਦਾਹਰਨ ਲਈ, ਕੇਸ ਨੂੰ ਇੱਕ ਹੀ ਇਕਾਈ ਵਜੋਂ ਗਿਣਣਾ) ਤੋਂ ਬਚਾਅ ਹੁੰਦਾ ਹੈ ਅਤੇ ਵੈਧ ਸ਼ਿਪਿੰਗ ਵੈਰੀਫਿਕੇਸ਼ਨ ਦੀ ਇਜਾਜ਼ਤ ਮਿਲਦੀ ਹੈ।
- Case (Filter 2) ਮੁੱਖ ਸ਼ਿਪਿੰਗ ਯੂਨਿਟ ਹੈ ਜੋ ਟਰਾਂਸਪੋਰਟ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। Inner Pack (Filter 4) ਇਸ ਕੇਸ ਦੇ ਅੰਦਰ ਇੱਕ ਉਪ-ਵੰਡ ਹੈ, ਆਮ ਤੌਰ 'ਤੇ ਆਸਾਨ ਹੈਂਡਲਿੰਗ ਜਾਂ ਡਿਸਪਲੇ ਲਈ (ਜਿਵੇਂ 24-ਕੈਨ ਕੇਸ ਵਿੱਚ 6-ਪੈਕ)। ਲੋਜਿਸਟਿਕਸ ਸਿਸਟਮ ਕੇਸਾਂ ਨੂੰ ਟਰੈਕ ਕਰਦੇ ਹਨ; ਸਟੋਰ ਓਪਰੇਸ਼ਨ ਇਨਰ ਪੈਕਸ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲ ਸਕਦੇ ਹਨ।
- ਡੀਕੋਡਿੰਗ ਫੇਲ੍ਹ ਹੋ ਸਕਦੀ ਹੈ ਜਾਂ ਗਲਤ ਬਾਰਕੋਡ ਪੈਦਾ ਕਰ ਸਕਦੀ ਹੈ। Partition ਇਹ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ ਕਿ ਕੰਪਨੀ ਪ੍ਰੀਫਿਕਸ ਕਿੱਥੇ ਖਤਮ ਹੁੰਦੀ ਹੈ ਅਤੇ ਆਈਟਮ ਰੈਫਰੈਂਸ ਕਿੱਥੋਂ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। ਜੇ ਇਹ 'ਸਪਲਿਟ ਪੌਇੰਟ' ਗਲਤ ਹੋਵੇ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਰਾਦੇ ਦੇ ਮੁਕਾਬਲੇ ਵੱਖਰਾ ਕੰਪਨੀ ਕੋਡ ਮਿਲੇਗਾ।
- ਸਟੈਂਡਰਡ GTIN (ਬਾਰਕੋਡ) ਸਿਰਫ ਉਤਪਾਦ ਕਿਸਮ (ਉਦਾਹਰਨ ਲਈ, '12oz ਸੋਡਾ') ਦੀ ਪਛਾਣ ਕਰਦਾ ਹੈ। SGTIN-96 ਸੀਰੀਅਲ ਨੰਬਰ ਜੋੜਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਹਰ ਕੈਨ ਨੂੰ ਵਿਲੱਖਣ ਪਹਿਚਾਣ ਮਿਲਦੀ ਹੈ। ਇਸ ਨਾਲ ਆਈਟਮ-ਲੈਵਲ ਟਰੇਸਬਿਲਿਟੀ ਸੰਭਵ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਠੀਕ-ਠੀਕ ਪਤਾ ਲਗਾ ਸਕਦੇ ਹੋ ਕਿ ਕਿਹੜੀ ਵਿਸ਼ੇਸ਼ ਆਈਟਮ ਵੇਚੀ, ਚੋਰੀ ਹੋਈ ਜਾਂ ਮਿਆਦ ਖਤਮ ਹੋਈ।
- ਹਾਂ। ਉਪਰੋਕਤ ਕਨਵਰਟਰ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ ਕਿ SGTIN-96 ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਪੂਰਾ GTIN-14 ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਸੀਰੀਅਲ ਨੰਬਰ ਅਤੇ ਹੈਡਰ ਜਾਣਕਾਰੀ ਨੂੰ ਹਟਾ ਕੇ, ਤੁਸੀਂ ਮੂਲ ਰੀਟੇਲ ਬਾਰਕੋਡ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਮੁੜ ਬਣਾਉਂ ਸਕਦੇ ਹੋ।
- Header (0x30) GS1 ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਇੱਕ ਮਿਆਰੀ 8-ਬਿਟ ਪ੍ਰੀਫਿਕਸ ਹੈ। ਇਹ ਸਿਰਫ ਕਿਸੇ ਵੀ RFID ਰੀਡਰ ਨੂੰ ਦੱਸਦਾ ਹੈ: "ਇਹ ਟੈਗ SGTIN-96 ਮਿਆਰ ਦੀ ਵਰਤੋਂ ਨਾਲ ਐਨਕੋਡ ਕੀਤਾ ਗਿਆ ਹੈ।" ਹੋਰ ਹੈਡਰ ਵੱਖ-ਵੱਖ ਮਿਆਰਾਂ ਲਈ ਮੌਜੂਦ ਹਨ (ਜਿਵੇਂ ਪੈਲੇਟ ਲਈ SSCC ਜਾਂ ਐਸੈਟਸ ਲਈ GIAI)।