專利名稱:一種碼表生成方法
一種碼表生成方法
技術領域:
本發(fā)明涉及一種碼表生成方法,特別涉及一種條碼解碼過程所使用的碼表的生成 方法。
背景技術:
條碼技術是在計算機技術與信息技術基礎上發(fā)展起來的一門容編碼、印刷、識別、 數據采集和處理于一身的新興技術。條碼技術由于其識別快速、準確、可靠以及成本低等優(yōu) 點,被廣泛應用于商業(yè)、圖書管理、倉儲、郵電、交通和工業(yè)控制等領域,并且勢必在逐漸興 起的“物聯網”應用中發(fā)揮重大的作用。目前被廣泛使用的條碼包括一維條碼及二維條碼。一維條碼又稱線形條碼是由平 行排列的多個“條”和“空”單元組成,條形碼信息靠條和空的不同寬度和位置來表達。一 維條碼只是在一個方向(一般是水平方向)表達信息,而在垂直方向則不表達任何信息,因 此信息容量及空間利用率較低,并且在條碼損壞后即無法識別。二維條碼是由按一定規(guī)律在二維方向上分布的黑白相間的特定幾何圖形組成,其 可以在二維方向上表達信息,因此信息容量及空間利用率較高,并具有一定的校驗功能。二 維條碼可以分為堆疊式二維條碼和矩陣式二維條碼。堆疊式二維條碼是由多行短截的一 維條碼堆疊而成,代表性的堆疊式二維條碼包括PDF417、Code 49、Code 16K等。矩陣式 二維條碼是由按預定規(guī)則分布于矩陣中的黑、白模塊組成,代表性的矩陣式二維條碼包括 Codeone、Aztec、Date Matrix、QR 石馬等。在現有技術的條碼解碼過程中往往需要通過查詢碼表來獲取碼字。例如,在PDF 417條碼的929碼表中,由4個條和4個空構成一個符號字符,并通過該4個條和4個空的 模塊數來表示該符號字符。每個符號字符分別對應一個碼字。在現有技術的條碼解碼過程 中,需要將碼表存儲于ROM中,在解碼時根據掃描條空間隙得出的符號字符從ROM中查詢碼 表,并解碼出對應的碼字。然而,碼表在ROM中占用大量空間,導致系統對ROM的需求很大。
發(fā)明內容為了克服現有技術中需要將碼表直接存儲于ROM中進而導致系統對ROM的需求很 大的技術問題,本發(fā)明提供了一種碼表生成方法,該碼表生成方法包括a.生成第一數字 序列以及第二數字序列;b.利用第二數字序列生成碼字;c.利用第一數字序列生成符號字 符,并對符號字符進行合法性判斷;d.確定判斷合法的符號字符與碼字的對應關系。根據本發(fā)明一優(yōu)選實施例,碼表為PDF417條碼的929碼表。根據本發(fā)明一優(yōu)選實施例,步驟a包括生成一個五位的六進制數M = yiy2y3y4y5 作為第一數字序列,生成一個三位的十進制數N作為第二數字序列,并對M和N進行初始 化。根據本發(fā)明一優(yōu)選實施例,在步驟b包括將N直接作為碼字。根據本發(fā)明一優(yōu)選實施例,步驟c包括cl.利用簇號公式(ycryAyfy^mod 9 =O計算L ;c2.利用求和公式(Yfyfy^y6) = 9計算y6 ;c3.利用如下公式y(1 = x0+xi; Yl =χι+χ2' y2 = χ2+χ3' y3 = χ3+χ4' y4 = χ4+χ5,y5 = χ5+χ6 以及 y6 = χ6+χ7 確定 χο、χι、χ2、χ3> 以及X7O根據本發(fā)明一優(yōu)選實施例,步驟Cl進一步包括對%進行合法性判斷,若%不合 法,則將M加1,并重復步驟Cl。根據本發(fā)明一優(yōu)選實施例,在步驟Cl中,對%進行合法性判斷包括判斷%是否小 于等于5且大于等于0,若%小于等于5且大于等于0,則J0合法,否則,y0不合法。根據本發(fā)明一優(yōu)選實施例,步驟c2進一步包括對y6進行合法性判斷,若y6不合 法,則將M加1,并返回步驟Cl。根據本發(fā)明一優(yōu)選實施例,在步驟c2中,對y6進行合法性判斷包括判斷y6是否小 于等于8且大于等于0,若y6小于等于8且大于等于0,則y6合法,否則,y6不合法。根據本發(fā)明一優(yōu)選實施例,在步驟c中,以卿2獨仏作為符號字符。根據本發(fā)明一優(yōu)選實施例,步驟c進一步包括c4.判斷X(1、X1, x2, x3> X4> x5> X6及 x7是否小于等于5且大于等于0,若存在一組X(1、X1, x2, x3> x4> x5> x6及x7均小于等于5且 大于等于0,則符號字符合法,否則符號字符不合法。根據本發(fā)明一優(yōu)選實施例,步驟c進一步包括c5.判斷符號字符是否對應于例外 列表中的當前比較值。根據本發(fā)明一優(yōu)選實施例,在步驟c5中,將N與例外列表中順序存儲的多個比較 值中的當前比較值進行比較,若N與當前比較值相同則符號字符不合法,并將多個比較值 中的下一比較值作為下次比較的當前比較值,若N與當前比較值不相同則符號字符合法, 并保持當前比較值不變。根據本發(fā)明一優(yōu)選實施例,步驟a包括生成一個五位的八進制數M = yiy2y3y4y5 作為第一數字序列,生成一個三位的十進制數N作為第二數字序列,并對M和N進行初始 化,根據本發(fā)明一優(yōu)選實施例,步驟c包括cl.利用簇號公式(ycryAyfy^mod 9 = 3或6計算y0 ;c2.利用求和公式(y0+y2+y4+y6) = 9計算y6 ;c3.利用如下公式:y0 = χ0+χι; Yi = χι+χ2' y2 = χ2+χ3' y3 = χ3+χ4,y4 = χ4+χ5,y5 = χ5+χ6 以及 y6 = χ6+χ7 確定 χ0>χι>χ2>χ3>
以及X7O根據本發(fā)明一優(yōu)選實施例,步驟Cl進一步包括對%進行合法性判斷,若%不合 法,則將M加1,并重復步驟Cl。根據本發(fā)明一優(yōu)選實施例,在步驟Cl中,對%進行合法性判斷包括判斷%是否小 于等于7且大于等于0,若%小于等于7且大于等于0,則J0合法,否則,y0不合法。根據本發(fā)明一優(yōu)選實施例,步驟c2進一步包括判斷y6的合法性,若y6不合法,則 將M加1,并返回步驟Cl。根據本發(fā)明一優(yōu)選實施例,在步驟c2中,對y6進行合法性判斷包括判斷y6是否小 于等于8且大于等于0,若y6小于等于8且大于等于0,則y6合法,否則,y6不合法。根據本發(fā)明一優(yōu)選實施例,在步驟b包括將N直接作為碼字,在步驟c中,以 作為符號字符。根據本發(fā)明一優(yōu)選實施例,步驟c進一步包括c4.判斷X(1、X1, x2, x3、x4, x5、X6及X7是否小于等于5且大于等于0,若存在一組X(1、X1, X2, x3> x4> x5> X6及X7均小于等于5且 大于等于0,則符號字符合法,否則符號字符不合法。根據本發(fā)明一優(yōu)選實施例,碼表生成方法進一步包括e.判斷N是否等于預定數 值,若N等于預定數值,則結束碼表生成方法,否則,將N和M分別加1并返回步驟Cl。
根據本發(fā)明一優(yōu)選實施例,步驟d進一步包括將判斷合法的符號字符順序存儲于 存儲器中。通過上述碼表生成方法,可在需要時直接生成碼表,無需預先將碼表存儲ROM中, 降低了系統對ROM的需求。
圖1是根據本發(fā)明的碼表生成方法的流程圖;圖2是根據本發(fā)明的929碼表生成方法的一具體流程圖;圖3是根據本發(fā)明的929碼表生成方法的另一具體流程圖。
具體實施方式本發(fā)明提供了一種碼表生成方法,該碼表生成方法可在需要時直接生成碼表,無 需預先將碼表存儲于ROM中,降低了系統對ROM的需求,并且該碼表生成方法可直接由硬件 邏輯實現。如圖1所示,圖1是根據本發(fā)明的碼表生成方法的流程圖。在本發(fā)明的碼表生成 方法中,首先生成第一數字序列以及第二數字序列,利用第二數字序列生成碼字,并利用第 一數字序列生成符號字符。隨后,對符號字符進行合法性判斷,并由此確定判斷合法的符號 字符與碼字的對應關系。通過上述方法,可以通過分別改變第一數字序列以及第二數字序 列來獲得不同符號字符與碼字的對應關系,由此可以在系統的上電后或需要時自動生成碼 表,無需預先存儲碼表,降低了系統對ROM的需求。如圖2所示,圖2以PDF417條碼為例詳細描述了通過上述方法生成929碼表的方 法。具體來說,對于0簇碼表,首先生成第一數字序列以及第二數字序列。在本實施例中, 生成一個五位的六進制數M = yiy2y3y4y5作為第一數字序列,生成一個三位的十進制數N作 為第二數字序列,并將M設置為00000,將N設置成000,即yi、y2、y3、y4、y5分別為0。在本 實施例中,N直接作為碼字。隨后,利用簇號公式(ycryAyfyPmod 9 = 0計算%。在計算出%后,可進一步對 Y0進行合法性判斷,若I0合法,則進入下一步,若I0不合法,則將M加1,并重新利用簇號公 式計算新的10。具體來說,對知進行合法性判斷是判斷I0是否小于等于5且大于等于0, 若I0小于等于5且大于等于0,則J0合法,否則,y0不合法。在計算出yQ后,在利用求和公式(yQ+y2+y4+y6) = 9計算y6。在計算出 后,進一 步對y6進行合法性判斷,若y6合法,則進入下一步,若y6不合法,則將M加1,并返回重新利 用簇號公式計算新的%。對y6進行合法性判斷是判斷y6是否小于等于8且大于等于0,若 Y6小于等于8且大于等于0,則y6合法,否則,y6不合法。在計算出y。和 y6 后,利用如下公式:Υο = Χο+Χι,Υι = Χ1+Χ2 2 = x2+x3,y3 = x3+x4, y4 = x4+x5,y5 = χ5+χ6以及y6 = χ6+χ7確定是否存在符合上述公式的X0J1J2J3J4J5J6以及X7及其可能值。在這種情況下,一組i0、Y!> y2> y3、y4、y5以及y6可能對應多組&、X1^ Χ2、Χ3、Χ4、Χ5、Χ6以及Χ7。此時,11、&、13^4、15^6及17加1后的結果即為各條空的模塊數。 然而,為了存儲及計算方便,在本實施例中,選擇yc^y^y^W作為符號字符。當然,本領域 技術人員完全可以想到直接利用Χι、χ2> χ3> χ4> χ5> X6及χ7或加1后的結果作為本發(fā)明的符 號字符。在確定出符號字符后,仍需要對符號字符進行進一步的合法性判斷。例如,在929 碼表中,各條空的模塊數均小于等于6,因此對符號字符進行合法性判斷還包括判斷Χι、χ2, x3、X4> X5> X6及X7是否小于等于5且大于等于0,若其中一組X” x2、X3> X4> X5> X6及X7均小 于等于5且大于等于0,則表示該符號字符合法。否則,則認為符號字符不合法。在判斷符 號字符不合法后,則將M加1,并 重新利用簇號公式計算新的10,并重復后續(xù)操作。對于0簇碼表,除了利用上述規(guī)則后,還需要利用例外列表對符號字符是否合法 做進一步判斷。在本實施例中,例外列表內順序存儲多個比較值。并且,在利用例外列表對 符號字符進行合法性判斷時,將N與例外列表中的當前比較值進行比較。若N與當前比較 值相同則認為符號字符不合法,此時將多個比較值中的下一比較值作為下次比較的當前比 較值,并將M加1后重新利用簇號公式計算新的y(l,并重復后續(xù)操作。若N與當前比較值不 相同,則認為符號字符合法,并保持當前比較值不變,以利用該當前比較值來對后續(xù)的符號 字符進行合法性判斷。在本實施例中,在例外列表中存儲與N對應的比較值,然而本領域技 術人員完全可以想到在例外列表中存儲與M或符號字符對應的比較值。此時,則需要將M 或符號字符與當前比較值進行比較來判斷符號字符的合法性。例外列表的作用是根據符號 字符與碼字的實際對應關系將由上述規(guī)則無法判斷的例外情況預先存儲于ROM。由于例外 情況僅在碼表的極小一部分,由此可大大降低對ROM的需求。在通過上述判斷后,則認為判斷合法的符號字符與N所代表的碼字是對應的。并 且,在一實施例中,將判斷合法的符號字符順序存儲于存儲器(例如,RAM)中,以便在后續(xù) 查表時根據符號字符及其存儲位置確定符號字符與碼字的對應關系。當然,也可以不對符 號字符進行存儲,而是在需要進行查表時直接利用上述方式確定符號字符與碼字的對應關 系。在確定符號字符與碼字的對應關系后,進一步判斷N是否等于928,若N小于等于 928,將N和M分別加1,并重新利用簇號公式計算新的lo,并重復后續(xù)操作,以確認新符號 字符與碼字的對應關系。若N等于928,則表明已確認完929碼表中全部929個符號字符與 碼字的對應關系,進而碼表生成方法結束。當然,也可以根據預先存儲的若干個離散的符號字符與碼字對應關系來對M和N 進行初始化,并在N值滿足預定數值時即停止碼表生成方法。此時,該若干個離散的符號 字符與碼字對應關系形成多個區(qū)段,本實施例的碼表生成方法則不是計算929碼表中全部 929個符號字符與碼字的對應關系,而是計算929碼表的一定區(qū)段內的符號字符與碼字的 對應關系。在實際使用時,可預先根據掃描獲得的符號字符確定該符號字符所在的區(qū)段,再 利用上述方法生成該區(qū)段內的碼表,由此確定該符號字符所對應的碼字。由此,可進一步節(jié) 約運算時間。通過本發(fā)明的碼表生成方法,可優(yōu)選利用硬件邏輯在系統上電或需要時直接生成 碼表,無需預先將碼表存儲ROM中,降低了對ROM的需求,減小了硬件解碼芯片的尺寸。
如圖3所示,圖3是針對3及6簇碼表的碼表生成方法的流程圖。在本實施例與 圖2所示的實施例的區(qū)別僅在于在初始化步驟,生成五位的八進制數M = yiy2y3y4y5作為 第一數字序列,利用(ycryi+h-y^mod 9 = 3或6來確定y(1,并在y(1的合法性判斷時是將y(1 是否小于等于7且大于等于0作為判斷標準。此外,在符號字符的合法性判斷時,無需利用 例外列表做進一步判斷。
在上述實施例中,僅對本發(fā)明進行了示范性描述,但是本領域技術人員在閱讀本 專利申請后可以在不脫離本發(fā)明的精神和范圍的情況下對本發(fā)明進行各種修改。
權利要求
一種碼表生成方法,其特征在于,所述碼表生成方法包括a.生成第一數字序列以及第二數字序列;b.利用所述第二數字序列生成碼字;c.利用所述第一數字序列生成符號字符,并對所述符號字符進行合法性判斷;d.確定判斷合法的所述符號字符與所述碼字的對應關系。
2.根據權利要求1所述的碼表生成方法,其特征在于,所述碼表為PDF417條碼的929碼表。
3.根據權利要求2所述的碼表生成方法,其特征在于,所述步驟a包括生成一個五位 的六進制數M = yiy2y3y4y5作為所述第一數字序列,生成一個三位的十進制數N作為所述第 二數字序列,并對M和N進行初始化。
4.根據權利要求3所述的碼表生成方法,其特征在于,在所述步驟b包括將N直接作 為所述碼字。
5.根據權利要求4所述的碼表生成方法,其特征在于,所述步驟c包括cl.利用簇號公式(ycryi+h-ydmod 9 = 0計算yQ ;c2.利用求和公式(y0+y2+y4+y6) = 9計算y6 ;c3.禾lj用如下公式:y0 = Xq+x^Yj = xj+x^y;, = x2+x3,y3 = x3+x4,y4 = x4+x5,y5 = x5+x6 以及 y6 = x6+x7 確定 x0、x” x2、x3、x4、x5、x6 以及 x7。
6.根據權利要求5所述的碼表生成方法,其特征在于,所述步驟cl進一步包括對%進 行合法性判斷,若%不合法,則將M加1,并重復所述步驟cl。
7.根據權利要求6所述的碼表生成方法,其特征在于,在所述步驟cl中,對%進行合 法性判斷包括判斷y。是否小于等于5且大于等于0,若%小于等于5且大于等于0,則ytl合 法,否則,%不合法。
8.根據權利要求7所述的碼表生成方法,其特征在于,所述步驟c2進一步包括對y6進 行合法性判斷,若y6不合法,則將M加1,并返回所述步驟cl。
9.根據權利要求8所述的碼表生成方法,其特征在于,在所述步驟c2中,對y6進行合 法性判斷包括判斷y6是否小于等于8且大于等于0,若y6小于等于8且大于等于0,則y6合 法,否則,y6不合法。
10.根據權利要求9所述的碼表生成方法,其特征在于,在所述步驟c中,以 70717273747576作為所述符號字符。
11.根據權利要求10所述的碼表生成方法,其特征在于,所述步驟c進一步包括c4.判斷X(1、Xl、x2、x3> x4、x5、x6及x7是否小于等于5且大于等于0,若存在一組X(1、Xl、 x2、x3、x4、x5、x6及x7均小于等于5且大于等于0,則所述符號字符合法,否則所述符號字符 不合法。
12.根據權利要求11所述的碼表生成方法,其特征在于,所述步驟c進一步包括c5.判斷所述符號字符是否對應于例外列表中的當前比較值。
13.根據權利要求12所述的碼表生成方法,其特征在于,在所述步驟c5中,將N與所述 例外列表中順序存儲的多個比較值中的當前比較值進行比較,若N與當前比較值相同則所 述符號字符不合法,并將所述多個比較值中的下一比較值作為下次比較的當前比較值,若N 與當前比較值不相同則所述符號字符合法,并保持當前比較值不變。
14.根據權利要求2所述的碼表生成方法,其特征在于,所述步驟a包括生成一個五 位的八進制數M = yiy2y3y4y5作為所述第一數字序列,生成一個三位的十進制數N作為所述 第二數字序列,并對M和N進行初始化。
15.根據權利要求14所述的碼表生成方法,其特征在于,所述步驟c包括cl.利用簇號公式(ycryi+yfydmod 9 = 3或6計算yQ ;c2.利用求和公式(y0+y2+y4+y6) = 9計算y6 ;c3.禾lj用如下公式:y0 = Xq+x^Yj = xj+x^y;, = x2+x3,y3 = x3+x4,y4 = x4+x5,y5 = x5+x6 以及 y6 = x6+x7 確定 x0、x” x2、x3、x4、x5、x6 以及 x7。
16.根據權利要求15所述的碼表生成方法,其特征在于,所述步驟cl進一步包括對% 進行合法性判斷,若%不合法,則將M加1,并重復所述步驟cl。
17.根據權利要求16所述的碼表生成方法,其特征在于,在所述步驟cl中,對%進行 合法性判斷包括判斷y。是否小于等于7且大于等于0,若%小于等于7且大于等于0,則ytl 合法,否則,%不合法。
18.根據權利要求17所述的碼表生成方法,其特征在于,所述步驟c2進一步包括判斷 y6的合法性,若y6不合法,則將M加1,并返回所述步驟cl。
19.根據權利要求18所述的碼表生成方法,其特征在于,在所述步驟c2中,對y6進行 合法性判斷包括判斷y6是否小于等于8且大于等于0,若y6小于等于8且大于等于0,則y6 合法,否則,y6不合法。
20.根據權利要求19所述的碼表生成方法,其特征在于,在所述步驟b包括將N直接 作為所述碼字,在所述步驟c中,以y^y^y^L作為所述符號字符。
21.根據權利要求20所述的碼表生成方法,其特征在于,所述步驟c進一步包括c4.判斷X(1、Xl、x2、x3> x4、x5、x6及x7是否小于等于5且大于等于0,若存在一組X(1、Xl、 x2、x3、x4、x5、x6及x7均小于等于5且大于等于0,則所述符號字符合法,否則所述符號字符 不合法。
22.根據權利要求5或15所述的碼表生成方法,其特征在于,所述碼表生成方法進一步 包括e.判斷N是否等于預定數值,若N等于預定數值,則結束所述碼表生成方法,否則,將N 和M分別加1并返回步驟cl。
23.根據權利要求1所述的碼表生成方法,其特征在于,所述步驟d進一步包括將所述 判斷合法的所述符號字符順序存儲于存儲器中。
全文摘要
本發(fā)明公開了一種碼表生成方法,該碼表生成方法包括生成第一數字序列以及第二數字序列;利用第二數字序列生成碼字;利用第一數字序列生成符號字符,并對符號字符進行合法性判斷;確定判斷合法的符號字符與碼字的對應關系。通過上述方法,利用第一數字序列以及第二數字序列分別生成符號字符及碼字,并可通過分別改變第一數字序列以及第二數字序列來獲得不同符號字符與碼字的對應關系,由此可以在需要時直接生成碼表,無需預先存儲碼表,降低了系統對ROM的需求。
文檔編號G06K7/10GK101872412SQ20101018898
公開日2010年10月27日 申請日期2010年6月1日 優(yōu)先權日2010年6月1日
發(fā)明者劉峰, 林輝輝, 胡倫育, 蔡強 申請人:福建新大陸電腦股份有限公司