關(guān)鍵詞:PDF417 二維條碼編碼譯碼 嵌入式設(shè)備
引 言
??二維條碼是不依賴計(jì)算機(jī)網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)存儲(chǔ)、轉(zhuǎn)移信息的一種方法,是信息的另一種表示形式,是信息攜帶、信息自動(dòng)傳遞、信息防偽的理想手段。四一七條碼是應(yīng)用最為成功的一種二維條碼,它的出現(xiàn)是條碼技術(shù)的一次革新。它以其高密度、高信息容量、糾錯(cuò)能力強(qiáng)、成本低等特點(diǎn),廣泛應(yīng)用于國(guó)際貿(mào)易、物流、工業(yè)、商業(yè)等領(lǐng)域,已經(jīng)取得了巨大的社會(huì)效益和經(jīng)濟(jì)效益。由于二維條碼的編碼和譯碼算法相對(duì)比較復(fù)雜,大部分應(yīng)用是用臺(tái)式機(jī)打印出條碼,再通過(guò)掃描槍進(jìn)行解碼,通過(guò)RS232串口輸出數(shù)據(jù);而在嵌入式設(shè)備上,對(duì)數(shù)據(jù)進(jìn)行二維條碼數(shù)據(jù)加密并不多見(jiàn)。本文提出一種在嵌入式設(shè)備上利用Symbol公司生產(chǎn)的SE923HS型號(hào)的掃描頭解碼數(shù)據(jù),解碼后的數(shù)據(jù)和其它數(shù)據(jù)混合重新編碼的解決方案,可以適用于郵政、物流等行業(yè)。
1 二維條碼
1.1 二維條碼的特性
PDF417二維條碼具有信息容量大、信息密度高、修正錯(cuò)誤能力強(qiáng)、譯碼可靠性高、保密性強(qiáng)和容易印制等特點(diǎn)。
四一七條碼的基本特性如圖1所示。一個(gè)PDF417條碼符號(hào),可以將最多1848個(gè)字母字符或2729個(gè)數(shù)字字符或字母、數(shù)字混編字符進(jìn)行編碼。按照ISO標(biāo)準(zhǔn)的證卡格式,當(dāng)PDF417條碼的窄條(模)寬為0.17mm 時(shí),使用PDF417條碼表卡片上所含的信息,條碼符號(hào)(包括周圍的白區(qū))所占面積僅為76mm×25mm。PDF417采用了目前世界上最先進(jìn)的錯(cuò)誤修正技術(shù)。這種隱含子符號(hào)內(nèi)的錯(cuò)誤修正技術(shù),不僅可以有效地防止譯碼錯(cuò)誤,提高譯碼的速度及可靠性,而且可以將由于條碼符號(hào)破損、沾污等丟失的信息破譯出來(lái)。錯(cuò)誤修正可分為八個(gè)等級(jí),錯(cuò)誤修正為最高時(shí),可以將符號(hào)受損面積達(dá)50%的條碼符號(hào)所含信息復(fù)現(xiàn)出來(lái);PDF417可以把編碼信息按密碼格式進(jìn)行編碼,以防止偽造條碼符號(hào)或非法使用有關(guān)編碼的信息。因此,可以將數(shù)據(jù)量不大但非常重要的信息按照某種二維條碼的格式進(jìn)行編碼。
本文是將二維條碼用在物品投遞過(guò)程中,即把物品的信息(如寄信人地址、姓名、身份證號(hào),收信人地址、姓名、身份證號(hào)以及郵資等信息)制成二維條碼,打印出來(lái)貼在物品上,以便傳遞信息。通過(guò)掌上嵌入式的條碼識(shí)讀設(shè)備,對(duì)條碼進(jìn)行譯碼。在掌上嵌入式設(shè)備工作過(guò)程中,譯碼的信息可以和其它輸入的信息重新編碼,完成對(duì)數(shù)據(jù)再加密的過(guò)程。
1.2 PDF417條碼的結(jié)構(gòu)
四一七條碼符號(hào)是一個(gè)多行結(jié)構(gòu)。符號(hào)的頂部和底部為空白區(qū)。上下空白區(qū)之間為多行結(jié)構(gòu)。每行數(shù)據(jù)符號(hào)字符數(shù)相同,行與行左右對(duì)齊直接銜接。其最小行數(shù)為3,最大行數(shù)為90,見(jiàn)圖1。每行構(gòu)成如下:
a) 左空白區(qū);b)起始符;c) 左行指示符號(hào)字符;d) 1~30個(gè)數(shù)據(jù)符號(hào)字符;e)右行指示符號(hào)字符;f) 終止符;g)右空白區(qū)。
1.3 PDF417條碼的模式結(jié)構(gòu)
四一七條碼在編碼時(shí),首先對(duì)未編碼數(shù)據(jù)進(jìn)行壓縮。四一七條碼有三種數(shù)據(jù)壓縮模式:文本壓縮模式(TC)、字節(jié)壓縮模式(BC)、數(shù)字壓縮模式(NC)。每種模式結(jié)構(gòu)對(duì)應(yīng)不同的算法,通過(guò)應(yīng)用模式鎖定/轉(zhuǎn)移(latch/shift)碼字,可在一個(gè)四一七條碼符號(hào)中應(yīng)用一種或者多種模式表示數(shù)據(jù)。圖2為四一七條碼的模式切換圖,其中900、901/924、902分別對(duì)應(yīng)TC、BC和NC的壓縮模式,913為L(zhǎng)atch/shift碼字。
1.4 PDF417條碼的錯(cuò)誤糾正等級(jí)
四一七條碼的錯(cuò)誤糾正等級(jí)可由用戶選擇。每種錯(cuò)誤糾正等級(jí)所對(duì)應(yīng)的錯(cuò)誤糾正碼字?jǐn)?shù)目為2的糾正等級(jí)次方。對(duì)于開(kāi)放式系統(tǒng),不同數(shù)量的編碼數(shù)據(jù)所對(duì)應(yīng)的錯(cuò)誤糾正等級(jí)推薦值見(jiàn)表1。
表1 四一七條碼的推薦錯(cuò)誤糾正等級(jí)
數(shù)據(jù)碼字?jǐn)?shù) | 錯(cuò)誤糾正等級(jí) |
1~40 | 2 |
40~160 | 3 |
161~320 | 4 |
321~863 | 5 |
在四一七條碼符號(hào)容易損壞的場(chǎng)所,建議選用較高的錯(cuò)誤糾正等級(jí);在封閉系統(tǒng)中,可選用低于推薦錯(cuò)誤糾正等級(jí)的錯(cuò)誤糾正等級(jí)。
2 硬件設(shè)計(jì)
2.1 硬件總體結(jié)構(gòu)[1]
物流信息采集終端設(shè)計(jì)方案的結(jié)構(gòu)框圖如圖3所示。設(shè)計(jì)方案的主要組成部分包括微處理器、掃描頭接口模塊(SE923HS)、液晶顯示及觸摸模塊以及外部的32KB RAM,還有電源模塊和微處理器監(jiān)控模塊等其它模塊。
2.2 SE923HS掃描頭及其接口設(shè)計(jì)[2]
掃描頭的主要功能是讀出二維條碼上的信息;在讀出信息的同時(shí),完成一定的解碼和糾錯(cuò)功能。本課題采用SE923HS型號(hào)的掃描頭。它是Symbol公司生產(chǎn)的微型條碼讀入設(shè)備,可以對(duì)UPC/EAN、CODE128、CODE39和PDF417等條碼進(jìn)行譯碼。它能嵌入到用戶的設(shè)備中,完成數(shù)據(jù)采集的功能。SE923HS大小約為3cm3,通過(guò)12根引線和外界相連。表2給出了SE923HS的引腳說(shuō)明。
根據(jù)表2給出的接口說(shuō)明,設(shè)計(jì)了SE923HS與微控制器的硬件接口,如圖4所示。
表2 SE923H的引腳說(shuō)明
引 腳 | 引腳號(hào) | 類 型 | 功 能 解 釋 |
FLASH_DWN | 1 | I | 寫(xiě)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:用持續(xù)1μs的低電平喚醒低電模式的SE923HS |
TRIG | 12 | I | Trigger:硬件觸發(fā)線,使SE923HS進(jìn)入掃描和譯碼 |
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 譯碼和編碼的實(shí)現(xiàn)
3.1 軟件總體流程
根據(jù)SE923HS與微控制器的接口圖,軟件總體上可分為掃描頭工作函數(shù)和中斷函數(shù),流程如圖5和圖6所示。
用SE923HS譯碼程序相對(duì)簡(jiǎn)單。首先,設(shè)置好SE923HS與W77E58通信的波特率。然后,打開(kāi)串口中斷,在需要掃描條碼時(shí)將P1.2置為低電平,進(jìn)入3s的延時(shí),掃描電機(jī)開(kāi)始工作。在延時(shí)時(shí)間內(nèi),掃描頭一直處于工作狀態(tài),掃描頭譯碼后的數(shù)據(jù)輸入至單片機(jī)產(chǎn)生串口中斷,在中斷函數(shù)中存儲(chǔ)譯碼后的信息。一般來(lái)說(shuō),SE923HS掃描頭有效工作1s后可以將紙質(zhì)的掃描譯碼完畢。P1.2置為高電平時(shí),掃描電機(jī)停止工作。
對(duì)解碼后的數(shù)據(jù)進(jìn)行后期處理,將這些數(shù)據(jù)和其它需要重新加密的數(shù)據(jù)重新二維條碼編碼和糾錯(cuò),得到加密后的數(shù)據(jù)。這些數(shù)據(jù)可以通過(guò)RS232、USB或者藍(lán)牙發(fā)送給上位機(jī)作相應(yīng)的處理。
3.2 二維條碼編碼和糾錯(cuò)
在實(shí)際應(yīng)用中,考慮到在應(yīng)用中投遞物品信息組成和單片機(jī)處理速度,投遞物品上的信息多用漢字表示,且文本字符和數(shù)字的數(shù)量較少,所以可以只用字節(jié)壓縮模式(BC)對(duì)其進(jìn)行編碼。這樣可大大減小編譯碼的復(fù)雜性,并且對(duì)數(shù)據(jù)的壓縮率影響也不大。再有,由PDF417條碼標(biāo)準(zhǔn)規(guī)定,條碼符號(hào)的行數(shù)不超過(guò)90行,數(shù)據(jù)區(qū)列數(shù)不超過(guò)30列,所以最多可以編2700個(gè)碼字。糾錯(cuò)碼最多512個(gè),那么數(shù)據(jù)碼最多可編2188個(gè)。但是由于PDF417條碼標(biāo)準(zhǔn)規(guī)定數(shù)據(jù)區(qū)第一個(gè)碼字表示數(shù)據(jù)區(qū)碼字的個(gè)數(shù),這就限制了數(shù)據(jù)區(qū)碼字最多不超過(guò)928個(gè),也就是說(shuō)譯碼最多只能譯 928個(gè)碼字,沒(méi)有用到編碼數(shù)量的極限。當(dāng)要編碼的數(shù)據(jù)較多時(shí),則可以作如下改動(dòng):采用2個(gè)碼字表示數(shù)據(jù)區(qū)碼字的個(gè)數(shù),這樣就可以做到編碼個(gè)數(shù)的極限2188個(gè)碼字。因此在具體應(yīng)用時(shí),根據(jù)情況靈活地運(yùn)用PDF417條碼標(biāo)準(zhǔn)是很重要的。
為統(tǒng)一起見(jiàn),在編碼過(guò)程中只采用模式結(jié)構(gòu)中的字節(jié)壓縮模式(BC)?,F(xiàn)簡(jiǎn)要介紹如下:
字節(jié)壓縮模式通過(guò)基256至基900的轉(zhuǎn)換,將字節(jié)序列轉(zhuǎn)換為碼字序列。當(dāng)所要表示的字節(jié)總數(shù)不是6的倍數(shù)時(shí),用模式鎖定901;當(dāng)所要表示的字節(jié)總數(shù)是6的倍數(shù)時(shí),用模式鎖定924。在應(yīng)用模式鎖定924的情況下,6個(gè)字節(jié)可通過(guò)基256至基900的轉(zhuǎn)換用5個(gè)碼字表示,從左到右進(jìn)行轉(zhuǎn)換。在應(yīng)用模式鎖定901的情況下,每前6個(gè)字節(jié)的轉(zhuǎn)換方法與上述方法相同,對(duì)被6整除所剩余的字節(jié)應(yīng)每個(gè)字節(jié)對(duì)應(yīng)一個(gè)碼字,逐字節(jié)用碼字表示。具體編碼流程如圖7所示。
四一七條碼采用Reed-Solomon錯(cuò)誤控制算法(簡(jiǎn)稱RS碼)對(duì)數(shù)據(jù)碼字進(jìn)行糾錯(cuò)編碼和譯碼。RS碼是一類可以糾正多個(gè)隨機(jī)錯(cuò)誤的多進(jìn)制循環(huán)碼。對(duì)于一組給定的數(shù)據(jù)碼字,根據(jù)不同的碼字個(gè)數(shù)采用相應(yīng)的糾錯(cuò)等級(jí),錯(cuò)誤糾正碼字根據(jù)Reed-Solomon錯(cuò)誤控制碼算法計(jì)算。
對(duì)于一個(gè)給定的錯(cuò)誤糾正等級(jí),其錯(cuò)誤糾正容量由下式確定:
式中: e-拒讀錯(cuò)誤數(shù)目; t-替代錯(cuò)誤數(shù)目;
s-錯(cuò)誤糾正等級(jí); d-錯(cuò)誤糾正碼字?jǐn)?shù)目。
錯(cuò)誤糾正碼字的總數(shù)為2s+1。其中,兩個(gè)用于錯(cuò)誤檢測(cè)。其余的錯(cuò)誤糾正碼字用于錯(cuò)誤糾正。用一個(gè)錯(cuò)誤糾正碼字恢復(fù)一個(gè)拒讀錯(cuò)誤,用兩個(gè)錯(cuò)誤糾正碼字糾正一個(gè)替代錯(cuò)誤。
當(dāng)被糾正的替代錯(cuò)誤數(shù)目小于4時(shí)(s=0除外),錯(cuò)誤糾正容量由下式確定:
e+2t ≤ d-3
對(duì)于一組給定的數(shù)據(jù)碼字,錯(cuò)誤糾正碼字根據(jù)RS錯(cuò)誤控制碼算法計(jì)算。
(1)建立符號(hào)數(shù)據(jù)多項(xiàng)式
(2)建立糾正碼字的生成多項(xiàng)式
(3)產(chǎn)生錯(cuò)誤糾正碼字
對(duì)一組給定的數(shù)據(jù)碼字和一選定的錯(cuò)誤糾正等級(jí),錯(cuò)誤糾正碼字為符號(hào)數(shù)據(jù)多項(xiàng)式d(x)乘以xk,然后除以生成多項(xiàng)式g(x),所得為余式的各系數(shù)的補(bǔ)數(shù)。
注:解碼、編碼和糾錯(cuò)程序見(jiàn)本刊網(wǎng)站www.dpj.com.cn。
圖7
4 結(jié) 論
本文提供了一種簡(jiǎn)單可行的PDF417二維條碼譯碼和編碼的方案。利用PDF417二維條碼具有信息容量大、編碼范圍廣、容錯(cuò)能力強(qiáng)、譯碼可靠性高、保密防偽性好、成本低、條碼形狀和尺寸可變等優(yōu)點(diǎn),使SE923HS掃描頭和W77E58微控制器結(jié)合,成本低、可行性強(qiáng)。在小數(shù)據(jù)量(小于1000字節(jié))和較低糾錯(cuò)級(jí)別(5級(jí)以下)時(shí),編碼和糾錯(cuò)時(shí)間在10s之內(nèi),處理速度優(yōu)勢(shì)明顯。
- PDF4(5570)
相關(guān)推薦
PDF417二維條形碼的讀取和識(shí)別技術(shù)
二維圖片清空問(wèn)題
二維數(shù)組
二維數(shù)組怎么能夠在自選的路徑中直接生成EXCEL表格
二維直接標(biāo)記系統(tǒng)在飛機(jī)發(fā)動(dòng)機(jī)中的應(yīng)用是什么?
二維碼的算法?
二維碼識(shí)別
二維碼識(shí)別模塊都在哪些場(chǎng)景應(yīng)用到
二維碼軟件中制作Dot Code二維碼的步驟
二維碼門(mén)禁在互聯(lián)網(wǎng)下發(fā)生什么樣的新特色
二維碼高拍儀(睿智微電子)
在二維碼軟件中制作含GS1應(yīng)用標(biāo)識(shí)符的data Matrix二維碼的操作步驟
在嵌入式設(shè)備中使用JavaScript
在LABVIEW中怎么將二維數(shù)組轉(zhuǎn)化為一維數(shù)組
在VIM中如何實(shí)現(xiàn)對(duì)嵌入式軟件的調(diào)試?
嵌入式FIFO怎么配置和使用?
嵌入式掃描模組在智能門(mén)禁系統(tǒng)的應(yīng)用是什么
嵌入式系統(tǒng)串行設(shè)備管理怎么實(shí)現(xiàn)?
嵌入式系統(tǒng)在行業(yè)中的應(yīng)用
C語(yǔ)言二維數(shù)組的定義和引用
DSP基條碼掃描器
FPGA在嵌入式測(cè)試系統(tǒng)中的利與弊
HFSS二維薄片邊界設(shè)置應(yīng)用技巧
LabVIEW中怎樣將一維數(shù)組轉(zhuǎn)換成二維數(shù)組
Labview讀取二維碼并記錄
OpenHarmony應(yīng)用實(shí)現(xiàn)二維碼掃碼識(shí)別
STM32二維碼與條形碼識(shí)別庫(kù)
[原創(chuàng)]Honeywell Xenon 1900手持式二維影像掃描器
[原創(chuàng)]Honeywell Xenon 1902gHD無(wú)線二維影像掃描器
labview 一個(gè)二維數(shù)組分別與50個(gè)二維數(shù)組做運(yùn)算,輸出最小值
【嵌入式資料精選合集】嵌入式工程師資料免費(fèi)分享
一個(gè)基本完整的QR DataMatrix PDF417 和Barcode的識(shí)別程序,稍微修改就可以用在工程里面
分享一款二維碼掃描軟件
單片機(jī)顯示二維碼的原理及實(shí)現(xiàn)
可變條碼打印軟件中實(shí)現(xiàn)二維碼數(shù)據(jù)換行的操作方法
基于Web的嵌入式設(shè)備該怎么管理?
如何利用SOPC去設(shè)計(jì)二維條碼識(shí)別系統(tǒng)?
如何制作彩色二維碼防偽標(biāo)簽?
如何去使用STM32CubeMX.AI嵌入式設(shè)備呢
如何在labview中實(shí)現(xiàn)二維DFT?
如何實(shí)現(xiàn)基于Agent技術(shù)的嵌入式智能設(shè)備測(cè)試?
如何構(gòu)造運(yùn)行良好的嵌入式設(shè)備的驅(qū)動(dòng)程序?
如何讓嵌入式設(shè)備枚舉成WinUSB設(shè)備?
如何識(shí)別單片機(jī)嵌入式二維碼解碼
如何通過(guò)機(jī)智云 iot開(kāi)發(fā)平臺(tái)接口生成設(shè)備對(duì)應(yīng)的二維碼
如何通過(guò)機(jī)智云接口生成設(shè)備對(duì)應(yīng)的二維碼
工業(yè)級(jí)打印機(jī)
怎么在verilog中初始化二維數(shù)組
怎么將串口接收到的數(shù)據(jù)存儲(chǔ)在二維數(shù)組中
求嵌入式linux學(xué)習(xí)筆記
求一份arm9嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)教程第二版PDF
解決ABBYY FineReader 12檢測(cè)不到條碼的問(wèn)題
請(qǐng)問(wèn)在嵌入式應(yīng)用中怎樣去實(shí)現(xiàn)USB?
選購(gòu)嵌入式商品條碼掃描模塊應(yīng)該注意什么
天波智能云TPM300嵌入式二維碼讀頭
二維圖像尺寸批量測(cè)量?jī)x器
二維條碼技術(shù)在航材保障中的應(yīng)用研究

