基于小型數(shù)據(jù)庫的PDF417編碼及軟件實(shí)現(xiàn)_第1頁
基于小型數(shù)據(jù)庫的PDF417編碼及軟件實(shí)現(xiàn)_第2頁
基于小型數(shù)據(jù)庫的PDF417編碼及軟件實(shí)現(xiàn)_第3頁
基于小型數(shù)據(jù)庫的PDF417編碼及軟件實(shí)現(xiàn)_第4頁
基于小型數(shù)據(jù)庫的PDF417編碼及軟件實(shí)現(xiàn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于小型數(shù)據(jù)庫的PDF417編碼及軟件實(shí)現(xiàn)論文摘要:條形碼是國內(nèi)外比較常用的二維條碼,對其研究具有非常重要的意義。PDF417主要由起始符、終止符、左右行指示符號字符、糾錯碼字符和數(shù)據(jù)區(qū)符號字符組成。PDF417條碼具有較強(qiáng)糾錯能力,本文用VC#編寫的軟件實(shí)現(xiàn)了簡單的字母、數(shù)字和漢字編碼,程序包括字符、數(shù)字壓縮,碼字糾錯和圖像生成,提出了將數(shù)據(jù)庫和數(shù)組結(jié)合使用的方法,提高了程序的執(zhí)行效率。實(shí)驗(yàn)表明程序能夠很好實(shí)現(xiàn)編碼、打印和糾錯能力。論文關(guān)鍵詞:基于,小型,數(shù)據(jù)庫,編碼,軟件1引言條碼識別技術(shù)是以計算機(jī)圖像處理、模式識別、光電技術(shù)和通信技術(shù)為基礎(chǔ)的綜合技術(shù),是當(dāng)今最主要的自動識別技術(shù)之一。目前

2、我國使用得較多的是一維條碼,但一維條碼的容量小,保密性差,只能標(biāo)識而不能描述產(chǎn)品,在很大程度上依賴于數(shù)據(jù)庫。二維條碼具有信息量大、可靠性高、保密防偽等優(yōu)點(diǎn),已經(jīng)逐漸用于通信、物流、身份識別等領(lǐng)域。作為當(dāng)今最先進(jìn)的條碼技術(shù)之一,PDF417條形碼已經(jīng)廣泛用于各種證件、票據(jù)的管理、公共安全、物流和圖書館等領(lǐng)域,研究它具有重要的意義。2PDF417二維條碼的結(jié)構(gòu)2.1PDF417碼的碼字結(jié)構(gòu)四一七條碼符號是一個多行結(jié)構(gòu)。每行從左到右依次為:左空白區(qū),起始符,左行指示符號字符,130個數(shù)據(jù)符號字符,右行指示符號字符,終止符,右空白區(qū)。規(guī)定行數(shù)為390行。條碼結(jié)構(gòu)如圖1所示。圖1PDF417結(jié)構(gòu)圖圖2符

3、號字符每一碼字符號字符由4個條和4個空構(gòu)成,從左向右開始。每一個條或空包含16個模塊。在一個符號字符中,4個條和4個空總模塊數(shù)為17,如圖2所示。2.2符號字符的簇四一七條碼符號字符集由0,3,6這三個簇構(gòu)成,每一簇包括以不同的條、空形式表示的所有929個條碼的碼字。在每一簇中,每一符號字符所對應(yīng)唯一的碼字,起范圍為0928。第一、二、三行分別使用第0、3、6簇的符號字符,第四行使用第0簇的符號字符,以此類推。行號由上向下遞增,最上一行行號為1。2.3行指示符號字符行指示符號字符包括左、右行指示符號字符()。簇號和指示符的計算方法見文獻(xiàn)。3PDF417編碼3.1壓縮模式PDF417碼有三種數(shù)據(jù)

4、壓縮模式,包括文本壓縮、數(shù)字壓縮和字節(jié)壓縮。3.2PDF417編碼首先通過基于VC#對話框界面中的編輯框錄入信息,將錄入的字符串放入name數(shù)組中保存起來。對name數(shù)組進(jìn)行第一次壓縮編碼,存入數(shù)組strfencode中,默認(rèn)為文本壓縮模式,信息錄入后被放入數(shù)組name中,根據(jù)每個數(shù)組元素的字符類型不同壓縮編碼方式有所不同,可以查詢到不同輸入字符所對應(yīng)的碼值。這里,處理方法是將大寫字母、小寫字母分別放在數(shù)組TC_LOWCHAR和TC_UPCHAR中,按字母表順序依次存放,在輸入姓名信息后在字母數(shù)組TC_LOWCHAR或TC_UPCHAR中搜索和namei相同的元素,然后記錄其在數(shù)組TC_LOW

5、CHAR或TC_UPCHAR中對應(yīng)的位置j。一次壓縮編碼的值就為TC_DATAj,并將此值存入strencodek中。如果輸入狀態(tài)有變化那么要加轉(zhuǎn)移碼字II(大寫字母子模式轉(zhuǎn)換成小寫字母子模式)或as(小寫字母子模式轉(zhuǎn)換成大寫字母子模式),二者值均為27。判斷后將值存入strfencodek+中。如果輸入為空格,那么碼字值為固定值32。例如輸入信息“XiaoLei”,得到的第一次編碼值strfencode=“900,23,27,8,0,14,32,11,27,4,8”。再根據(jù)文本壓縮模式的原理,從第一個碼字開始,將strfencode的元素兩兩組合夠成一個字符,然后用“”來計算出二次壓縮編碼的

6、數(shù)值,并存入數(shù)組m_ncode中,二次壓縮編碼流程如圖3所示。圖3二次文本壓縮流程圖二次編碼得到的結(jié)果為“900,717,240,452,357,128”。一般連續(xù)數(shù)字個數(shù)超過13則采用數(shù)字壓縮模式。數(shù)字壓縮模式的核心算法是10進(jìn)制向900進(jìn)制的轉(zhuǎn)換,如果直接進(jìn)行轉(zhuǎn)換,會導(dǎo)致溢出,出現(xiàn)負(fù)數(shù)的結(jié)果,本文采用的辦法時將其轉(zhuǎn)化為字符串?dāng)?shù)組后再進(jìn)行壓縮。由于文字?jǐn)⑹鲚^為繁瑣,本文給出了數(shù)字壓縮模式的流程,如圖4所示。圖4數(shù)字壓縮模式流程圖我們最常用的漢字所采用的是字節(jié)壓縮模式。我國國家標(biāo)準(zhǔn)規(guī)定漢字用內(nèi)碼(Unicode)表示,每個內(nèi)碼占用兩個字節(jié),每個字節(jié)只用7位,若連續(xù)兩個字節(jié)的最高位為1,則該字符

