RFID Код Хувиргагч
RFID хувиргагч
RFID Hex (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 битийн хоёртын мөр юм:
001100000x30Үүнийг SGTIN-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 Түгээмэл Асуултууд
- Энэ нь системийн тагны сав баглаа боодлын түвшин-г хэлж өгдөг. Хэрэв систем нь 'Case' тагийг (Filter 2) уншвал, олон тооны зүйл агуулж байгааг мэддэг. Энэ нь давхар тоолохоос сэргийлдэг (жишээ нь, нэг хайрцгийг нэгж гэж тоолох) ба хүчинтэй тээвэрлэлтийн баталгаажуулалтыг хийх боломжийг олгодог.
- Case (Filter 2) нь тээвэрлэлтэд ашиглагддаг үндсэн тээвэрлэлтийн нэгж юм. Inner Pack (Filter 4) нь хайрцаг доторх дэд хэсэг бөгөөд ихэвчлэн амархан ашиглах эсвэл харуулах зориулалттай (жишээ нь, 24 лаазтай хайрцаг доторх 6 лааз). Логистикийн систем нь Case-ийг хянадаг; Дэлгүүрийн үйл ажиллагаа нь Inner Pack-ийг үр дүнтэйгээр зохицуулж болно.
- Декод хийхэд алдаа гарна эсвэл буруу Barcode үүсгэнэ. Partition нь Company Prefix-ийн төгсгөл болон Item Reference-ийн эхлэлийг тодорхойлдог. Хэрэв энэ 'хуваах цэг' буруу бол та хүссэнээс өөр Company Code авах болно.
- Стандарт GTIN (Barcode) нь зөвхөн бүтээгдэхүүний төрөл-ийг тодорхойлдог (жишээ нь, '12oz Soda'). SGTIN-96 нь Серийн дугаар нэмж, лааз бүрийг өвөрмөцөөр таних боломжтой болгодог. Энэ нь зүйлийн түвшний мөрдөлт-ийг идэвхжүүлж, яг аль зүйлийг зарсан, хулгайлсан эсвэл хугацаа нь дууссаныг хянах боломжийг олгодог.
- Тийм ээ. Дээрх хувиргагчид үзүүлснээр SGTIN-96 мөр нь бүрэн GTIN-14-ийг агуулдаг. Серийн дугаар болон гарчиг мэдээллийг хассанаар та анхны жижиглэн худалдааны баркодыг төгс сэргээх боломжтой.
- Header (0x30) нь GS1-ээс тодорхойлсон стандарт 8-битийн префикс юм. Энэ нь RFID уншигчид: "Энэ таг нь SGTIN-96 стандартаар кодлогдсон байна." гэж хэлдэг. Бусад стандартуудад зориулсан бусад гарчигууд байдаг (жишээ нь, паллетийн хувьд SSCC эсвэл активын хувьд GIAI).