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 అనేది 6 భాగాలుగా విభజించబడిన 96-బిట్ బైనరీ స్ట్రింగ్:
001100000x30SGTIN-96గా దీన్ని గుర్తించే ప్రామాణిక ఉపసర్గ (00110000).
0113వస్తువు రకం (ఉదా. 1 = రిటైల్ రిటైల్). దిగువన ఉన్న రిఫరెన్స్ గైడ్ని చూడండి.
1015విభజన 5 అంటే: కంపెనీ కోడ్ 24 బిట్లను తీసుకుంటుంది, ఉత్పత్తి కోడ్ 20 బిట్లను తీసుకుంటుంది.
1000100001010111110000118935363GS1 ద్వారా కేటాయించబడిన ప్రత్యేక కంపెనీ కోడ్.
00010111011001011101095837మీ నిర్దిష్ట ఉత్పత్తి కోడ్.
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 తరచుగా అడిగే ప్రశ్నలు
- ఇది ట్యాగ్ యొక్క ప్యాకేజింగ్ స్థాయిని సిస్టమ్కు తెలియజేస్తుంది. ఒక సిస్టమ్ 'కేస్' ట్యాగ్ని (ఫిల్టర్ 2) చదివితే, అది బహుళ వస్తువులను కలిగి ఉందని తెలుసుకుంటుంది. ఇది డబుల్-కౌంటింగ్ను నిరోధిస్తుంది (ఉదాహరణకు, ఒక కేసును ఒకే యూనిట్గా లెక్కించడం) మరియు చెల్లుబాటు అయ్యే షిప్పింగ్ ధృవీకరణను అనుమతిస్తుంది.
- కేస్ (ఫిల్టర్ 2) రవాణా కోసం ఉపయోగించే ప్రాథమిక షిప్పింగ్ యూనిట్. ఇన్నర్ ప్యాక్ (ఫిల్టర్ 4) అనేది ఆ కేసు లోపల ఒక ఉపవిభాగం, సాధారణంగా సులభంగా నిర్వహించడానికి లేదా ప్రదర్శించడానికి (24-కాన్ కేసు లోపల 6-ప్యాక్ లాగా). లాజిస్టిక్స్ సిస్టమ్లు కేసులను ట్రాక్ చేస్తాయి; స్టోర్ కార్యకలాపాలు ఇన్నర్ ప్యాక్లను సమర్ధవంతంగా నిర్వహించవచ్చు.
- డీకోడింగ్ విఫలమవుతుంది లేదా తప్పు బార్కోడ్ను ఉత్పత్తి చేస్తుంది. విభజన కంపెనీ ఉపసర్గ ఎక్కడ ముగుస్తుందో మరియు అంశ సూచన ఎక్కడ ప్రారంభమవుతుందో ఖచ్చితంగా నిర్ణయిస్తుంది. ఈ 'స్ప్లిట్ పాయింట్' తప్పు అయితే, మీరు ఉద్దేశించిన దానికంటే భిన్నమైన కంపెనీ కోడ్ను పొందుతారు.
- ప్రామాణిక GTIN (బార్కోడ్) కేవలం ఉత్పత్తి రకంని గుర్తిస్తుంది (ఉదాహరణకు, '12oz సోడా'). SGTIN-96 ఒక క్రమ సంఖ్యను జోడిస్తుంది, ప్రతి ఒక్క క్యాన్కు ప్రత్యేక గుర్తింపును ఇస్తుంది. ఇది అంశ-స్థాయి ట్రేసబిలిటీని ప్రారంభిస్తుంది, ఇది ఏ నిర్దిష్ట అంశం విక్రయించబడిందో, దొంగిలించబడిందో లేదా గడువు ముగిసిందో ఖచ్చితంగా ట్రాక్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
- అవును. పైన ఉన్న కన్వర్టర్లో చూపిన విధంగా, SGTIN-96 స్ట్రింగ్ పూర్తి GTIN-14ని కలిగి ఉంది. క్రమ సంఖ్య మరియు హెడర్ సమాచారాన్ని తీసివేయడం ద్వారా, మీరు అసలు రిటైల్ బార్కోడ్ను ఖచ్చితంగా పునర్నిర్మించవచ్చు.
- హెడర్ (0x30) అనేది GS1 ద్వారా నిర్వచించబడిన ప్రామాణిక 8-బిట్ ఉపసర్గ. ఇది ఏదైనా RFID రీడర్కు ఇలా చెబుతుంది: "ఈ ట్యాగ్ SGTIN-96 ప్రమాణాన్ని ఉపయోగించి ఎన్కోడ్ చేయబడింది." వివిధ ప్రమాణాల కోసం ఇతర హెడర్లు ఉన్నాయి (ప్యాలెట్ల కోసం SSCC లేదా ఆస్తుల కోసం GIAI వంటివి).