MaxiCode是美国联合包裹服务公司(UPS)在20世纪90年代早期开发的密集代码,用于在高速传送带上对包裹进行分类。二维(2D)符号具有一英寸的固定尺寸,由888个亮和暗的六边形模块组成,排列在靶心探测器图案周围(下图1)。在发布到公共领域后,MaxiCode按照ISO/IEC 16023进行了标准化。ISO标准略微修改了最初的MaxiCode设计,在相邻模块之间创建了一些最小的间距,并扩展了数据编码,使应用程序能够超越排序和跟踪包。
MaxiCode符号中的黑白模块排列在由33行组成的对角线矩阵中,其中交替包含30和29个模块。一个MaxiCode符号的最大数据容量为93个字母数字字符或138个数字字符。
MaxiCode在最外面的取景器圆的周长上使用了六个三模组,每个模组都有一个固定的模式,用于确定方向。另外四个模块用于指示符号的模式(有七个模式,稍后讨论)。第一行中最右边的两个模块也是黑色的。其余的864个模块用于数据表示和错误纠正。数据字符或码字使用每个6位表示;因此,在MaxiCode条形码中,864个模块转换为144个码字。
图1显示了一个突出显示了这些方向模式和模块的MaxiCode条码。
与许多其他二维条形码一样,MaxiCode使用了一种被称为Reed-Solomon错误校正的复杂错误检测和校正技术,通常称为错误校正码字(error correction Codewords, ECC)。ECC比传统的校验和先进得多,因为它不仅能够检测多个错误或遗漏(根本无法读取的数据),而且可以用于纠正两者。使用ECC,可以损坏多达1/8的条码码字,但所有数据都可以成功解码。
MaxiCode使用两种错误校正级别之一:标准错误校正(SEC)或增强错误校正(EEC)。主要消息总是使用EEC,而次要消息的错误级别由符号模式控制。如前所述,有七种不同的模式用于识别错误修正级别和数据格式。如下表所示:
模式 | 描述 |
0 | 过时的;被模式2和3所取代 |
1 | 过时的;被模式4取代 |
2 | 符号使用带有数字邮政编码和标准错误更正的结构化载波消息 |
3. | 符号使用带有字母数字邮政编码和标准错误更正的结构化载波消息 |
4 | 符号包含一般数据,标准错误修正 |
5 | 符号包含通用数据,增强纠错 |
6 | 保留;用于对扫描器/阅读器进行编程 |
MaxiCode最常见的用途是在包裹递送行业,它是由UPS为此目的而发明和设计的,它支持特定于包裹运输的数据格式应该不足为奇。
这种数据格式被称为结构化载波消息(SCM)。模式2和模式3符号都要求数据以这种方式格式化,并规定主要和次要消息段的特定格式和内容。
在这两种情况下,主消息包含目标邮政编码(模式2符号为9个数字,模式3符号为6个字母数字字符)、3位国家代码、服务类别和错误纠正码(总是EEC)。
次要消息包含附加的装运信息,如托运人号码、包裹重量、装运ID、目的地城市等,以及错误纠正码字(总是SEC)。
当读取模式2或模式3的MaxiCode符号时,对主消息和副消息进行解码,然后使用行业标准格式将其格式化为单个字母数字字符串ANSI mh10.8m - 1993结构化载波消息(SCM)。当生成SCM时,解码软件将插入条码实际数据中没有的附加头和分隔符信息,以满足这些格式化要求。
这种ansi标准的消息格式由消息头、数据格式头、消息正文和消息结束符组成。下表提供了这些部分的详细信息:
消息头 | 消息头是四个字符序列[)>R年代在哪里R年代表示ASCII“记录分隔符”字符(十六进制值0x1E)。这些字符标识消息符合ANSI数据格式。 |
数据格式头 | 这是5个字符序列01G年代96年G年代表示ASCII“组分隔符”字符(十六进制值0x1D)。这些字符标识消息体符合ANSI传输数据格式。 |
消息体 | 这是一个可变长度的发货数据字段列表,每个字段用组分隔符分隔。最后一个字段以记录分隔符结束。下表提供了关于消息主体内容的更多细节。 |
消息终结者 | 这是EOT字符,EOT表示ASCII“文本结束”字符(十六进制值0x04)。 |
下面是消息体中数据字段的摘要:
送货至邮政编码 | 9位数字(模式2符号)或6位字母数字(模式3符号)邮政编码 |
装运至国家代码 | ISO国家代码 |
类的服务 | 服务等级为包 |
追踪号码 | 包裹追踪号码 |
SCAC | 运营商标准运营商Alpha代码(例如,UPS为UPSN) |
UPS帐号 | 托运人帐号 |
天的皮卡 | 儒略日 |
货物ID | 托运人的包裹ID号 |
包在装运 | 装运时的包装号(总X个包装的N个,格式为N/X) |
包的重量 | 包装重量(磅) |
地址验证 | 指示目的地址是否使用了地址验证数据库 |
船来解决 | 目的地址 |
船舶城市 | 目的地城市 |
州/省的船 | 目的地国家/省 |
在大多数情况下,不可能填充所有的数据字段,因为生成的消息太大,无法放入MaxiCode符号。使用MaxiCode条码的运营商通常提供自己的准则,以确定最大消息长度和填充哪些字段。
使用上面的语法来表示记录分隔符、组分隔符和文本结束符,下面的字符串表示来自图1中的MaxiCode示例的结构化载波消息(为便于阅读,用两行显示):
() >R年代01G年代97303281483G年代840G年代001G年代1 z12345675G年代UPSNG年代
123年x56G年代187G年代G年代1/1G年代37G年代YG年代UPSNG年代123F年代567G年代G年代遗传算法R年代EOT
联合包裹服务使用MaxiCode运输所有美国国内和国际包裹。其他几家航空公司也采用了这种方式。
美国国防部也认证了MaxiCode作为通用数据符号学使用,尽管很少有实际的实现。
Cognex移动条形码扫描器SDK支持MaxiCode检测,使开发人员能够收集相关工作流和应用程序数据。您可以通过注册康耐视移动条码免费下载SDK开发者网络.此外,条形码扫描器SDK支持广泛的象征学满足您日益增长的发展需求。