Engineering tools · EPC · GS1

RFID குறியீடு மாற்றி

SGTIN-96 (RFID ஹெக்ஸ்) மற்றும் பார்கோடு (GTIN) + வரிசை எண் ஆகியவற்றுக்கு இடையே மாற்றும் கருவி. Zebra, Chainway, Impinj, Nextwaves போன்ற நிலையான RFID ரீடர்களுடன் இணக்கமானது. GS1 EPC Tag Data Standard அடிப்படையில்.

RFID மாற்றி

RFID ஹெக்ஸ் (SGTIN-96) மற்றும் GS1 பார்கோடு (GTIN) + வரிசை எண்ணுக்கு இடையில் மாற்றவும்.

Scheme:SGTIN-9696 bits / Header 0x30

குறியீடு லாஜிக் & படிப்படியாக

// 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 என்பது 6 பகுதிகளாகப் பிரிக்கப்பட்ட 96-பிட் பைனரி சரமாகும்:

HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
தலைப்பு (8 பிட்)Bits 0-8 (8)
001100000x30

இது SGTIN-96 என அடையாளம் காணும் நிலையான முன்னொட்டு (00110000).

வடிகட்டி (3 பிட்)Bits 8-11 (3)
0113

பொருள் வகை (எ.கா. 1 = சில்லறை விற்பனை). கீழே உள்ள குறிப்பு வழிகாட்டியைப் பார்க்கவும்.

பிரிவு (3 பிட்)Bits 11-14 (3)
1015

பிரிவு 5 என்றால்: நிறுவன குறியீடு 24 பிட்களையும், தயாரிப்பு குறியீடு 20 பிட்களையும் எடுக்கும்.

நிறுவன முன்னொட்டுBits 14-38 (24)
1000100001010111110000118935363

GS1 ஆல் ஒதுக்கப்பட்ட தனிப்பட்ட நிறுவனக் குறியீடு.

பொருள் குறிப்புBits 38-58 (20)
00010111011001011101095837

உங்கள் குறிப்பிட்ட தயாரிப்பு குறியீடு.

வரிசை எண் (38 பிட்)Bits 58-96 (38)
000000000000000000000000000000000000011

ஒவ்வொரு குறிப்பிட்ட இயற்பியல் பொருளுக்கும் தனிப்பட்ட அடையாளங்காட்டி.

உங்கள் இயற்பியல் பார்கோடு மற்றும் மின்னணு தயாரிப்பு குறியீடு (EPC) ஆகியவற்றுக்கு இடையேயான உறவை காட்சிப்படுத்துதல்.

பார்கோடு (GTIN) மற்றும் SGTIN-96 URI ஆகியவற்றுக்கு இடையேயான தொடர்பைக் காட்டும் வரைபடம்
  1. படி 1: EPC திட்டத்திற்கான பைனரி தலைப்பு மதிப்பைத் தீர்மானிக்கவும். SGTIN-96க்கான பைனரி தலைப்பு மதிப்பு “00110000.”
  2. படி 2: பிரிவு மதிப்பு அட்டவணையில் இருந்து நிறுவன முன்னொட்டின் இலக்கங்களின் எண்ணிக்கையின் அடிப்படையில் பிரிவு மதிப்பைத் தேர்ந்தெடுக்கவும்.
  3. படி 3: வடிகட்டி மதிப்பு, பிரிவு மதிப்பு, நிறுவன முன்னொட்டு, உருப்படி குறிப்பு மற்றும் வரிசை எண்ணை பைனரி மதிப்பாக மாற்றவும்.
  4. படி 4: தலைப்பு, வடிகட்டி, பிரிவு, நிறுவன முன்னொட்டு, உருப்படி குறிப்பு மற்றும் வரிசை எண் பைனரி மதிப்புகளை வரிசைப்படுத்தி பைனரி EPC ஐ உருவாக்கவும்.

SGTIN-96 குறிப்பு வழிகாட்டி

மதிப்புவிளக்கம்
0மற்றவை அனைத்தும்
மற்ற வகைகளில் பொருந்தாத பொருட்களுக்குப் பயன்படுத்தப்படுகிறது. பொதுவாக சில்லறை விற்பனையில் அரிதாகவே பயன்படுத்தப்படுகிறது.
1விற்பனை முனையம் (POS) வர்த்தக பொருள்
விற்பனை முனையத்தில் விற்கப்படும் நிலையான நுகர்வோர் அலகு. எடுத்துக்காட்டு: ஒரு ஷாம்பு பாட்டில்.
2போக்குவரத்துக்கான முழு கேஸ்
பல பொருட்களைக் கொண்ட ஒரு நிலையான ஷிப்பிங் அலகு. எடுத்துக்காட்டு: 12 ஷாம்பு பாட்டில்களின் பெட்டி. 'ஒரு கேஸ்' மற்றும் 'ஒரு பொருள்' ஆகியவற்றை வேறுபடுத்துவதற்கு தளவாடங்களுக்கு முக்கியமானது.
3ஒதுக்கப்பட்டது
எதிர்கால பயன்பாட்டிற்காக ஒதுக்கப்பட்டது.
4உள் பேக் வர்த்தக பொருள் குழு
முழு கேஸை விட சிறிய குழு, பெரும்பாலும் அலமாரியில் காட்சிப்படுத்த அல்லது கையாளுவதற்கு. எடுத்துக்காட்டு: பிரதான பெட்டியின் உள்ளே சுருக்கப்பட்ட 3-பேக்.
5ஒதுக்கப்பட்டது
எதிர்கால பயன்பாட்டிற்காக ஒதுக்கப்பட்டது.
6அலகு சுமை
ஒரு பெரிய தளவாட அலகு, பொதுவாக பல பெட்டிகளைக் கொண்ட ஒரு தட்டு.
7நுகர்வோர் அலகு உள்ளே உள்ள கூறு
ஒரு நுகர்வோர் அலகு உள்ளே ஒரு குறிப்பிட்ட பகுதி. எடுத்துக்காட்டு: ஒரு பொம்மைக்குள் பேட்டரி கவர்.
மதிப்புநிறுவன முன்னொட்டுபொருள் குறிப்பு
040 பிட்கள் / 12 இலக்கங்கள்4 பிட்கள் / 1 இலக்கங்கள்
137 பிட்கள் / 11 இலக்கங்கள்7 பிட்கள் / 2 இலக்கங்கள்
234 பிட்கள் / 10 இலக்கங்கள்10 பிட்கள் / 3 இலக்கங்கள்
330 பிட்கள் / 9 இலக்கங்கள்14 பிட்கள் / 4 இலக்கங்கள்
427 பிட்கள் / 8 இலக்கங்கள்17 பிட்கள் / 5 இலக்கங்கள்
524 பிட்கள் / 7 இலக்கங்கள்20 பிட்கள் / 6 இலக்கங்கள்
620 பிட்கள் / 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 போன்றவை) பிற தலைப்புகள் உள்ளன.