关键词:PDF417 二维条码编码译码 嵌入式设备
引 言
??二维条码是不依赖计算机网络和数据库存储、转移信息的一种方法,是信息的另一种表示形式,是信息携带、信息自动传递、信息防伪的理想手段。四一七条码是应用最为成功的一种二维条码,它的出现是条码技术的一次革新。它以其高密度、高信息容量、纠错能力强、成本低等特点,广泛应用于国际贸易、物流、工业、商业等领域,已经取得了巨大的社会效益和经济效益。由于二维条码的编码和译码算法相对比较复杂,大部分应用是用台式机打印出条码,再通过扫描枪进行解码,通过RS232串口输出数据;而在嵌入式设备上,对数据进行二维条码数据加密并不多见。本文提出一种在嵌入式设备上利用Symbol公司生产的SE923HS型号的扫描头解码数据,解码后的数据和其它数据混合重新编码的解决方案,可以适用于邮政、物流等行业。
1 二维条码
1.1 二维条码的特性
PDF417二维条码具有信息容量大、信息密度高、修正错误能力强、译码可靠性高、保密性强和容易印制等特点。
四一七条码的基本特性如图1所示。一个PDF417条码符号,可以将最多1848个字母字符或2729个数字字符或字母、数字混编字符进行编码。按照ISO标准的证卡格式,当PDF417条码的窄条(模)宽为0.17mm 时,使用PDF417条码表卡片上所含的信息,条码符号(包括周围的白区)所占面积仅为76mm×25mm。PDF417采用了目前世界上最先进的错误修正技术。这种隐含子符号内的错误修正技术,不仅可以有效地防止译码错误,提高译码的速度及可靠性,而且可以将由于条码符号破损、沾污等丢失的信息破译出来。错误修正可分为八个等级,错误修正为最高时,可以将符号受损面积达50%的条码符号所含信息复现出来;PDF417可以把编码信息按密码格式进行编码,以防止伪造条码符号或非法使用有关编码的信息。因此,可以将数据量不大但非常重要的信息按照某种二维条码的格式进行编码。
本文是将二维条码用在物品投递过程中,即把物品的信息(如寄信人地址、姓名、身份证号,收信人地址、姓名、身份证号以及邮资等信息)制成二维条码,打印出来贴在物品上,以便传递信息。通过掌上嵌入式的条码识读设备,对条码进行译码。在掌上嵌入式设备工作过程中,译码的信息可以和其它输入的信息重新编码,完成对数据再加密的过程。
1.2 PDF417条码的结构
四一七条码符号是一个多行结构。符号的顶部和底部为空白区。上下空白区之间为多行结构。每行数据符号字符数相同,行与行左右对齐直接衔接。其最小行数为3,最大行数为90,见图1。每行构成如下:
a) 左空白区;b)起始符;c) 左行指示符号字符;d) 1~30个数据符号字符;e)右行指示符号字符;f) 终止符;g)右空白区。
1.3 PDF417条码的模式结构
四一七条码在编码时,首先对未编码数据进行压缩。四一七条码有三种数据压缩模式:文本压缩模式(TC)、字节压缩模式(BC)、数字压缩模式(NC)。每种模式结构对应不同的算法,通过应用模式锁定/转移(latch/shift)码字,可在一个四一七条码符号中应用一种或者多种模式表示数据。图2为四一七条码的模式切换图,其中900、901/924、902分别对应TC、BC和NC的压缩模式,913为Latch/shift码字。
1.4 PDF417条码的错误纠正等级
四一七条码的错误纠正等级可由用户选择。每种错误纠正等级所对应的错误纠正码字数目为2的纠正等级次方。对于开放式系统,不同数量的编码数据所对应的错误纠正等级推荐值见表1。
表1 四一七条码的推荐错误纠正等级
数据码字数 | 错误纠正等级 |
1~40 | 2 |
40~160 | 3 |
161~320 | 4 |
321~863 | 5 |
在四一七条码符号容易损坏的场所,建议选用较高的错误纠正等级;在封闭系统中,可选用低于推荐错误纠正等级的错误纠正等级。
2 硬件设计
2.1 硬件总体结构[1]
物流信息采集终端设计方案的结构框图如图3所示。设计方案的主要组成部分包括微处理器、扫描头接口模块(SE923HS)、液晶显示及触摸模块以及外部的32KB RAM,还有电源模块和微处理器监控模块等其它模块。
2.2 SE923HS扫描头及其接口设计[2]
扫描头的主要功能是读出二维条码上的信息;在读出信息的同时,完成一定的解码和纠错功能。本课题采用SE923HS型号的扫描头。它是Symbol公司生产的微型条码读入设备,可以对UPC/EAN、CODE128、CODE39和PDF417等条码进行译码。它能嵌入到用户的设备中,完成数据采集的功能。SE923HS大小约为3cm3,通过12根引线和外界相连。表2给出了SE923HS的引脚说明。
根据表2给出的接口说明,设计了SE923HS与微控制器的硬件接口,如图4所示。
表2 SE923H的引脚说明
引 脚 | 引脚号 | 类 型 | 功 能 解 释 |
FLASH_DWN | 1 | I | 写SE923HS的Flash-ROM |
VBATT | 2 | I | Power Supply:为SE923HS提供工作电压 |
GND | 3 | I | Ground:地线 |
RXD | 4 | I | Received Data:串行输入口 |
CTS | 6 | I | Clear to Send:串口握手线 |
AIM/WKUP | 11 | I | Wake Up:用持续1μs的低电平唤醒低电模式的SE923HS |
TRIG | 12 | I | Trigger:硬件触发线,使SE923HS进入扫描和译码 |
TXD | 5 | O | Transmitted Data:串口输出口 |
RTS | 7 | O | Request to Send:串口输出口 |
PWRDWN | 8 | O | Power Down Ready:高电平,表示Decoder处于掉电模式 |
BPR | 9 | O | Beeper:低电流Beeper输出 |
DLED | 10 | O | Decode LED:电流LED输出 |
3 译码和编码的实现
3.1 软件总体流程
根据SE923HS与微控制器的接口图,软件总体上可分为扫描头工作函数和中断函数,流程如图5和图6所示。
用SE923HS译码程序相对简单。首先,设置好SE923HS与W77E58通信的波特率。然后,打开串口中断,在需要扫描条码时将P1.2置为低电平,进入3s的延时,扫描电机开始工作。在延时时间内,扫描头一直处于工作状态,扫描头译码后的数据输入至单片机产生串口中断,在中断函数中存储译码后的信息。一般来说,SE923HS扫描头有效工作1s后可以将纸质的扫描译码完毕。P1.2置为高电平时,扫描电机停止工作。
对解码后的数据进行后期处理,将这些数据和其它需要重新加密的数据重新二维条码编码和纠错,得到加密后的数据。这些数据可以通过RS232、USB或者蓝牙发送给上位机作相应的处理。
3.2 二维条码编码和纠错
在实际应用中,考虑到在应用中投递物品信息组成和单片机处理速度,投递物品上的信息多用汉字表示,且文本字符和数字的数量较少,所以可以只用字节压缩模式(BC)对其进行编码。这样可大大减小编译码的复杂性,并且对数据的压缩率影响也不大。再有,由PDF417条码标准规定,条码符号的行数不超过90行,数据区列数不超过30列,所以最多可以编2700个码字。纠错码最多512个,那么数据码最多可编2188个。但是由于PDF417条码标准规定数据区第一个码字表示数据区码字的个数,这就限制了数据区码字最多不超过928个,也就是说译码最多只能译 928个码字,没有用到编码数量的极限。当要编码的数据较多时,则可以作如下改动:采用2个码字表示数据区码字的个数,这样就可以做到编码个数的极限2188个码字。因此在具体应用时,根据情况灵活地运用PDF417条码标准是很重要的。
为统一起见,在编码过程中只采用模式结构中的字节压缩模式(BC)。现简要介绍如下:
字节压缩模式通过基256至基900的转换,将字节序列转换为码字序列。当所要表示的字节总数不是6的倍数时,用模式锁定901;当所要表示的字节总数是6的倍数时,用模式锁定924。在应用模式锁定924的情况下,6个字节可通过基256至基900的转换用5个码字表示,从左到右进行转换。在应用模式锁定901的情况下,每前6个字节的转换方法与上述方法相同,对被6整除所剩余的字节应每个字节对应一个码字,逐字节用码字表示。具体编码流程如图7所示。
四一七条码采用Reed-Solomon错误控制算法(简称RS码)对数据码字进行纠错编码和译码。RS码是一类可以纠正多个随机错误的多进制循环码。对于一组给定的数据码字,根据不同的码字个数采用相应的纠错等级,错误纠正码字根据Reed-Solomon错误控制码算法计算。
对于一个给定的错误纠正等级,其错误纠正容量由下式确定:
式中: e-拒读错误数目; t-替代错误数目;
s-错误纠正等级; d-错误纠正码字数目。
错误纠正码字的总数为2s+1。其中,两个用于错误检测。其余的错误纠正码字用于错误纠正。用一个错误纠正码字恢复一个拒读错误,用两个错误纠正码字纠正一个替代错误。
当被纠正的替代错误数目小于4时(s=0除外),错误纠正容量由下式确定:
e+2t ≤ d-3
对于一组给定的数据码字,错误纠正码字根据RS错误控制码算法计算。
(1)建立符号数据多项式
(2)建立纠正码字的生成多项式
(3)产生错误纠正码字
对一组给定的数据码字和一选定的错误纠正等级,错误纠正码字为符号数据多项式d(x)乘以xk,然后除以生成多项式g(x),所得为余式的各系数的补数。
注:解码、编码和纠错程序见本刊网站www.dpj.com.cn。
图7
4 结 论
本文提供了一种简单可行的PDF417二维条码译码和编码的方案。利用PDF417二维条码具有信息容量大、编码范围广、容错能力强、译码可靠性高、保密防伪性好、成本低、条码形状和尺寸可变等优点,使SE923HS扫描头和W77E58微控制器结合,成本低、可行性强。在小数据量(小于1000字节)和较低纠错级别(5级以下)时,编码和纠错时间在10s之内,处理速度优势明显。
- PDF4(5570)
相关推荐
PDF417二维条形码的读取和识别技术
二维图片清空问题
二维数组怎么能够在自选的路径中直接生成EXCEL表格
二维码识别
二维码识别模块都在哪些场景应用到
二维码软件中制作Dot Code二维码的步骤
二维码门禁在互联网下发生什么样的新特色
二维码高拍仪(睿智微电子)
在二维码软件中制作含GS1应用标识符的data Matrix二维码的操作步骤
在嵌入式设备中使用JavaScript
在LABVIEW中怎么将二维数组转化为一维数组
嵌入式FIFO怎么配置和使用?
嵌入式扫描模组在智能门禁系统的应用是什么
嵌入式系统串行设备管理怎么实现?
C语言二维数组的定义和引用
DSP基条码扫描器
HFSS二维薄片边界设置应用技巧
LabVIEW中怎样将一维数组转换成二维数组
Labview读取二维码并记录
OpenHarmony应用实现二维码扫码识别
STM32二维码与条形码识别库
[原创]Honeywell Xenon 1900手持式二维影像扫描器
[原创]Honeywell Xenon 1902gHD无线二维影像扫描器
labview 一个二维数组分别与50个二维数组做运算,输出最小值
【嵌入式资料精选合集】嵌入式工程师资料免费分享
一个基本完整的QR DataMatrix PDF417 和Barcode的识别程序,稍微修改就可以用在工程里面
分享一款二维码扫描软件
单片机显示二维码的原理及实现
可变条码打印软件中实现二维码数据换行的操作方法
基于Web的嵌入式设备该怎么管理?
如何制作彩色二维码防伪标签?
如何在labview中实现二维DFT?
如何识别单片机嵌入式二维码解码
如何通过机智云 iot开发平台接口生成设备对应的二维码
如何通过机智云接口生成设备对应的二维码
工业级打印机
怎么将串口接收到的数据存储在二维数组中
求嵌入式linux学习笔记
解决ABBYY FineReader 12检测不到条码的问题
选购嵌入式商品条码扫描模块应该注意什么
天波智能云TPM300嵌入式二维码读头
二维图像尺寸批量测量仪器
二维条码技术在航材保障中的应用研究

