DataMatrix.net

Prezentăm aici câteva detalii tehnice despre modalitatea de codificare a datelor folosind standardul DataMatrix pentru coduri de bare 2D, acesta oferind următoarele avantajele: densitate mare a informatiei pe suprafaţa ocupată, recuperarea consistentă în urma degradarii parţiale, citire rapidă indiferent de orientare, scalabilitate şi extensibilitate în funcţie de suprafaţa ocupată.
Puteţi descărca de mai jos un exemplu de aplicaţie precum şi o bibliotecă open-source licenţiată LGPL ce poate fi utilizată pentru codificarea/decodificarea informaţiilor folosind acest standard.

Ce este DataMatrix.net?

DataMatrix.net este o bibliotecă open-source C#/.NET pentru codare şi decodare coduri de bare 2D DataMatrix în formate comune de imagine (png, jpg, bmp, gif, ...).
Biblioteca publicată aici este o lucrare derivată din proiectul DataMatrix.net publicat pe SourceForge, la adresa http://datamatrixnet.sourceforge.net (versiunea 0.4.2).
Biblioteca şi exemplul de utilizare sunt publicate doar pentru popularizarea utilizării codurilor de bare şi pentru a uşura adopţia acestei tehnologii.
Nu ne asumăm nici o răspundere cu privire la modul de utilizare al codului sursă prezentat aici de către alţi producători de aplicaţii informatice.

Modificări aduse originalului:

  • Funcţionalităţi pentru procesare şiruri de octeţi (byte-array)

Descărcări:

Procedura de tipărire a codului de bare

1. Aplicaţia de raportare generează un fişier XML cu informaţiile existente de pe reţetă pe care îl validează cu schema XSD corespunzătoare.
2. Aplicaţia serializează XML-ul ca un array de bytes codificat UTF-8 pe care îl comprimă utilizând algoritmul portabil ZIP (JavaZip).
3. Informaţia comprimată este stocata tot într-un array de bytes care este apoi codificat folosind algoritmul Base256 (care reprezintă un mod optim de stocare a informaţiei de tip binar (non-alfanumeric/non-ASCII)cu o rată de 1-la-1.
4. Se generează o imagine (bitmap) codificată conform standardului DataMatrix, care poate fi inclusă într-un raport pentru a fi tipărită pe reţetă, aşa cum apare în exemplele prezentate mai sus.

Codificarea Base256 asigură o rată de conversie de 1-la-1 pentru date binare de tip array de bytes cu valori între (0…255). Mai mult, aceasta codificare asigură evitarea zonelor “albe” din codul de bare DataMatrix – ceea ce poate duce la desincronizarea procesului de citire, prin modificarea informaţiei cu o valoarea pseudo-aleatoare.

Aplicaţia de raportare din farmacie trebuie să poată citi acest cod pentru a permită farmacistului să preia automat informaţia stocată în codul de bare. Pentru realizarea acestui lucru este necesar un cititor de coduri de bare 2D, care este compatibil cu standardul DataMatrix.

Procedura de citire a codului de bare

1. Aplicaţia deschide portul de comunicaţii serial (fizic sau virtual) specificat de utilizator (de ex. “COM1”), iar opţional se poate configura viteza de comunicaţie (de ex. “9600 baud”) conform cu capabilităţile cititorului.
2. Aplicaţia stochează într-o memerie tampon datele primite prin portul serial şi la intâlnitea unui terminator de comunicaţie închide portul.
3. Dacă citirea a fost realizată cu success:
- cititorul va furniza aplicatiei un array de bytes;
- altfel aplicaţia va afişa un mesaj de eroare corespunzător.
4. Aplicaţia decodifică şirul de bytes realizând în sens invers paşii de la tipărire:
- decomprimare folosind algoritmul ZIP (JavaZip);
- deserializare array de bytes codificat UTF-8 reprezentând XML-ul original.
5. XML-ul este validat cu schema PEBarcode.xsd, iar dacă se termină cu succes:
- atunci aplicaţia va genera o nouă reţetă, completată cu datele preluate, pe care farmacitul o poate edita pentru a preciza medicamentele eliberate;
- altfel aplicaţia va afişa un mesaj de eroare de validare.