Kigeuzi cha Msimbo wa RFID
Kigeuzi cha RFID
Badilisha kati ya RFID Hex (SGTIN-96) na GS1 Barcode (GTIN) + Nambari ya Siri.
EPC URIs
Mantiki ya Msimbo & Hatua kwa Hatua
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Msimbo wa Msanidi
Tumia mantiki hii ya matumizi katika mradi wako. Chagua lugha hapa chini.
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}Eleza
SGTIN-96 ni mfuatano wa binary wa biti 96 uliogawanywa katika sehemu 6:
001100000x30Kiambishi awali cha kawaida (00110000) kinachotambua hii kama SGTIN-96.
0113Aina ya kitu (k.m. 1 = Rejareja Rejareja). Tazama Mwongozo wa Marejeleo hapa chini.
1015Sehemu 5 inamaanisha: Msimbo wa Kampuni unachukua bits 24, Msimbo wa Bidhaa unachukua bits 20.
1000100001010111110000118935363Msimbo wa kipekee wa kampuni uliotolewa na GS1.
00010111011001011101095837Msimbo wako maalum wa bidhaa.
000000000000000000000000000000000000011Kitambulishi cha kipekee kwa kila bidhaa maalum ya kimwili.
Kuelewa SGTIN & GTIN
Kuonyesha uhusiano kati ya barcode yako ya kimwili na msimbo wa bidhaa ya kielektroniki (EPC).

Mantiki ya Usimbaji (Hatua kwa Hatua)
- Hatua ya 1: Bainisha thamani ya kichwa cha binary kwa mpango wa EPC. Thamani ya kichwa cha binary kwa SGTIN-96 ni “00110000.”
- Hatua ya 2: Chagua Thamani ya Sehemu kulingana na idadi ya tarakimu katika Kiambishi awali cha Kampuni kutoka Jedwali la Thamani ya Sehemu.
- Hatua ya 3: Badilisha Thamani ya Kichujio, Thamani ya Sehemu, Kiambishi awali cha Kampuni, Marejeleo ya Bidhaa, na Nambari ya Siri kuwa thamani ya binary.
- Hatua ya 4: Unganisha kwa mpangilio Kichwa, Kichujio, Sehemu, Kiambishi awali cha Kampuni, Marejeleo ya Bidhaa, na thamani za binary za Nambari ya Siri ili kuunda EPC ya Binary.
Mwongozo wa Marejeleo wa SGTIN-96
| Thamani | Maelezo |
|---|---|
| 0 | Wengine Wote Inatumika kwa bidhaa ambazo hazifai katika kategoria nyingine. Mara chache hutumika katika rejareja ya jumla. |
| 1 | Bidhaa ya Biashara ya Mahali pa Uuzaji (POS) Kitengo cha kawaida cha watumiaji kinachouzwa Mahali pa Uuzaji. Mfano: Chupa moja ya shampoo. |
| 2 | Kesi Kamili ya Usafirishaji Kitengo cha kawaida cha usafirishaji kilicho na bidhaa nyingi. Mfano: Katoni ya chupa 12 za shampoo. Muhimu kwa vifaa ili kutofautisha 'kesi moja' na 'bidhaa moja'. |
| 3 | Imehifadhiwa Imehifadhiwa kwa matumizi ya baadaye. |
| 4 | Uwekaji wa Bidhaa ya Biashara ya Kifurushi cha Ndani Kundi dogo kuliko kesi kamili, mara nyingi kwa onyesho la rafu au utunzaji. Mfano: Kifurushi cha shampoo 3 zilizofungwa ndani ya katoni kuu. |
| 5 | Imehifadhiwa Imehifadhiwa kwa matumizi ya baadaye. |
| 6 | Mzigo wa Kitengo Kitengo kikubwa cha vifaa, kwa kawaida godoro lenye kesi nyingi. |
| 7 | Kipengee ndani ya Kitengo cha Watumiaji Sehemu maalum ndani ya kitengo cha watumiaji. Mfano: Kifuniko cha betri ndani ya toy. |
| Thamani | Kiambishi awali cha Kampuni | Rejea ya Bidhaa |
|---|---|---|
| 0 | 40 Biti / 12 Tarakimu | 4 Biti / 1 Tarakimu |
| 1 | 37 Biti / 11 Tarakimu | 7 Biti / 2 Tarakimu |
| 2 | 34 Biti / 10 Tarakimu | 10 Biti / 3 Tarakimu |
| 3 | 30 Biti / 9 Tarakimu | 14 Biti / 4 Tarakimu |
| 4 | 27 Biti / 8 Tarakimu | 17 Biti / 5 Tarakimu |
| 5 | 24 Biti / 7 Tarakimu | 20 Biti / 6 Tarakimu |
| 6 | 20 Biti / 6 Tarakimu | 24 Biti / 7 Tarakimu |
Maswali Yanayoulizwa Mara kwa Mara ya SGTIN-96
- Inaiambia mfumo kiwango cha ufungaji cha lebo. Ikiwa mfumo unasoma lebo ya 'Kesi' (Kichujio 2), inajua kuwa ina vitu vingi. Hii inazuia kuhesabu mara mbili (k.m., kuhesabu kesi kama kitengo kimoja tu) na inaruhusu uthibitishaji halali wa usafirishaji.
- Kesi (Kichujio 2) ni kitengo kikuu cha usafirishaji kinachotumika kwa usafirishaji. Kifurushi cha Ndani (Kichujio 4) ni mgawanyiko ndani ya kesi hiyo, kawaida kwa utunzaji rahisi au onyesho (kama pakiti 6 ndani ya kesi ya makopo 24). Mifumo ya vifaa hufuatilia Kesi; Uendeshaji wa Duka unaweza kushughulikia vifurushi vya Ndani kwa ufanisi.
- Usanifu utashindwa au kutoa Barcode isiyo sahihi. Sehemu huamua haswa mahali ambapo Kiambishi cha Kampuni kinaisha na Marejeleo ya Bidhaa huanza. Ikiwa 'mahali pa mgawanyiko' hili haliko sawa, utapata Msimbo tofauti wa Kampuni kuliko ilivyokusudiwa.
- GTIN ya kawaida (Barcode) hutambua tu aina ya bidhaa (k.m., 'Soda ya 12oz'). SGTIN-96 inaongeza Nambari ya Mfululizo, ikimpa kila kibao kitambulisho cha kipekee. Hii huwezesha ufuatiliaji wa kiwango cha bidhaa, hukuruhusu kufuatilia ni bidhaa gani haswa ziliuzwa, kuibiwa, au kuisha muda wake.
- Ndiyo. Kama inavyoonyeshwa kwenye kibadilishaji hapo juu, kamba ya SGTIN-96 ina GTIN-14 kamili. Kwa kuondoa Nambari ya Mfululizo na habari ya kichwa, unaweza kujenga upya kikamilifu barcode asili ya rejareja.
- Kichwa (0x30) ni kiambishi awali cha kawaida cha biti 8 kilichofafanuliwa na GS1. Inamwambia tu msomaji yeyote wa RFID: "Lebo hii imesimbwa kwa kutumia kiwango cha SGTIN-96." Vichwa vingine vipo kwa viwango tofauti (kama SSCC kwa pallets au GIAI kwa mali).