基于EVP-6100嵌入式多媒体处理机的二维条码识别系统

基于DSP的PDF417快速解码终端的设计与实现

DSP的PDF417快速解码终端的设计与实现


PDF417条码特点及应用

PDF417二维条码的编码技术

基于VC++的二维条码PDF417编解码系统设计

智能医疗的解决方案——PDF417二维条码

嵌入式二维条码识读模组LV3296在手持设备配套中的应用

远景达LV4500R二维码扫码模组有哪些嵌入式应用?


嵌入式扫码器与固定式扫描器,读取条码高效可靠


条码识读器支持嵌入式应用,了解几款高性价比的嵌入式二维条码识读器


嵌入式条码扫描器不仅广泛应用于条码识别,更是提效好帮手


嵌入式扫码模块,深圳远景达推出超小型二维条码扫描模块


如何选择适合于您公司需求的嵌入式一维/二维码扫描模块?


嵌入式手持机扫码引擎,快速识别各类条码、二维码


条码扫描模组行业应用 扫码模组性能介绍


安装嵌入式二维码条码扫描模块要注意什么?


条码二维码识读器厂商告诉你,条码识读设备有哪些产品形态?


二维码扫描器模块 嵌入式扫码模块价格


扫码读头有哪些?嵌入自助设备专用的二维码扫描器你知道吗?


评论