Datu matrica

thumb|DataMatrix koda piemērs, kurā iekodēts teksts: "Wikipedia, the free encyclopedia"
**Datu matrica** () ir divdimensiju kods, kas sastāv no melniem un baltiem "punktiem" vai punktiem, kas izvietoti kvadrātveida vai taisnstūrveida zīmējumā, ko sauc arī par matricu. Iekodētā informācija var būt gan teksta, gan ciparu formā. Parastais datu apjoms ir no dažiem baitiem līdz 1556 baitiem. Iekodēto datu garums ir atkarīgs no šūnu skaita matricā. Kļūdu labošanas kodus bieži izmanto koda uzticamības paaugstināšanai: pat, ja ir bojātas 15 vai vairāk šūnu, tas nav nolasāms, tomēr ziņojumu joprojām nolasīt var. Data Matrix simbolā var saglabāt līdz 2335  burtciparu rakstzīmēm.

DataMatrix koda simboli ir taisnstūrveida, parasti kvadrātveida, un tie sastāv no bitus attēlojošiem kvadrātveida "punktiem". Atkarībā no izmantotā kodējuma "gaišā" šūna apzīmē 0 un "tumšā" šūna ir 1 vai arī otrādi. Katrs DataMatrix koda simbols sastāv no divām masīvām, blakus esošām robežām "L" burta formā (sauktām arī par "meklētāja šablonu") un otrām divām apmalēm, kas sastāv no pārmaiņus tumšām un gaišām "šūnām" vai moduļiem (sauktiem par "laika šablonu"). Šo robežu ietvarā atrodas visa šūnu rindās un kolonnās iekodētā informācija. Meklētāja šablons tiek izmantots, lai atrastu un orientētu simbolu, savukārt laika šablons nodrošina rindu un kolonnu skaitu simbolā. Tā kā simbolā tiek kodēts vairāk datu, palielinās šūnu (rindu un kolonnu) skaits. Katrs kods ir unikāls. Simbolu izmēri svārstās no 10 × 10 līdz 144 × 144 jaunajā versijā ECC 200 un no 9 × 9 līdz 49 × 49 vecajā versijā ECC 000 - 140.

## Pielietojums
[thumb| DataMatrix ar iekodētu sērijas numuru 15C06E115AZC72983004 uz  [PCI|Mini PCI kartes]]
Vispopulārākais DataMatrix koda pielietojums, pateicoties tā spējai simbolā iekodēt piecdesmit rakstzīmes, kas ir nolasāmas pat pie 2 vai 3 mm2, un fakta, ka koda nolasīšanai pietiek ar tikai 20% kontrasta attiecību, ir mazu priekšmetu marķēšana. DataMatrix ir mērogojams; komerciālā pielietojumā ir atrodami par 300 mikrometriem (0.012 collām) mazāki attēli (lāzera gravējums uz 600 mikrometru silīcija ierīces), un arī tik lieli kā 1 metru (3&nbsp;pēdas) liels (uz kastes vāka uzkrāsots) kvadrāts. Marķēšanas un nolasīšanas sistēmu uzticamība ir vienīgais ierobežojums. ASV Elektronisko nozaru alianse (EIA) mazo elektronisko komponentu marķēšanai iesaka izmantot DataMatrix.

DataMatrix kodi kļūst aizvien izplatītāki drukātajos nesējos, piemēram, uz etiķetēm vai vēstulēm. Kodu var ātri nolasīt ar svītrkodu lasītāju, kas ļauj izsekot datu nesēju, piemēram,

saņēmējam nosūtītu paku.
left|thumb| Virsmu marķēšana
Rūpnieciskās inženierijas vajadzībām DataMatrix kodus var marķēt tieši uz komponentēm, līdz ar to nodrošinot, ka ar DataMatrix iekodētajiem datiem tiek identificēta vienīgi paredzētā komponente. Komponentes ar kodiem var marķēt ar dažādām metodēm, taču aviācijas un kosmosa industrijā parasti tiek izmantota rūpnieciskā tintes strūkla, punktveida iezīmēšana, lāzera marķēšana un elektrolītiskā ķīmiskā kodināšana (EEK). Šīs metodes piešķir paliekošu marķējumu, kas var saglabāties līdz pat komponentes kalpošanas laika beigām.

