RFID kod konvertori
RFID Konvertori
RFID Hex (SGTIN-96) va GS1 Shtrix-kod (GTIN) + Seriya raqami o'rtasida konvertatsiya qiling.
EPC URIs
Kod mantig'i va bosqichma-bosqich
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Dasturchi kodi
Ushbu yordamchi mantiqni loyihangizda ishlating. Quyida tilni tanlang.
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}Tushuntirish
SGTIN-96 - 6 qismga bo'lingan 96 bitli ikkilik qatori:
001100000x30Ushbu SGTIN-96 sifatida aniqlaydigan standart prefiks (00110000).
0113Ob'ekt turi (masalan, 1 = Chakana savdo). Quyidagi Ma'lumotnomaga qarang.
10155 bo'limi quyidagilarni anglatadi: Kompaniya kodi 24 bit, Mahsulot kodi 20 bit oladi.
1000100001010111110000118935363GS1 tomonidan tayinlangan noyob kompaniya kodi.
00010111011001011101095837Sizning maxsus mahsulot kodingiz.
000000000000000000000000000000000000011Har bir jismoniy mahsulot uchun noyob identifikator.
SGTIN & GTIN ni tushunish
Jismoniy shtrix-kod va elektron mahsulot kodi (EPC) o'rtasidagi munosabatlarni vizualizatsiya qilish.

Kodlash mantig'i (Qadam-ba-qadam)
- 1-qadam: EPC sxemasi uchun ikkilik sarlavha qiymatini aniqlang. SGTIN-96 uchun ikkilik sarlavha qiymati “00110000”.
- 2-qadam: Bo'lim qiymati jadvalidan Kompaniya prefiksidagi raqamlar soniga asoslanib, Bo'lim qiymatini tanlang.
- 3-qadam: Filtr qiymati, Bo'lim qiymati, Kompaniya prefiksi, Mahsulot ma'lumotnomasi va Seriya raqamini ikkilik qiymatga aylantiring.
- 4-qadam: Ikkilik EPC ni shakllantirish uchun Sarlavha, Filtr, Bo'lim, Kompaniya prefiksi, Mahsulot ma'lumotnomasi va Seriya raqami ikkilik qiymatlarini ketma-ket qo'shing.
SGTIN-96 ma'lumotnomasi
| Qiymat | Tavsif |
|---|---|
| 0 | Boshqalar Boshqa toifalarga mos kelmaydigan mahsulotlar uchun ishlatiladi. Umumiy chakana savdoda kamdan-kam qo'llaniladi. |
| 1 | Savdo nuqtasi (POS) savdo mahsuloti Savdo nuqtasida sotiladigan standart iste'mol birligi. Misol: bitta shampun shishasi. |
| 2 | Transport uchun to'liq quti Bir nechta mahsulotni o'z ichiga olgan standart yuk tashish birligi. Misol: 12 ta shampun shishasi kartoni. Logistika uchun 'bir quti'ni 'bir mahsulot'dan ajratish muhim. |
| 3 | Zaxiralangan Kelajakda foydalanish uchun zaxiralangan. |
| 4 | Ichki paket savdo mahsulotini guruhlash To'liq qutidan kichikroq guruhlash, ko'pincha tokchada ko'rsatish yoki ishlov berish uchun. Misol: asosiy karton ichidagi shrink-o'ralgan 3-paket. |
| 5 | Zaxiralangan Kelajakda foydalanish uchun zaxiralangan. |
| 6 | Birlik yuk Katta logistika birligi, odatda bir nechta qutilarni o'z ichiga olgan pallet. |
| 7 | Iste'mol birligi ichidagi komponent Iste'mol birligi ichidagi ma'lum bir qism. Misol: O'yinchoq ichidagi batareya qopqog'i. |
| Qiymat | Kompaniya prefiksi | Mahsulot ma'lumotnomasi |
|---|---|---|
| 0 | 40 Bitlar / 12 Raqamlar | 4 Bitlar / 1 Raqamlar |
| 1 | 37 Bitlar / 11 Raqamlar | 7 Bitlar / 2 Raqamlar |
| 2 | 34 Bitlar / 10 Raqamlar | 10 Bitlar / 3 Raqamlar |
| 3 | 30 Bitlar / 9 Raqamlar | 14 Bitlar / 4 Raqamlar |
| 4 | 27 Bitlar / 8 Raqamlar | 17 Bitlar / 5 Raqamlar |
| 5 | 24 Bitlar / 7 Raqamlar | 20 Bitlar / 6 Raqamlar |
| 6 | 20 Bitlar / 6 Raqamlar | 24 Bitlar / 7 Raqamlar |
SGTIN-96 Savol-Javoblar
- Bu tizimga tegning qadoqlash darajasi haqida ma'lumot beradi. Agar tizim 'Quti' tegini (Filter 2) o'qisa, u bir nechta elementni o'z ichiga olishini biladi. Bu ikki marta hisoblashning oldini oladi (masalan, qutini bitta birlik sifatida hisoblash) va haqiqiy yuk tashishni tekshirishga imkon beradi.
- Quti (Filter 2) - tashish uchun ishlatiladigan asosiy yuk tashish birligi. Ichki o'ram (Filter 4) - bu qutining ichidagi bo'linma bo'lib, odatda osonroq ishlash yoki ko'rsatish uchun (masalan, 24 qutili qutining ichidagi 6-paket). Logistika tizimlari qutilarni kuzatadi; Do'kon operatsiyalari ichki o'ramlarni samarali boshqarishi mumkin.
- Dekodlash muvaffaqiyatsiz yakunlanadi yoki noto'g'ri shtrix-kodni beradi. Partition kompaniya prefiksi qayerda tugashini va mahsulot ma'lumotnomasi qayerdan boshlanishini aniq belgilaydi. Agar bu 'bo'linish nuqtasi' noto'g'ri bo'lsa, siz mo'ljallanganidan farq qiladigan kompaniya kodini olasiz.
- Standart GTIN (shtrix-kod) faqat mahsulot turini (masalan, '12oz Soda') aniqlaydi. SGTIN-96 har bir qutiga noyob identifikator berib, seriya raqamini qo'shadi. Bu mahsulot darajasida kuzatuvni yoqadi, bu sizga aynan qaysi mahsulot sotilganini, o'g'irlanganini yoki muddati o'tganini kuzatishga imkon beradi.
- Ha. Yuqoridagi konvertorda ko'rsatilganidek, SGTIN-96 qatori to'liq GTIN-14 ni o'z ichiga oladi. Seriya raqami va sarlavha ma'lumotlarini olib tashlash orqali siz asl chakana shtrix-kodni mukammal qayta tiklashingiz mumkin.
- Header (0x30) - GS1 tomonidan belgilangan standart 8-bitli prefiks. U shunchaki har qanday RFID o'quvchiga shunday deydi: "Ushbu teg SGTIN-96 standarti yordamida kodlangan." Boshqa sarlavhalar turli standartlar uchun mavjud (masalan, palletlar uchun SSCC yoki aktivlar uchun GIAI).