7、為漢字。字節(jié)壓縮主要是通過基256至基900的轉(zhuǎn)換,將字節(jié)序列轉(zhuǎn)換為碼字序列。當(dāng)所要表示的字節(jié)總數(shù)不是6的倍數(shù)時,采用模式901;當(dāng)所要表示的字節(jié)總數(shù)為6的倍數(shù)時,用模式鎖定924。字節(jié)壓縮流程如圖5所示。圖5字節(jié)壓縮流程圖二維條碼之所以性能強(qiáng)于一維條碼的原因還在于引入了糾錯碼字。PDAF417碼的錯誤糾正碼字總共有9個等級,對于一個給定的錯誤糾正等級,其錯誤糾正容量由(1)式?jīng)Q定。(1)其中,為拒讀錯誤,為替代錯誤,為錯誤糾正等級,為錯誤糾正碼字?jǐn)?shù)。根據(jù)錯誤糾正容量計算式可知,當(dāng)錯誤糾正等級為0時,錯誤糾正碼字?jǐn)?shù)為2;當(dāng)錯誤糾正等級為8時,錯誤糾正碼字?jǐn)?shù)為512。根據(jù)糾錯碼表達(dá)式,包括符號數(shù)

8、據(jù)多項式和生成多項式。糾錯碼字的生成首先要建立符號數(shù)據(jù)多項式,系數(shù)由數(shù)據(jù)碼字區(qū)的碼字組成,符號數(shù)據(jù)多項式如(3)所示。(2)生成多項式如(7)所示。(3)對于一組給定的數(shù)據(jù)碼字和選定的錯誤糾正等級,錯誤糾正碼字為符號數(shù)據(jù)多項式乘以,然后除以生成多項式,所得余式的各項系數(shù)的補(bǔ)數(shù)。但是多項式系數(shù)在錯誤糾正等級越高的時候,其計算量越來越大,對于程序來講這是很不利的。我們發(fā)現(xiàn)由于生成碼字多項式的系數(shù)和數(shù)據(jù)碼字沒有關(guān)系,大約有1000個數(shù)左右,可以事先通過計算將其所有的系數(shù)算出來,把9個糾錯等級的系數(shù)放在9個數(shù)組當(dāng)中,這就可以很方便地利用類似查表的辦法得到所有的糾錯碼字多項式系數(shù),所得余式的各系數(shù)的補(bǔ)數(shù)