DataMatrix kodus parasti pārbauda, izmantojot speciālu kameru aprīkojumu un programmatūru. Šī pārbaude nodrošina koda atbilstību attiecīgajiem standartiem un nodrošina salasāmību visā komponentes darbības laikā. Pēc komponentes ienākšanas pakalpojumā DataMatrix kodu var nolasīt ar nolasītāja kameru, kas dekodē DataMatrix datus, kurus pēc tam var izmantot dažādiem mērķiem, piemēram, pārvietošanas izsekošanai vai krājumu pārbaudei.
thumb|Data Matrix koda nolasīšana ar mobilo tālruni ( Semacode projekts)
DataMatrix kodus tāpat kā citus atvērtos kodus, piemēram, 1D svītrkodus, var nolasīt arī ar mobilajiem tālruņiem, lejupielādējot attiecīgās mobilās aplikācijas. Lai gan daudzas mobilās ierīces spēj nolasīt 2D kodus, ieskaitot DataMatrix, dažas no tām dekodēšanu paplašina, nodrošinot mobilo piekļuvi un mijiedarbību, līdz ar to kodu izmantošana saziņas līdzekļos ir droša; piemēram, uzraudzības un izsekošanas jomā, pret viltojumiem, e-valdības un banku risinājumos.

### Pārtikas rūpniecība
Data Matrix kodi tiek izmantoti pārtikas rūpniecībā autokodēšanas

sistēmās pārtikas produktu nepareizas iepakošanas un datēšanas novēršanai. Kodi tiek uzturēti pārtikas ražotāju iekšējās datu bāzēs un ir saistīti ar katru unikālo produktu, piemēram, sastāvdaļu variācijām. Katras produkta partijas marķēšanai printeris tiek nodrošināts ar unikālu kodu. Veidojot etiķetes dizainu, nepieciešams nodrošināt, ka 2D DataMatrix kods tiek novietots optimālai skenēšanai. Ja nav drukas kvalitātes problēmu, tad melnbalta koda pārbaude nav nepieciešama, tomēr pirms izgatavošanas ir jāpārbauda visas krāsu variācijas, lai nodrošinātu to nolasāmību. 

### Dizains
2006. gada maijā vācu datorprogrammētājs Bernds Hopfengārtners *(Bernd Hopfengärtner)* kviešu laukā izveidoja lielu DataMatrix kodu (izskatā līdzīgu apļiem labības laukos). Ziņojumā bija rakstīts "Sveika, pasaule!". Parīzes tetovējumu mākslinieks K.A.R.L. izmantojot DataMatrix kodu, 2011. gada jūnijā,  Ballantine skotu viskija reklāmas kampaņas ietvaros sadarbības procesa laikā, kas tika straumēts tiešraidē Facebook, izveidoja pasaulē pirmo animēto tetovējumu.

## Tehniskās specifikācijas
thumb|DataMatrix koda piemērs, kurā iekodēts teksts: "Wikipedia" un iekrāsots, lai parādītu datus (zaļš), aizpildījums (dzeltens), kļūdu korekcija (sarkans), meklētāja un laika šabloni (fuksīna) un neizmantots (oranžs).
DataMatrix simboli sastāv no moduļiem, kas izvietoti meklētāja šablona un laika šablona ietvaros. Tajos var iekodēt līdz 3116 rakstzīmēm no visas ASCII rakstzīmju kopas (ar paplašinājumiem). Simbols sastāv no datu reģioniem, kas satur regulārā masīvā izvietotus moduļus. Lielie simboli ietver vairākus reģionus. Katru datu reģionu ierobežo meklētāja šablons, un to no visām četrām pusēm ieskauj klusās zonas robeža (mala). (Piezīme: Moduļi var būt gan apaļi, gan kvadrātveida – standartā konkrēta forma nav noteikta. Piemēram, punktveida šūnas parasti ir apaļas.)

### DataMatrix ECC 200
Jaunākā DataMatrix versija ECC 200, kļūdu un dzēsto datu atgūšanas nolūkos izmanto Reed-Solomon kodus. Pie nosacījuma, ka matrica joprojām ir precīzi atrodama, ECC 200 ļauj atjaunot visu iekodēto datu virkni, arī tādos gadījumos, kad simbola bojājumi sasniedz 30%. DataMatrix kļūdu līmenis ir mazāks kā 1 no 10 miljoniem skenēto rakstzīmju.

Simbolā esošās rindas ir pāra skaita un kolonnas ir pāra skaita. Lielākā daļa simbolu ir kvadrātveida, izmēros no 10 × 10 līdz 144 × 144. Daži simboli ir taisnstūrveida ar izmēriem no 8 × 18 līdz 16 × 48 (tikai pāra vērtībās). Visus simbolus, kuros tiek izmantota ECC 200 kļūdu labošana, var atpazīt pēc augšējā labā stūra moduļa, kas ir fona krāsā. (binārā 0).

