以下是关于 Data Matrix 编码中 raw
选项的详细技术解析:
1. raw
选项的核心作用
raw
选项允许用户绕过编码器的自动数据处理,直接输入预编码的 码字(Codeword)。
本质:将数据字段视为 已编码的码字序列,而非原始文本。
适用场景:需要精确控制码字级别的编码逻辑(例如生成特殊符号、兼容旧系统、测试非标准码字组合)。
2. 语法规则
输入格式:每个码字以
^NNN
表示,其中NNN
是 1-255 的十进制整数。码字限制:
范围限制:码字必须为 1-255(0 是无效码字,255 是特殊填充码)。
格式强制:必须严格使用
^
前缀 + 3 位十进制数(如^001
而非^1
)。
示例输入:
^001^012^255^128
对应码字序列:[1, 12, 255, 128]
3. 关键特性
特性 | 说明 |
---|---|
绕过编码算法 | 不执行 C40/Text/ASCII 等模式压缩,直接使用用户提供的码字序列。 |
强制码字校验 | 输入的码字必须符合 Data Matrix 的码字规范(如 ECC 200 标准的码字表)。 |
支持功能字符 | 允许直接插入 ^FNC1 、^ECI 等功能符的码字(需符合其码字位置规则)。 |
无数据压缩 | 数据容量固定为码字数量,无法通过压缩算法优化容量。 |
4. 使用注意事项
码字有效性:
必须确保所有码字在 1-254 范围内(
^255
仅用于填充,需由编码器自动处理)。无效码字(如
^256
或^000
)会导致编码失败。结构化数据限制:
不支持 ISO/IEC 15434 结构化数据(如宏 05/06),需手动构造宏代码字。
ECI 处理:
若需切换字符集,必须显式插入
^ECIXXXXXX
的码字(如^927
表示 ECI 927)。尺寸匹配:
需手动确保码字数量与符号版本(如
24x24
)的容量匹配,否则可能截断或报错。
5. 典型应用场景
场景 | 操作示例 |
---|---|
测试非标准符号 | 生成包含保留码字(如 ^999 错误码字)的符号以验证扫描器容错性。 |
兼容旧系统 | 手动构造与旧版编码器完全一致的码字序列(如特定厂商的私有码字格式)。 |
二进制数据嵌入 | 直接映射二进制流为码字(如 ^001^002^003 表示十六进制 0x01 0x02 0x03 )。 |
调试编码逻辑 | 绕过自动编码算法,直接验证符号生成阶段的码字排列。 |
6. 与自动编码的对比
特性 | 自动编码模式 | raw 模式 |
---|---|---|
输入类型 | 原始文本/二进制数据 | 预编码的 ^NNN 码字序列 |
码字生成 | 编码器自动选择最优模式 | 用户完全控制码字 |
数据容量 | 自动压缩优化 | 固定为输入码字数量 |
错误处理 | 自动校验和填充 | 需用户自行保证码字有效性 |
适用场景 | 常规数据编码 | 底层调试、私有协议、兼容性需求 |
7. 操作示例
目标:生成包含 "AB" 和 FNC1 的 Data Matrix,手动构造码字序列。
标准编码结果(自动模式):
文本 "AB" + FNC1 的码字序列为
[66, 130, 232]
(ASCII 'A'=66, 'B'=130, FNC1=232)。raw
模式输入:^066^130^232
编码器直接使用码字
[66, 130, 232]
生成符号,与自动模式结果一致。
8. 故障排查
错误类型:
Invalid codeword ^256
原因:码字超出 255 限制。
解决:检查输入值是否在 1-255 范围内。错误类型:
Codeword count exceeds symbol capacity
原因:码字数量超过指定版本(如10x10
最大容量为 6 码字)。
解决:减少码字数量或选择更大的符号版本(如12x12
)。
9. 总结
raw
选项是 Data Matrix 编码的底层控制接口,适用于需要直接操作码字的场景。它牺牲了易用性和容量优化,换取对编码过程的完全控制,需谨慎使用以确保符合 Data Matrix 的码字规范。