Kigeuzi cha Msimbo wa RFID

Zana ya kubadilisha kati ya SGTIN-96 (RFID Hex) na Msimbo pau (GTIN) + Nambari ya Siri. Inatumika na visomaji vya kawaida vya RFID kama Zebra, Chainway, Impinj, Nextwaves. Kulingana na GS1 EPC Tag Data Standard.

Kigeuzi cha RFID

Mantiki ya Msimbo & Hatua kwa Hatua

// 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] → "..."?

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

Kuelewa SGTIN & GTIN

Kuonyesha uhusiano kati ya barcode yako ya kimwili na msimbo wa bidhaa ya kielektroniki (EPC).

Mchoro unaoonyesha muunganisho kati ya Barcode (GTIN) na SGTIN-96 URI

SGTIN-96 ni mfuatano wa binary wa biti 96 uliogawanywa katika sehemu 6:

HDR
FLT
PRT
COMPANY
ITEM
SERIAL (38)

Uchambuzi wa Kina (Kidogo kwa Kidogo)

Kichwa (8 bit)Bits 0-8 (8)
00110000

Kiambishi awali cha kawaida (00110000) kinachotambua hii kama SGTIN-96.

Kichujio (biti 3)Bits 8-11 (3)
...

Aina ya kitu (k.m. 1 = Rejareja Rejareja). Tazama Mwongozo wa Marejeleo hapa chini.

Sehemu (3 bit)Bits 11-14 (3)
...

Sehemu X inamaanisha: Msimbo wa Kampuni unachukua bits Y, Msimbo wa Bidhaa unachukua bits Z.

Kiambishi awali cha KampuniBits 14-0 (0)
...

Msimbo wa kipekee wa kampuni uliotolewa na GS1.

Rejea ya BidhaaBits 0-0 (0)
...

Msimbo wako maalum wa bidhaa.

Nambari ya Siri (38 bit)Bits 0-96 (38)
...

Kitambulishi cha kipekee kwa kila bidhaa maalum ya kimwili.

Mantiki ya Usimbaji (Hatua kwa Hatua)

  1. Hatua ya 1: Bainisha thamani ya kichwa cha binary kwa mpango wa EPC. Thamani ya kichwa cha binary kwa SGTIN-96 ni “00110000.”
  2. Hatua ya 2: Chagua Thamani ya Sehemu kulingana na idadi ya tarakimu katika Kiambishi awali cha Kampuni kutoka Jedwali la Thamani ya Sehemu.
  3. 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.
  4. 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

FThamani za Kichujio (bits 3)

ThamaniMaelezo
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.

PJedwali la Sehemu (bits 3)

Thamani
Kiambishi awali cha Kampuni
(Biti / Tarakimu)
Rejea ya Bidhaa
(Biti / Tarakimu)
040 / 124 / 1
137 / 117 / 2
234 / 1010 / 3
330 / 914 / 4
427 / 817 / 5
524 / 720 / 6
620 / 624 / 7

Maswali Yanayoulizwa Mara kwa Mara ya SGTIN-96