Data Matrix

Data Matrix（數據矩陣），是一種由黑色、白色的色塊（單元格）以正方形或長方形組成的二維條碼（也可稱矩陣），於1994年8月由美國國際資料公司所研發出，主要用於零件、印製電路板等等，美國國際資料公司於2008年被Microscan公司收購。被編碼的資訊可能是文本或數字數據。數據大小通常是幾個至1556位元組。被編碼數據的長度決定了矩陣中色塊的數量。編碼時經常使用校驗碼來增加可靠性：即便一個或多個色塊被損壞而不可讀，裡面的資訊仍然可被讀取。一個數據矩陣可以存儲最多2,335個英數字元。

## 應用

Data Matrix最流行的應用是小物件的標籤，因為該編碼能在2或3平方毫米的面積上編碼50個字符，且在20%對比度下仍然可讀。Data Matrix的大小不受限制，商業應用的圖像包括小至300微米（在一台600微米矽裝置上雷射蝕刻）和大至1米（塗在棚車頂上）的平面。繪製與讀取系統的保真度是其唯一的限制。

美國電子工業聯盟（EIA）建議使用Data Matrix標註小型電子元件。

將Data Matrix編碼列印在標籤或書信上正日益普遍。使用一台條碼讀取器即可快速讀取該編碼，從而便於跟蹤物品，例如跟蹤包裹的郵遞。

對工業工程來說，此條碼也可直接在組件上標記，從而使用Data Matrix編碼數據來識別組件。廠商可以用各種方法在在組件上完成，但在航空航天工業中，條碼通常以工業噴墨、點陣打標、雷射打標和電解化學蝕刻（ECE）完成，使用這些方法來得到可延續到組件壽命的永久性標記。

Data Matrix編碼通常使用專業攝像設備及軟體進行驗證。這種驗證確保編碼符合相關標準，並確保組件使用壽命期間的可讀性。在組件投入使用後，該代碼仍可被讀取鏡頭讀取、解碼，解碼後的資訊可用於多種目的，例如移動跟蹤和庫存檢查。

Data Matrix編碼與其他開源編碼（例如一維條碼）一樣，也可以在手機上使用特定的移動應用來讀取。

### 藝術

2006年5月，德國電腦程式員Bernd Hopfengärtner創作了一個大型的數據矩陣麥田圈，內藏資訊為：「Hello, World!」。

## 技術規格