基于EVP-6100嵌入式多媒體處理機(jī)的二維條碼識(shí)別系統(tǒng)

基于DSP的PDF417快速解碼終端的設(shè)計(jì)與實(shí)現(xiàn)

DSP的PDF417快速解碼終端的設(shè)計(jì)與實(shí)現(xiàn)


PDF417條碼特點(diǎn)及應(yīng)用

PDF417二維條碼的編碼技術(shù)

基于VC++的二維條碼PDF417編解碼系統(tǒng)設(shè)計(jì)

PDF417條碼在設(shè)備管理系統(tǒng)中的應(yīng)用研究_張琦

智能醫(yī)療的解決方案——PDF417二維條碼

嵌入式二維條碼識(shí)讀模組LV3296在手持設(shè)備配套中的應(yīng)用

讀取二維碼掃描設(shè)備有哪些類型

遠(yuǎn)景達(dá)LV4500R二維碼掃碼模組有哪些嵌入式應(yīng)用?


嵌入式掃碼器與固定式掃描器,讀取條碼高效可靠


條碼識(shí)讀器支持嵌入式應(yīng)用,了解幾款高性價(jià)比的嵌入式二維條碼識(shí)讀器


嵌入式條碼掃描器不僅廣泛應(yīng)用于條碼識(shí)別,更是提效好幫手


嵌入式掃碼模塊,深圳遠(yuǎn)景達(dá)推出超小型二維條碼掃描模塊


如何選擇適合于您公司需求的嵌入式一維/二維碼掃描模塊?


嵌入式手持機(jī)掃碼引擎,快速識(shí)別各類條碼、二維碼


條碼掃描模組行業(yè)應(yīng)用 掃碼模組性能介紹


安裝嵌入式二維碼條碼掃描模塊要注意什么?


條碼二維碼識(shí)讀器廠商告訴你,條碼識(shí)讀設(shè)備有哪些產(chǎn)品形態(tài)?


二維碼掃描器模塊 嵌入式掃碼模塊價(jià)格


掃碼讀頭有哪些?嵌入自助設(shè)備專用的二維碼掃描器你知道嗎?


評(píng)論