關鍵詞: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二維碼掃碼模組有哪些嵌入式應用?


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


條碼識讀器支持嵌入式應用,了解幾款高性價比的嵌入式二維條碼識讀器


嵌入式條碼掃描器不僅廣泛應用于條碼識別,更是提效好幫手


嵌入式掃碼模塊,深圳遠景達推出超小型二維條碼掃描模塊


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


嵌入式手持機掃碼引擎,快速識別各類條碼、二維碼


條碼掃描模組行業應用 掃碼模組性能介紹


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


條碼二維碼識讀器廠商告訴你,條碼識讀設備有哪些產品形態?


二維碼掃描器模塊 嵌入式掃碼模塊價格


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


評論