RFID कोड कन्भर्टर
RFID कन्भर्टर
RFID हेक्स (SGTIN-96) र GS1 बारकोड (GTIN) + सिरियल नम्बर बीच रूपान्तरण गर्नुहोस्।
EPC URIs
कोड तर्क र चरण-दर-चरण
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
डेभलपर कोड
आफ्नो परियोजनामा यो उपयोगिता तर्क प्रयोग गर्नुहोस्। तल एउटा भाषा चयन गर्नुहोस्।
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 एउटा ९६-बिट बाइनरी स्ट्रिङ हो जसलाई ६ भागमा विभाजन गरिएको छ:
001100000x30मानक उपसर्ग (00110000) जसले यसलाई SGTIN-96 को रूपमा पहिचान गर्दछ।
0113वस्तु प्रकार (उदाहरणका लागि १ = खुद्रा खुद्रा)। तलको सन्दर्भ गाइड हेर्नुहोस्।
1015विभाजन 5 को अर्थ हो: कम्पनी कोडले 24 बिट लिन्छ, उत्पादन कोडले 20 बिट लिन्छ।
1000100001010111110000118935363GS1 द्वारा तोकिएको अद्वितीय कम्पनी कोड।
00010111011001011101095837तपाईंको विशिष्ट उत्पादन कोड।
000000000000000000000000000000000000011प्रत्येक विशिष्ट भौतिक उत्पादनको लागि अद्वितीय पहिचानकर्ता।
SGTIN र GTIN बुझ्दै
तपाईंको भौतिक बारकोड र इलेक्ट्रोनिक उत्पादन कोड (EPC) बीचको सम्बन्धको कल्पना गर्दै।

इन्कोडिङ तर्क (चरण-दर-चरण)
- चरण १: EPC योजनाको लागि बाइनरी हेडर मान निर्धारण गर्नुहोस्। SGTIN-96 को लागि बाइनरी हेडर मान “00110000” हो।
- चरण २: विभाजन मान तालिकाबाट कम्पनी उपसर्गमा अंकहरूको संख्याको आधारमा विभाजन मान चयन गर्नुहोस्।
- चरण ३: फिल्टर मान, विभाजन मान, कम्पनी उपसर्ग, वस्तु सन्दर्भ, र क्रम # लाई बाइनरी मानमा रूपान्तरण गर्नुहोस्।
- चरण ४: बाइनरी 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 बारम्बार सोधिने प्रश्नहरू
- यसले प्रणालीलाई ट्यागको प्याकेजिङ स्तर बताउँछ। यदि कुनै प्रणालीले 'केस' ट्याग (फिल्टर २) पढ्छ भने, यसले बुझ्छ कि यसमा धेरै वस्तुहरू छन्। यसले दोहोरो गणना (उदाहरणका लागि, एउटा केसलाई एउटै एकाइको रूपमा गणना गर्ने) रोक्छ र मान्य ढुवानी प्रमाणीकरणको लागि अनुमति दिन्छ।
- केस (फिल्टर २) ढुवानीको लागि प्रयोग गरिने प्राथमिक एकाइ हो। इनर प्याक (फिल्टर ४) त्यो केस भित्रको उप-विभाजन हो, सामान्यतया सजिलो ह्यान्डलिङ वा प्रदर्शनको लागि (जस्तै २४-क्यान केस भित्रको ६-प्याक)। रसद प्रणालीहरूले केसहरू ट्र्याक गर्छन्; स्टोर सञ्चालनहरूले प्रभावकारी रूपमा इनर प्याकहरू ह्यान्डल गर्न सक्छन्।
- डिकोडिङ असफल हुनेछ वा गलत बारकोड उत्पादन गर्नेछ। पार्टिसन ले ठ्याक्कै निर्धारण गर्छ जहाँ कम्पनी उपसर्ग समाप्त हुन्छ र वस्तु सन्दर्भ सुरु हुन्छ। यदि यो 'विभाजन बिन्दु' गलत छ भने, तपाईंले अभिप्रेत भन्दा फरक कम्पनी कोड प्राप्त गर्नुहुनेछ।
- मानक GTIN (बारकोड) ले केवल उत्पादन प्रकार पहिचान गर्दछ (उदाहरणका लागि, '१२oz सोडा')। SGTIN-96 ले सिरियल नम्बर थप्छ, प्रत्येक क्यानलाई एक अद्वितीय पहिचान दिन्छ। यसले वस्तु-स्तरको ट्रेसएबिलिटी सक्षम गर्दछ, जसले तपाईंलाई कुन विशिष्ट वस्तु बेचियो, चोरी भयो वा म्याद सकियो भन्ने ट्र्याक गर्न अनुमति दिन्छ।
- हो। माथिको कन्भर्टरमा देखाइए अनुसार, SGTIN-96 स्ट्रिङमा पूर्ण GTIN-14 समावेश छ। सिरियल नम्बर र हेडर जानकारी हटाएर, तपाईं पूर्ण रूपमा मूल खुद्रा बारकोड पुन: निर्माण गर्न सक्नुहुन्छ।
- हेडर (0x30) GS1 द्वारा परिभाषित एक मानक ८-बिट उपसर्ग हो। यसले कुनै पनि RFID रिडरलाई सरल रूपमा बताउँछ: "यो ट्याग SGTIN-96 मानक प्रयोग गरेर इन्कोड गरिएको छ।" अन्य हेडरहरू विभिन्न मापदण्डका लागि अवस्थित छन् (प्यालेटका लागि SSCC वा सम्पत्तिका लागि GIAI जस्तै)।