Papildu iespējas, ar ko ECC 200 simboli atšķiras no iepriekšējiem standartiem, ietver:

* Pretējs nolasāmo simbolu attēlojums (gaiši attēli uz tumša fona)
* Rakstzīmju kopas specifikācija (izmantojot paplašinātās kanālu interpretācijas )
* Taisnstūra simboli
* Strukturēts papildinājums (spēj piesaistīt līdz 16 simboliem lielāka datu apjoma iekodēšanai)

### DataMatrix ECC 000–140
DataMatrix vecākās versijas ietver ECC 000, ECC 050, ECC 080, ECC 100, ECC 140. Tā vietā, lai izmantotu Reed-Solomon kodus, kā piemēram, ECC 200, ECC 000–140 izmanto uz konvekciju balstītu kļūdu korekciju. Katra no tām atšķiras pēc kļūdu korekcijas apjoma, sākot ar ECC 000, kas nepiedāvā neko, un beidzot ar ECC 140, kas piedāvā no tiem vislielāko. Kļūdu noteikšanai atkodēšanas laikā, pat ECC 000 gadījumā, katra no šīm versijām bitu rakstā iekodē arī cikliskās atkārtošanās pārbaudi (*Cyclic Redundancy Check* (CRC)). Kā papildu mērs katra bita izvietojumam kodā ir tā noteikšana saskaņā ar specifikācijā iekļautās bitu izvietošanas tabulu. Šīm vecākajām versijām vienmēr ir nepāra skaits moduļu, un kas var tikt sastādīti skaitā no 9 × 9 līdz 49 × 49. Visus simbolus, kuros tiek izmantota ECC 000 līdz 140 kļūdu labošana, var atpazīt pēc augšējā labā stūra moduļa, kura krāsa ir pretēja fona krāsai. (binārais 1).

Saskaņā ar ISO / IEC 16022, "ECC 000–140 jāizmanto tikai slēgtās aplikācijās, kur viena un tā pati puse kontrolē gan simbolu ražošanu, gan lasīšanu un kopumā ir atbildīga par sistēmas vispārējo veiktspēju".

## Standarti
DataMatrix tika izgudrots International Data Matrix, Inc. (ID Matrix), kas tika apvienota ar RVSI/Acuity CiMatrix, kurus 2005. gada oktobrī iegādājās Siemens AG un 2008. gada septembrī Microscan Systems. DataMatrix šodien ietver vairāki ISO/IEC

standarti un ir publiski pieejams daudzām aplikācijām, kas nozīmē, ka to var izmantot bez jebkādas licencēšanas vai autoratlīdzības.

* ISO/IEC 16022: 2006 - DataMatrix kodu simboloģijas specifikācija
* ISO/IEC 15415 - 2-D Drukas kvalitātes standarts
* ISO/IEC 15418: 2016 - simbolu datu formātu semantika (GS1 pielietojuma identifikatori un ASC MH10 datu identifikatori un uzturēšana)
* ISO/IEC 15424: 2008 - Datu nesēju identifikatori (ieskaitot simbolu identifikatorus) [dažādu svītrkodu tipu atšķiršanas ID]
* ISO/IEC 15434: 2006 - lieljaudas ADC datu nesēju sintakse (no skenera uz programmatūru pārsūtīto datu formāts utt.)
* ISO/IEC 15459 - unikālie identifikatori

## Kodēšana
thumb|Rūpnieciskie DataMatrix kodu lasītāji
Kodēšanas process ir aprakstīts ISO/IEC standartā 16022:2006. DataMatrix ECC-200 varianta kodēšanai un dekodēšanai ir publicēta atvērtā koda programmatūra.

Turpmāk redzamās diagrammas ilustrē ziņojuma datu izvietojumu DataMatrix simbolā. Ziņojuma saturs ir "Wikipedia", un tas ir sakārtots nedaudz sarežģītā diagonālā rakstā, ar sākumu augšējā kreisajā stūrī. Dažas rakstzīmes ir sadalītas divās daļās, piemēram, sākuma W, un trešais “i” ir “stūra 2.šablonā”, nevis parastajā L formas izkārtojumā. Tiek parādīts arī ziņojuma beigu kods (apzīmēts ar “End”), aizpildījuma (P) un kļūdu korekcijas (E) baiti un četri neizmantotās vietas moduļi (X).

Dažādu veidu ziņojumu glabāšanai tiek izmantoti vairāki kodēšanas režīmi. Noklusējuma režīmā tiek par katru 8 bitu koda vārdu tiek saglabāta viena ASCII rakstzīme. Vadības kodi ir paredzēti, lai pārslēgtos starp režīmiem, kā parādīts zemāk.

