Programmierung

Scan me

In dem Blog-Beitrag Erzeugen von Barcodes haben wir bereits den Barcodegenerator in Form des PrtBarcode-Objekts vorgestellt. Der heutige Artikel hat den Quick Response Code (QR-Code) zum Thema. Im Nachfolgenden möchten wir auf einige Verwendungsmöglichkeiten eingehen und aufzeigen, welche Daten dem PrtBarcode-Objekt übergeben werden müssen, um einen validen QR-Code zu erhalten.

Geschichte

Entwickelt wurde der QR-Code 1994 in Japan von der Toyota-Tochter „Denso“ für die Kennzeichnung von Bauteilen in der Automobilindustrie.

Aufbau / Merkmale

Der QR-Code gehört zur Gruppe der Matrix-Codes. Der QR-Code verfügt im Vergleich zu anderen Barcodes eine hohe Speicherkapazität und kann bis zu 4296 Zeichen aufnehmen. Zusätzlich arbeitet der Code mit einer Fehlerkorrektur, so dass auch bis zu einem gewissen Grad an Verschmutzung oder Beschädigung, der Code lesbar bleibt.

Verbreitung

Ursprünglich für die Fertigungs- und Logistikbranche entwickelt, begegnet einem der QR-Code in den verschiedensten Lebensbereichen. Insbesondere durch die rasante Verbreitung der Smartphones, ist der QR einer der am häufigsten verwendeten Codes.

Einsatzbereiche

Das Anwendungsspektrum ist sehr vielfältig. Es reicht von einer einfachen Weiterleitung auf eine Website bis hin zum Bezahlen von Produkten und Dienstleistungen. Exemplarisch möchten wir drei Anwendungen vorstellen.

Weiterleiten auf eine Website
Die wohl einfachste Anwendung ist das Codieren einer Web-Adresse im QR-Code. Hierzu wird die URL an die Caption-Eigenschaft des PrtBarcode-Objekts übergeben. Damit der QR-Reader die Information nicht lediglich als Nachricht sondern als Website interpretiert, muss die URL inklusive http:// bzw. https:// definiert werden.

// Druckjob öffnen
tJob # PrtJobOpen('QRCode', '', _PrtJobOpenWrite | _PrtJobOpenTemp);
if (tJob > 0)
{
  tDoc # tJob->PrtInfo(_PrtDoc);
  // PrtBarcode-Objekt ermitteln
  tBCode # tDoc->PrtSearch('PrtBarcode');
  // Fehlerkorrektur auf Level Q setzen
  tBCode->ppCorrectionLevel # 2;
  // Barcodetyp QR verwenden
  tbCode->ppTypeBarcode # _WinBarcode2dQRCode;
  // URL definieren
  tBCode->ppCaption # 'http://www.vectorsoft.de/Blog';
  ...
  ...
}
http://www.vectorsoft.de/Blog

Wie bereits erwähnt, verwendet der QR-Code einen Korrektur-Level. Insgesamt existieren vier solcher Level:

Level L: maximal 7 Prozent Fehlerkorrektur
Level M: maximal 15 Prozent Fehlerkorrektur
Level Q: maximal 25 Prozent Fehlerkorrektur
Level H: maximal 30 Prozent Fehlerkorrektur

Die Prozentangabe sagt aus, dass die Daten auch dann noch rekonstruiert werden können, wenn die Daten des Codes bis zu dem definierten Wert beschädigt bzw. nicht lesbar sind.

Im obigen Beispiel wird mit Hilfe der Eigenschaft ppCorrectionLevel
den Korrektur-Level des QR-Codes auf „Q“ gesetzt. Diesen haben wir gewählt, da der Barcode von einem Bild überdeckt wird und somit Bereiche des Codes nicht gelesen werden können.

Ab der kommenden CONZEPT 16-Version 5.7.09 ist die Angabe des gewünschten Fehlerkorrektur-Levels über die Eigenschaft ppCorrectionLevel möglich.
QR-Code auf der Visitenkarte
Im nachfolgenden Beispiel werden Kontaktdaten im vCard-Format gespeichert. Bei vCard handelt es sich um ein standardisiertes Dateiformat zum Speichern und Austauschen von Kontaktdaten. Durch Scannen des Codes lassen sich die Daten in das Telefonbuch des Mobiltelefons übertragen.

tBcode->ppCaption # 'BEGIN:VCARD'
         + sCRLF  + 'VERSION:3.0'
         + sCRLF  + 'N:Schramm;Andreas'
         + sCRLF  + 'FN:Andreas Schramm'
         + sCRLF  + 'ORG:vectorsoft AG'
         + sCRLF  + 'TEL;WORK;VOICE:+49 6104 660-300'
         + sCRLF  + 'EMAIL:support@vectorsoft.de'
         + sCRLF  + 'END:VCARD';
Kontaktdaten im vCard-Format

Bezahlen von Rechnungen per GiroCode
Bei dem GiroCode handelt es sich um einen QR-Code, welcher alle notwendigen Überweisungsdaten wie BIC, IBAN, Empfänger etc. enthält. Mit einer entsprechenden Banking-App lassen sich die die Daten automatisch in das Überweisungsformular übertragen.

// Korrektur-Level M
tBCode->ppCorrectionLevel # 1;
tBCode->ppCaption # 'BCD'                         // Servicekennung
          + sCRLF + '001'                         // Version
          + sCRLF + '1'                           // Kodierung
          + sCRLF + 'SCT'                         // Funktion
          + sCRLF + 'HELADEF1OFF'                 // BIC
          + sCRLF + 'Müller, Jakob'               // Name
          + sCRLF + 'DE12505500200999999999'      // IBAN
          + sCRLF + 'EUR50';                      // Betrag
GiroCode
Weiterführende Informationen zu vCard und GiroCode:
2 Kommentare

2 Kommentare “Scan me”

Kommentar abgeben