9、得到糾錯碼,的大小由選擇的糾錯等級決定。經(jīng)過文本壓縮后的字符串為“717,240,452,357,128”,考慮到本文只是闡述編碼,只說明糾錯碼的生成方式,所以選擇糾錯等級為1,輸出的糾錯碼為“835,7,880,388”。我們得到的這些數(shù)據(jù)還不能保證后面繪制的圖像是一個工整的長方形,就需要在碼字?jǐn)?shù)組中適當(dāng)加入少量空白碼字,通常選擇900作為空白碼進(jìn)行填充。4PDF417碼圖形產(chǎn)生符號字符的查詢常用的辦法仍然是采用數(shù)組,而在這里應(yīng)用了一個小型的數(shù)據(jù)庫。這個數(shù)據(jù)庫并不是用來存儲漢字,字母和數(shù)字信息的,而是將符號字符-碼字集放在其中,之所以選擇數(shù)據(jù)庫的原因是方便碼字或符號字符出錯時容易找到并及時修

10、改。創(chuàng)建一張ACCESS的表格,包括三組關(guān)鍵詞:“簇號”、“碼字”和“bsbsbsbs”(條空符號字符)。根據(jù)簇號選擇每一行碼字和其應(yīng)該對應(yīng)的條空符號字符,利用ADO.NET連接程序和數(shù)據(jù)庫。在繪圖時必須要知道條空對應(yīng)的模塊寬度,確定條與空的相對位置,而查詢到的符號字符是每8個字符為一組的字符串,并不是以單個字符為元素的數(shù)組,本文將字符串?dāng)?shù)組進(jìn)行了轉(zhuǎn)換。繪圖選擇了GDI+的PEN類進(jìn)行繪制,GDI+比GDI進(jìn)步的地方是用PEN類繪制條碼圖像進(jìn)行放大的時候邊緣部分并不會產(chǎn)生毛刺,這在后面對條碼進(jìn)行識別的時候會減小一些困難。如符號字符為“”,表示2個模塊(條),2個模塊(空),4個條,1個空符號字符在字符數(shù)組中的位置序號能被2整除的為“條”,否則為“空”。再將單個字符轉(zhuǎn)換為整數(shù)形式獲得條或空的寬度并進(jìn)行繪制。通常取的單位模塊高與寬的比為3:1。圖6為本文所寫的編碼軟件。例如,在空白處輸入信息“卿曉雷loveJordan23”,點(diǎn)擊“運(yùn)行程序”,在圖中所示位置產(chǎn)生了相應(yīng)的PDF417條形碼,該條碼包含了漢字,字母和數(shù)字。軟件最下方是一個符號字符-碼字集的對照表,便于在數(shù)據(jù)出現(xiàn)錯誤

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論