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

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

RFID மாற்றி

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

// 1. Binary Conversion

src = bin(0x) // = "?"

// 2. Extract Fields (Bit Slice)

header = src[0:8] → "00110000""?" (?)
filter = src[8:11] → "..."?
partition = src[11:14] → "..."?

// 3. Determine Partition Rule (Partition ?)

rule = PARTITIONS[?]
// Company Bits: ?, Item Bits: ?

// 4. Extract Company & Item

company = src[14:14] → "..."?
itemRef = src[14:14] → "..."?
serial = src[14:96] → "..."?

டெவலப்பர் குறியீடு

உங்கள் திட்டத்தில் இந்த பயன்பாட்டு லாஜிக்கைப் பயன்படுத்தவும். கீழே ஒரு மொழியைத் தேர்ந்தெடுக்கவும்.

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 & GTIN ஐப் புரிந்துகொள்வது

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

பார்கோடு (GTIN) மற்றும் SGTIN-96 URI ஆகியவற்றுக்கு இடையேயான தொடர்பைக் காட்டும் வரைபடம்

SGTIN-96 என்பது 6 பகுதிகளாகப் பிரிக்கப்பட்ட 96-பிட் பைனரி சரமாகும்:

HDR
FLT
PRT
COMPANY
ITEM
SERIAL (38)

விரிவான பகுப்பாய்வு (பிட் பை பிட்)

தலைப்பு (8 பிட்)Bits 0-8 (8)
00110000

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

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

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

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

பிரிவு X என்றால்: நிறுவன குறியீடு Y பிட்களையும், தயாரிப்பு குறியீடு Z பிட்களையும் எடுக்கும்.

நிறுவன முன்னொட்டுBits 14-0 (0)
...

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

பொருள் குறிப்புBits 0-0 (0)
...

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

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

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

குறியீட்டு லாஜிக் (படி-படி)

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

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

Fமதிப்பு வடிப்பான்கள் (3 bits)

மதிப்புவிளக்கம்
0
மற்றவை அனைத்தும்
மற்ற வகைகளில் பொருந்தாத பொருட்களுக்குப் பயன்படுத்தப்படுகிறது. பொதுவாக சில்லறை விற்பனையில் அரிதாகவே பயன்படுத்தப்படுகிறது.
1
விற்பனை முனையம் (POS) வர்த்தக பொருள்
விற்பனை முனையத்தில் விற்கப்படும் நிலையான நுகர்வோர் அலகு. எடுத்துக்காட்டு: ஒரு ஷாம்பு பாட்டில்.
2
போக்குவரத்துக்கான முழு கேஸ்
பல பொருட்களைக் கொண்ட ஒரு நிலையான ஷிப்பிங் அலகு. எடுத்துக்காட்டு: 12 ஷாம்பு பாட்டில்களின் பெட்டி. 'ஒரு கேஸ்' மற்றும் 'ஒரு பொருள்' ஆகியவற்றை வேறுபடுத்துவதற்கு தளவாடங்களுக்கு முக்கியமானது.
3
ஒதுக்கப்பட்டது
எதிர்கால பயன்பாட்டிற்காக ஒதுக்கப்பட்டது.
4
உள் பேக் வர்த்தக பொருள் குழு
முழு கேஸை விட சிறிய குழு, பெரும்பாலும் அலமாரியில் காட்சிப்படுத்த அல்லது கையாளுவதற்கு. எடுத்துக்காட்டு: பிரதான பெட்டியின் உள்ளே சுருக்கப்பட்ட 3-பேக்.
5
ஒதுக்கப்பட்டது
எதிர்கால பயன்பாட்டிற்காக ஒதுக்கப்பட்டது.
6
அலகு சுமை
ஒரு பெரிய தளவாட அலகு, பொதுவாக பல பெட்டிகளைக் கொண்ட ஒரு தட்டு.
7
நுகர்வோர் அலகு உள்ளே உள்ள கூறு
ஒரு நுகர்வோர் அலகு உள்ளே ஒரு குறிப்பிட்ட பகுதி. எடுத்துக்காட்டு: ஒரு பொம்மைக்குள் பேட்டரி கவர்.

Pபிரிவினை அட்டவணை (3 bits)

மதிப்பு
நிறுவன முன்னொட்டு
(பிட்கள் / இலக்கங்கள்)
பொருள் குறிப்பு
(பிட்கள் / இலக்கங்கள்)
040 / 124 / 1
137 / 117 / 2
234 / 1010 / 3
330 / 914 / 4
427 / 817 / 5
524 / 720 / 6
620 / 624 / 7

SGTIN-96 அடிக்கடி கேட்கப்படும் கேள்விகள்