Μετατροπέας Κώδικα 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 είναι μια δυαδική συμβολοσειρά 96-bit χωρισμένη σε 6 μέρη:
001100000x30Τυπικό πρόθεμα (00110000) που αναγνωρίζει αυτό ως SGTIN-96.
0113Τύπος αντικειμένου (π.χ. 1 = Λιανική). Δείτε τον Οδηγό Αναφοράς παρακάτω.
1015Ο διαμερισμός 5 σημαίνει: Ο Κωδικός Εταιρείας παίρνει 24 bits, Ο Κωδικός Προϊόντος παίρνει 20 bits.
1000100001010111110000118935363Μοναδικός κωδικός εταιρείας που εκχωρείται από το GS1.
00010111011001011101095837Ο συγκεκριμένος κωδικός προϊόντος σας.
000000000000000000000000000000000000011Μοναδικό αναγνωριστικό για κάθε συγκεκριμένο φυσικό προϊόν.
Κατανόηση SGTIN & GTIN
Οπτικοποίηση της σχέσης μεταξύ του φυσικού γραμμωτού κώδικα και του ηλεκτρονικού κωδικού προϊόντος (EPC).

Λογική Κωδικοποίησης (Βήμα-Βήμα)
- Βήμα 1: Καθορίστε τη δυαδική τιμή επικεφαλίδας για το σχήμα EPC. Η δυαδική τιμή επικεφαλίδας για SGTIN-96 είναι "00110000".
- Βήμα 2: Επιλέξτε την Τιμή Διαμερισμού με βάση τον αριθμό ψηφίων στο Πρόθεμα Εταιρείας από τον Πίνακα Τιμών Διαμερισμού.
- Βήμα 3: Μετατρέψτε την Τιμή Φίλτρου, Τιμή Διαμερισμού, Πρόθεμα Εταιρείας, Αναφορά Αντικειμένου και Σειριακό # σε δυαδική τιμή.
- Βήμα 4: Συνενώστε με σειρά τις δυαδικές τιμές Επικεφαλίδας, Φίλτρου, Διαμερισμού, Προθέματος Εταιρείας, Αναφοράς Αντικειμένου και Σειριακού # για να σχηματίσετε το Δυαδικό EPC.
Οδηγός Αναφοράς SGTIN-96
| Τιμή | Περιγραφή |
|---|---|
| 0 | Όλα τα Άλλα Χρησιμοποιείται για αντικείμενα που δεν ταιριάζουν σε άλλες κατηγορίες. Σπάνια χρησιμοποιείται στη γενική λιανική. |
| 1 | Αντικείμενο Εμπορίου Σημείου Πώλησης (POS) Η τυπική καταναλωτική μονάδα που πωλείται στο Σημείο Πώλησης. Παράδειγμα: Ένα μπουκάλι σαμπουάν. |
| 2 | Πλήρες Κιβώτιο για Μεταφορά Μια τυπική μονάδα αποστολής που περιέχει πολλαπλά αντικείμενα. Παράδειγμα: Ένα κιβώτιο με 12 μπουκάλια σαμπουάν. Κρίσιμο για τη διαχείριση logistics για διάκριση 'ένα κιβώτιο' από 'ένα αντικείμενο'. |
| 3 | Δεσμευμένο Δεσμευμένο για μελλοντική χρήση. |
| 4 | Ομαδοποίηση Εσωτερικής Συσκευασίας Μια ομαδοποίηση μικρότερη από πλήρες κιβώτιο, συνήθως για ραφιέ ή χειρισμό. Παράδειγμα: Μια συσκευασία 3 τεμαχίων μέσα στο κύριο κιβώτιο. |
| 5 | Δεσμευμένο Δεσμευμένο για μελλοντική χρήση. |
| 6 | Φορτίο Μονάδας Μια μεγάλη μονάδα logistics, συνήθως μια παλέτα που περιέχει πολλαπλά κιβώτια. |
| 7 | Συστατικό εντός Καταναλωτικής Μονάδας Ένα συγκεκριμένο μέρος μέσα σε καταναλωτική μονάδα. Παράδειγμα: Το κάλυμμα μπαταρίας μέσα σε παιχνίδι. |
| Τιμή | Πρόθεμα Εταιρείας | Αναφορά Αντικειμένου |
|---|---|---|
| 0 | 40 Bits / 12 Ψηφία | 4 Bits / 1 Ψηφία |
| 1 | 37 Bits / 11 Ψηφία | 7 Bits / 2 Ψηφία |
| 2 | 34 Bits / 10 Ψηφία | 10 Bits / 3 Ψηφία |
| 3 | 30 Bits / 9 Ψηφία | 14 Bits / 4 Ψηφία |
| 4 | 27 Bits / 8 Ψηφία | 17 Bits / 5 Ψηφία |
| 5 | 24 Bits / 7 Ψηφία | 20 Bits / 6 Ψηφία |
| 6 | 20 Bits / 6 Ψηφία | 24 Bits / 7 Ψηφία |
Συχνές Ερωτήσεις SGTIN-96
- Λέει στο σύστημα το επίπεδο συσκευασίας της ετικέτας. Αν ένα σύστημα διαβάσει μια ετικέτα 'Κιβωτίου' (Φίλτρο 2), ξέρει ότι περιέχει πολλαπλά αντικείμενα. Αυτό αποτρέπει τη διπλή καταμέτρηση (π.χ. καταμέτρηση ενός κιβωτίου ως μία μονάδα) και επιτρέπει έγκυρη επαλήθευση αποστολής.
- Το Κιβώτιο (Φίλτρο 2) είναι η κύρια μονάδα αποστολής που χρησιμοποιείται για μεταφορά. Η Εσωτερική Συσκευασία (Φίλτρο 4) είναι ένα υποδιαίρεση μέσα σε εκείνο το κιβώτιο, συνήθως για ευκολότερο χειρισμό ή ραφιέ (όπως μια συσκευασία 6 μέσα σε κιβώτιο 24). Τα συστήματα logistics παρακολουθούν Κιβώτια· οι λειτουργίες καταστήματος μπορεί να χειρίζονται αποδοτικά Εσωτερικές Συσκευασίες.
- Η αποκωδικοποίηση θα αποτύχει ή θα παράγει λάθος Γραμμωτό Κώδικα. Ο Διαμερισμός καθορίζει ακριβώς πού τελειώνει το Πρόθεμα Εταιρείας και πού αρχίζει η Αναφορά Αντικειμένου. Αν αυτό το 'σημείο διχοτόμησης' είναι λάθος, θα λάβετε διαφορετικό Κωδικό Εταιρείας από τον προοριζόμενο.
- Το τυπικό GTIN (Γραμμωτός Κώδικας) αναγνωρίζει μόνο τον τύπο προϊόντος (π.χ. 'Αναψυκτικό 330ml'). Το SGTIN-96 προσθέτει έναν Σειριακό Αριθμό, δίνοντας σε κάθε κουτάκι μια μοναδική ταυτότητα. Αυτό επιτρέπει ιχνηλασιμότητα επιπέδου αντικειμένου, επιτρέποντάς σας να παρακολουθείτε ακριβώς ποιο συγκεκριμένο αντικείμενο πουλήθηκε, κλάπηκε ή έληξε.
- Ναι. Όπως φαίνεται στον μετατροπέα παραπάνω, η συμβολοσειρά SGTIN-96 περιέχει το πλήρες GTIN-14. Αφαιρώντας τον Σειριακό Αριθμό και τις πληροφορίες επικεφαλίδας, μπορείτε να ανακατασκευάσετε τέλεια τον αρχικό γραμμωτό κώδικα λιανικής.
- Η Επικεφαλίδα (0x30) είναι ένα τυπικό πρόθεμα 8-bit που ορίζεται από το GS1. Απλά λέει σε οποιονδήποτε αναγνώστη RFID: "Αυτή η ετικέτα είναι κωδικοποιημένη με το πρότυπο SGTIN-96." Άλλες επικεφαλίδες υπάρχουν για διαφορετικά πρότυπα (όπως SSCC για παλέτες ή GIAI για περιουσιακά στοιχεία).