Data Matrix

<image>

Data Matrix（数据矩阵），是一种由黑色、白色的色块（单元格）以正方形或长方形组成的二维条码（也可称矩阵），于1994年8月由美国国际资料公司所研发出，主要用于零件、印制电路板等等，美国国际资料公司于2008年被Microscan公司收购。被编码的信息可能是文本或数字数据。数据大小通常是几个至1556字节。被编码数据的长度决定了矩阵中色块的数量。编码时经常使用校验码来增加可靠性：即便一个或多个色块被损坏而不可读，里面的信息仍然可被读取。一个数据矩阵可以存储最多2,335个英数字元。

## 应用

<image>

Data Matrix最流行的应用是小物件的标签，因为该编码能在2或3平方毫米的面积上编码50个字符，且在20%对比度下仍然可读。Data Matrix的大小不受限制，商业应用的图像包括小至300微米（在一台600微米硅装置上激光蚀刻）和大至1米（涂在棚车顶上）的平面。绘制与读取系统的保真度是其唯一的限制。

美国电子工业联盟（EIA）建议使用Data Matrix标注小型电子元件。

将Data Matrix编码打印在标签或书信上正日益普遍。使用一台条码读取器即可快速读取该编码，从而便于跟踪物品，例如跟踪包裹的邮递。

<image>

对工业工程来说，此条码也可直接在组件上标记，从而使用Data Matrix编码数据来识别组件。厂商可以用各种方法在在组件上完成，但在航空航天工业中，条码通常以工业喷墨、点阵打标、激光打标和电解化学蚀刻（ECE）完成，使用这些方法来得到可延续到组件寿命的永久性标记。

Data Matrix编码通常使用专业摄像设备及软件进行验证。这种验证确保编码符合相关标准，并确保组件使用寿命期间的可读性。在组件投入使用后，该代码仍可被读取镜头读取、解码，解码后的信息可用于多种目的，例如移动跟踪和库存检查。

<image>

Data Matrix编码与其他开源编码（例如一维条码）一样，也可以在手机上使用特定的移动应用来读取。

### 艺术

2006年5月，德国计算机程序员Bernd Hopfengärtner创作了一个大型的数据矩阵麦田圈，内藏信息为：“Hello, World!”。

## 技术规格

Data Matrix符号是由排列在周长查找器和定时模式内的模块组成的。它可以编码多达3116个ASCII（含扩展）字符。符号由包含模块的数据区域组成，这些数据区域以规则阵列的形式排列。大型符号包含多个区域。每个数据区域都由一个查找模式划定，其四面都被一个固定的区域边界（边缘）所包围。(注意：模块可以是圆形或方形——标准中没有定义具体的形状。例如，点状排列的单元一般是圆形的）。

<image>

## 标准

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字符。提供控制代码在不同的模式之间切换，如下表所示。

<image>

代码字｜解释

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 码？- 基恩士