[RAILS] [Ruby] Generiere verketteten QR-Code mit rqrcode (Knowledge)
Was ist ein konsolidierter QR-Code?
- Der QR-Code verfügt über eine "Verkettungsfunktion", die lange Daten in bis zu 16 QR-Codes unterteilt und beim Lesen kombiniert. (Einzelheiten finden Sie unter QR Code.com)
- In Japan sehen Sie dies häufig anhand der Rezepte, die Sie von Krankenhäusern / Kliniken erhalten.
- Die Ausgabefunktion wird von Formularausgabebibliotheken von Drittanbietern unterstützt, ist jedoch in der OSS-Bibliothek nur schwer zu finden. Daher habe ich sie rqrcode verwendet. Ich habe rqrcode geändert, damit es ausgegeben werden kann.
- Dieses Mal besteht das Ziel darin, den verketteten QR-Code auszugeben, der in der obigen "Vorschrift" aufgezeichnet werden soll, sodass nur der QR-Code im 8-Bit-Byte-Modus als Ziel ausgewählt wird.
Wie kann ich einen konsolidierten QR-Code erhalten?
-
Bei normalem QR-Code hat der Header-Teil der zu schreibenden Daten die folgende Struktur.
-
Darüber hinaus gibt es Versionen des QR-Codes von 1 bis 40 (= Größe des QR-Codes), und die Datengröße, die in einem QR-Code aufgezeichnet werden kann, ändert sich abhängig davon. (Siehe hier)
-
Es scheint, dass die Versionsspezifikation für den QR-Code an einer anderen Stelle als im Header-Teil geschrieben ist, daher wird sie hier weggelassen.
-
Die SS-Länge variiert je nach QR-Code-Version und Codierungsmodus zwischen 8 und 16 Bit.
- |
Länge |
Inhalt aufzuzeichnen |
E |
4bit |
Codierungsmodus(Siehe Tabelle unten) |
SS |
(Variable) |
Notieren Sie die Länge der Daten, die im QR-Code aufgezeichnet werden sollen |
Codierungsmodus |
Wert, der den Modus darstellt |
numeric |
1 (0b0001) |
alpha_numeric |
2 (0b0010) |
8bit_byte |
4 (0b0100) |
- Notieren Sie für den verketteten QR-Code im 8-Bit-Byte-Modus den Header-Teil wie folgt.
- Ich habe auf [hier] verwiesen (https://programresource.net/2013/05/04/2188.html).
- |
Länge |
Inhalt aufzuzeichnen |
3 |
4bit |
Modus mit verkettetem QR-Code(0b0011) |
N |
4bit |
Sequenznummer des zu verkettenden QR-Codes(Seriennummer von 0 bis 15) |
T |
4bit |
Letzte Sequenznummer des QR-Codes(Seriennummer von 0 bis 15) |
PP |
8bit |
Paritätswert aller Daten(XOR-Wert aller Bytes) |
E |
4bit |
Codierungsmodus(8bit_byte = 4) |
SS |
(Variable) |
Notieren Sie die Länge der aufzuzeichnenden Daten in einem QR-Code |
- Um den verketteten QR-Code zu erhalten, gehen Sie wie folgt vor.
- Bestimmen Sie die Version (Größe) des verketteten QR-Codes.
- Die maximale Anzahl von Verbindungen beträgt 16.
―― Außerdem scheint die Datenmenge, die mit einem verketteten QR-Code aufgezeichnet werden kann, 2 Byte geringer zu sein als mit einem normalen QR-Code. (Ich denke, die Datenmenge hat sich um 20 Bit erhöht, aber aus irgendeinem Grund scheint es, dass sie bis zu -2 Bytes aufzeichnen kann.)
――Die Version muss unter Berücksichtigung der beiden oben genannten Punkte festgelegt werden.
- Normalerweise werden alle QR-Codes mit derselben Version (Größe) erstellt. (Ich habe nicht versucht, QR-Codes mit verschiedenen Versionen zu verketten, aber es ist sicher, dies zu vermeiden, da einige Leser es möglicherweise nicht lesen können.)
- Berechnen Sie die Parität aus den im QR-Code gespeicherten Daten. (XOR-Wert aller Bytes = 8 Bit)
- Teilen Sie die Daten so, dass sie in den QR-Code passen, so dass sie in einen QR-Code passen. (Kapazität jedes QR-Codes - stellen Sie sicher, dass er in 2 Bytes passt)
- Generieren Sie so viele QR-Codes wie Sie benötigen und rendern Sie jeden.
- Geben Sie für alle QR-Codes den gleichen "Paritätswert" und die gleiche "letzte Sequenznummer" an.
- Geben Sie die "fortlaufende Nummer" und die Daten an, die für jeden QR-Code gespeichert werden sollen.
- Die Ausgabe des verketteten QR-Codes durch tatsächliches Ändern von rqrcode wird in Übung erläutert.
Bitte beachten Sie, dass sich jeder Leser anders verhält.
- Barcode-Scanner vom Lasertyp werden in Betrieben wie Apotheken verwendet. Da diese recht teuer sind, ist es etwas schwierig, Geräte für die Überprüfung des Betriebs vorzubereiten. (Ich war auch persönlich daran interessiert, daher habe ich bei Yahoo! einen gebrauchten Artikel zu einem niedrigen Preis erhalten. Ok. Es scheint, dass er häufig unerwartet aufgeführt wird.)
- Bis zur endgültigen Bestätigung mit dem Barcodescanner habe ich eine Smartphone-App verwendet, die das Lesen von konsolidiertem QR-Code unterstützt, um den Vorgang zu bestätigen. (Für iOS-Apps [Symbol](https://apps.apple.com/jp/app/qr%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AA% E3% 83% BC% E3% 83% 80% E3% 83% BC-% E3% 83% 90% E3% 83% BC% E3% 82% B3% E3% 83% BC% E3% 83% 89% E3 % 83% AA% E3% 83% BC% E3% 83% 80% E3% 83% BC-% E3% 82% A2% E3% 82% A4% E3% 82% B3% E3% 83% 8B% E3% 83% 83% E3% 83% 88 / id480090210) ・ [Pomera QR Code Reader](https://apps.apple.com/jp/app/%E3%83%9D%E3%83%A1%E3%83 % A9qr% E3% 82% B3% E3% 83% BC% E3% 83% 89% E3% 83% AA% E3% 83% BC% E3% 83% 80% E3% 83% BC / id371963393) · QRdeCODE Ich konnte nur 3 Typen finden.)
- Das Verhalten der Reader-App und des ** Barcode-Scanners ** kann jedoch je nach Produkt erheblich variieren.
- Es scheint einige zu geben, die nicht bestätigt haben, ob die Paritätswerte übereinstimmen. (Obwohl es im tatsächlichen Betrieb kein großes Problem ist)
- Wenn es nur einen QR-Code gibt (nicht geteilt), obwohl der verkettete QR-Code angegeben ist, kann möglicherweise etwas nicht gelesen werden. (Wenn die Datenmenge gering ist, scheint es besser, mit einem normalen QR-Code auszugeben.) (Derzeit werden Details erneut bestätigt.)
- Einige der oberen und unteren Bytes von Kanji (Shift JIS) verursachen verstümmelte Zeichen, wenn sie sich über zwei QR-Codes erstrecken. (Dieses Verhalten tritt häufig in Apps auf.)
- Aus den oben genannten Gründen ist es sicherer, eine Betriebsüberprüfungsumgebung unter der Annahme der tatsächlich verwendeten Geräte vorzubereiten, insbesondere für geschäftliche Zwecke.
――Für Barcodescanner ist es möglicherweise besser, mehrere Typen vorzubereiten, einschließlich etwas älterer Modelle.
Verweise
Dieser Artikel wurde unter Bezugnahme auf die folgenden Informationen verfasst.