Data Matrix符號是由排列在周長查找器和定時模式內的模塊組成的。它可以編碼多達3116個ASCII（含擴展）字符。符號由包含模塊的數據區域組成，這些數據區域以規則陣列的形式排列。大型符號包含多個區域。每個數據區域都由一個查找模式劃定，其四面都被一個固定的區域邊界（邊緣）所包圍。(注意：模塊可以是圓形或方形——標準中沒有定義具體的形狀。例如，點狀排列的單元一般是圓形的）。

## 標準

Data Matrix是由International Data Matrix公司（ID Matrix）發明的，該公司被併入RVSI/Acuity CiMatrix，後者於2005年10月被西門子股份公司收購，2008年9月被Microscan Systems收購。今天，數據矩陣已被若干ISO/IEC標準所涵蓋，並在許多應用中屬於公共領域，這意味著它可以在沒有任何許可或特許權使用費的情況下使用。

- ISO/IEC 16022:2006-Data Matrix碼符號學規範
- ISO/IEC 15415-2-D印刷質量標準
- ISO/IEC 15418:2009-符號數據格式語義（GS1應用識別碼和ASC MH10數據識別碼和維護）。
- ISO/IEC 15424:2008-數據載體標識（包括符號學標識）用於區分不同條碼類型的標識。
- ISO/IEC 15434:2006-大容量ADC介質的語法（從掃描儀傳輸到軟體的數據格式等）。
- ISO/IEC 15459-獨特的識別碼

## 編碼

多種編碼模式用於存儲不同種類的資訊。默認的模式是每8位碼字存儲一個ASCII字符。提供控制代碼在不同的模式之間切換，如下表所示。

代碼字｜解釋

0｜未被使用

1–128｜ASCII 數據 (ASCII 值 + 1)

129｜消息結束

130–229｜數位對00-99

230｜基礎 C40編碼

231｜開始 Base 256 編碼

232｜FNC1

233｜結構追加。允許消息被分在幾個符號中。

234｜讀者編程

235｜設置下一字符的最高位

236｜宏 05

237｜宏 06

238｜開始 ANSI X12 編碼

239｜開始 Text 編碼

240｜開始 EDIFACT 編碼

241｜Extended Channel Interpretation 編碼

242–255｜未使用

### 文字模型

Code｜C40｜Text｜X12

set 0｜set 1｜set 2｜set 3｜set 0｜set 3

0｜set 1｜NUL｜'｜set 1｜'｜CR

1｜set 2｜SOH｜"｜a｜set 2｜A｜*

2｜set 3｜STX｜#｜b｜set 3｜B｜>

3｜space｜ETX｜$｜c｜space｜C｜space

4｜0｜EOT｜%｜d｜0｜D｜0

5｜1｜ENQ｜&｜e｜1｜E｜1

6｜2｜ACK｜『｜f｜2｜F｜2

7｜3｜BEL｜(｜g｜3｜G｜3

8｜4｜BS｜)｜h｜4｜H｜4

9｜5｜HT｜、｜i｜5｜I｜5

10｜6｜LF｜+｜j｜6｜J｜6

11｜7｜VT｜,｜k｜7｜K｜7

12｜8｜FF｜l｜8｜L｜8

13｜9｜CR｜.｜m｜9｜M｜9

14｜A｜SO｜/｜n｜a｜N｜A

15｜B｜SI｜:｜o｜b｜O｜B

16｜C｜DLE｜;｜p｜c｜P｜C

17｜D｜DC1｜<｜q｜d｜Q｜D

18｜E｜DC2｜=｜r｜e｜R｜E

19｜F｜DC3｜>｜s｜f｜S｜F

20｜G｜DC4｜?｜t｜g｜T｜G

21｜H｜NAK｜@｜u｜h｜U｜H

22｜I｜SYN｜v｜i｜V｜I

23｜J｜ETB｜\｜w｜j｜W｜J

24｜K｜CAN｜x｜k｜X｜K

25｜L｜EM｜^｜y｜l｜Y｜L

26｜M｜SUB｜_｜z｜m｜Z｜M

30｜Q｜RS｜hibit｜~｜q｜~｜Q

31｜R｜US｜DEL｜r｜DEL｜R

32｜S｜s｜S

33｜T｜t｜T

34｜U｜u｜U

35｜V｜v｜V

36｜W｜w｜W

37｜X｜x｜X

38｜Y｜y｜Y

39｜Z｜z｜Z

### EDIFACT模式

EDIFACT模式為每個字符使用6個位元，每4個字符封裝在3個字節。它可以存儲數字、大寫字母以及許多標點符號，但不支持小寫字母。

代碼｜含義

0 – 30｜ASCII代碼 64 – 94

31｜返回ASCII模式

32 – 63｜ASCII代碼32 – 63

### 基本256模式

Base 256模式的數據以長度指示器開始，然後是數據字節數。1到249的長度被編碼為一個字節，更長的長度被存儲為兩個字節。

$$\begin{cases} L1 = [\frac{length}{250}] + 249\\L2 = length \bmod 250 \end{cases}$$

其中［］為高斯符號/無條件捨去符號

最好避免在編碼資訊中出現長串的零，因為它們會成為數據矩陣符號中的大片空白區域，這可能會導致掃描儀失去同步。(由於這個原因，默認的ASCII編碼不使用零。)為了減少這種可能性，長度和數據字節被添加一個偽隨機值R(n)來掩蓋，其中n是字節流的位置。

$$R(n) = (149 \times n) \bmod255 + 1$$

## 外部連結

- GS1 DataMatrix Guideline: Overview and technical introduction to the use of GS1 DataMatrix
- 什麼是 Data Matrix 碼？- 基恩士