### Teksta režīmi
Režīmi C40, Teksts un X12, iespējams, ir kompaktāki īsziņu glabāšanai. Tie ir līdzīgi DEC Radix-50, izmantojot rakstzīmju kodus diapazonā no 0 līdz 39, un trīs no šiem kodiem tiek apvienoti, lai izveidotu skaitli līdz 403 = 64000, kas ir ievietots divos baitos (maksimālā vērtība 65536) kā parādīts:

: V = C1 × 1600 + C2 × 40 + C3 + 1
: B1 = floor(V / 256)
: B2 = V mod 256

Noslēdzošā vērtība B1 ir diapazonā 089. Īpašo vērtību 254 izmanto, lai atgrieztos ASCII kodēšanas režīmā.

Rakstzīmju kodu interpretācijas ir parādītas zemāk esošajā tabulā. Režīmiem C40 un Text ir četras atsevišķas kopas. 0.kopa ir noklusējums, un tajā ir kodi, kas īslaicīgi izvēlas citu kopu nākamajai rakstzīmei. Vienīgā atšķirība ir tā, ka tie maina lielos un mazos burtus. C40 galvenokārt ir lielie burti, ar mazajiem burtiem 3.kopā; Text ir tieši pretēji. 1.kopa, kas satur ASCII vadības kodus, un 2.kopa, kas satur pieturzīmes, režīmā C40 un Text ir identiskas.

### EDIFACT režīms
EDIFACT režīmā katrā rakstzīmē tiek izmantoti seši biti ar četru rakstzīmju ievietošanu trīs baitos. Tajā ir iespējams saglabāt ciparus, lielos burtus un daudzus pieturzīmes, taču tas neatbalsta mazos burtus.

### Base 256 režīms
Bāzes 256 režīma dati sākas ar garuma indikatoru, kam seko vairāki datu baiti. Garums no 1 līdz 249 tiek kodēts kā viens baits, un garāki garumi tiek saglabāti kā divi baiti.

: L1 = floor(garums / 250) + 249, L2 = garums mod 250

Kodētā ziņojumā ir vēlams izvairīties no garām nuļļu virknēm, jo DataMatrix simbolā tās kļūst par lielām, tukšām vietām, kā rezultātā skeneris var zaudēt sinhronizāciju. (Noklusējuma ASCII kodējumā šī iemesla dēļ nulle netiek izmantota.) Lai to padarītu mazāk iespējamu, garums un datu baiti tiek aizklāti, pievienojot pseidonejaušu vērtību R(n), kur “n” apzīmē atrašanās vietu baitu plūsmā.

: R (n) = (149 × n) mod 255 + 1

## Patentu jautājumi
Pirms ASV U.S. Patent 5,612,524 termiņa beigām 2007. gada novembrī intelektuālā īpašuma uzņēmums Acacia Technologies apgalvoja, ka DataMatrix ir daļēji ietverts tā saturā. Acacia, kā patenta īpašnieks, iespējams, sazinājās ar DataMatrix lietotājiem, pieprasot ar patentu saistītu licences maksu.

Lielais 2D svītrkodu ierīču ražotājs Cognex Corporation, pēc informācijas saņemšanas par Acacia sazināšanos ar saviem klientiem pieprasot licencēšanas maksu, 2006. gada 13. martā iesniedza deklaratīvu sūdzību. 2008. gada 19. maijā ASV Minesotas apgabala tiesas tiesnesis Džoans N. Ēriksens lēma par labu Cognex. Nolēmumā tika nospriests, ka ‘524.patents, kas apgalvo, ka tas attiecas uz 2D simboloģijas kodu izgūšanas un nolasīšanas sistēmu, ir nederīgs un neizpildāms, atbildētāju netaisnās rīcības dēļ patenta iepirkuma laikā.

Kaut arī nolēmums tika pasludināts pēc patenta termiņa beigām, tas liedza izvirzīt prasības par pārkāpumiem attiecībā uz DataMatrix izmantošanu pirms 2007. gada novembra.

1991. gadā iesniegtais un 1992. gadā publicētais Vācijas patenta pieteikums DE 4107020. Šis patents nav minēts iepriekš minētajos ASV patentu pieteikumos, un var tos padarīt nederīgus. 

## Atsauces
 

## Ārējās saites

* GS1 DataMatrix vadlīnijas: GS1 DataMatrix pārskats un pielietošanas tehniskais ievads 
* DataMatrix koda ģenerators - tiešsaistes rīks