專利名稱:條形碼讀取器,條形碼讀取方法和計(jì)算機(jī)可讀介質(zhì)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種條形碼讀取器和適用于讀取通過在兩列內(nèi)設(shè)置條形碼而構(gòu)成的兩列條形碼的條形碼讀取方法,以及用于存儲這種讀取處理的程序的計(jì)算機(jī)可讀介質(zhì)。
近年來,通過條形碼管理商品已經(jīng)普及,其中有代表性的是在銷售行業(yè)中的POS系統(tǒng)。例如,在商店的POS系統(tǒng)中,關(guān)于商品的種類和銷售價(jià)格的信息被以條形碼的形式編碼并印在商品上。條形碼被在柜臺讀取,并根據(jù)讀取的信息進(jìn)行支付。然后,售出商品的數(shù)量被實(shí)時地統(tǒng)計(jì),并把統(tǒng)計(jì)結(jié)果用于庫存管理和采購管理。
上述條形碼大致分為WPC碼例如JAN碼,UPC碼例如EAN碼,以及可變長度的第二碼。在這些碼當(dāng)中,WPC碼具有附加于其左端的開始保護(hù)條(SGB),插在其中部的中心條(CB),以及附加于其右端的終止保護(hù)條(EGB)。由6個或4個數(shù)據(jù)字符構(gòu)成的左(第一)數(shù)據(jù)塊被提供在開始保護(hù)條和中心條之間,由6個或4個數(shù)據(jù)字符構(gòu)成的右(第二)數(shù)據(jù)塊被提供在中心條和終止保護(hù)條之間。
這些保護(hù)條和中心條的圖形按照規(guī)范被預(yù)先確定,因此條形碼讀取器便能夠檢測這些保護(hù)條和中心條。
此外,條形碼讀取器能夠根據(jù)保護(hù)條和中心條讀取條形碼的數(shù)據(jù)字符(編碼的數(shù)值或符號的最小單位)。有3種讀取方法,即連續(xù)讀取法,塊讀取法和分割讀取法。連續(xù)讀取法是這樣的,當(dāng)由一個條形碼掃描處理檢測到兩個保護(hù)條和中心條時,插在兩個保護(hù)條之間的數(shù)據(jù)字符便被解調(diào)為一個條形碼。塊讀取法是這樣的,雖然數(shù)據(jù)字符塊被插在一個保護(hù)條和中心條之間,但數(shù)據(jù)字符塊作為條形碼被識別,并且在分別解調(diào)兩個塊之后,這些各個塊的解調(diào)數(shù)據(jù)被合成(綜合),借以再現(xiàn)被調(diào)制成一個條形碼的數(shù)據(jù)。此外,按照分割讀取法,即使數(shù)據(jù)字符串和一個保護(hù)條或中心條相鄰,但以最小單位作為條形碼被識別,并且已被分別讀出的那些數(shù)據(jù)字符的解調(diào)數(shù)據(jù)段被合成,借以再現(xiàn)相應(yīng)于整個單一條形碼的解調(diào)數(shù)據(jù)。即塊讀取法和分割讀取法是在這樣的情況下執(zhí)行的,其中從開始保護(hù)條到終止保護(hù)條范圍內(nèi)的整個條形碼不能通過一次掃描處理讀取。
附帶說明,WPC碼因?yàn)槭情L度固定的碼,在可表示的信息的數(shù)量方面有其固有的限制。因而,為了增加可表示信息的數(shù)量,同時又保持WPC碼的編碼系統(tǒng),至今一直采用一種方法,其中WPC碼排列成兩列(級),并作為一組條形碼處理,并且由設(shè)置在兩列中的條形碼表示一個信息片(以后稱為“兩列條形碼”)。圖15表示上述兩列條形碼的大致結(jié)構(gòu)。由圖15可見,兩列條形碼由4塊(A-D)構(gòu)成。
在這種情況下,在左數(shù)據(jù)塊(A,C)中設(shè)置表示上級和下級的識別標(biāo)記,因而條形碼讀取器能夠識別是上級塊還是下級塊。然而,不在右數(shù)據(jù)塊(B,D)中設(shè)置這種識別標(biāo)記,因此,條形碼讀取器只從相應(yīng)于右數(shù)據(jù)塊的解調(diào)數(shù)據(jù)不能識別上級塊和下級塊。相應(yīng)地,如果由上述的塊讀取法獲得的解調(diào)數(shù)據(jù)也作為有效數(shù)據(jù)處理,則在這樣的情況下,即上級的條形碼由通過讀取上級的左數(shù)據(jù)塊(A)而獲得的解調(diào)數(shù)據(jù)(1)和通過讀取下級的右數(shù)據(jù)塊(D)而獲得的解調(diào)數(shù)據(jù)(4)構(gòu)成時,條形碼讀取器可能誤識別數(shù)據(jù)。類似地,在這樣的情況下,即下級的條形碼由通過讀取下級的左數(shù)據(jù)塊(C)而獲得的解調(diào)數(shù)據(jù)(3)和通過讀取上級的右數(shù)據(jù)塊(B)而獲得的解調(diào)數(shù)據(jù)(2)構(gòu)成時,條形碼讀取器可能誤識別數(shù)據(jù)。即在整個兩列條形碼中可以有上下級的右左數(shù)據(jù)塊的兩個組合,然而,條形碼讀取器不能識別這些組合中的正確的組合。那么,如果模數(shù)10檢查關(guān)于上下級的每個條形碼偶爾為OK,則條形碼讀取器可能作出誤判斷,盡管相應(yīng)于兩列條形碼的解調(diào)數(shù)據(jù)沒有再現(xiàn),也認(rèn)為解調(diào)已經(jīng)完成。
因此,現(xiàn)有技術(shù)的條形碼讀取器通過連續(xù)讀取法而獲得解調(diào)數(shù)據(jù)((5),(6))作為有效數(shù)據(jù),并且只根據(jù)通過分別連續(xù)讀取上級條形碼和下級條形碼而獲得的解調(diào)數(shù)據(jù)再現(xiàn)相應(yīng)于整個兩列條形碼的解調(diào)數(shù)據(jù)。
構(gòu)成兩列條形碼的各個條形碼具有在垂直方向上具有小的高度的截?cái)鄻?biāo)志(truncate lable),因此掃描光束通過每個條形碼不停地從一端到另一端掃描的可能性極小。因而,需要長的時間才能獲得基于連續(xù)讀取法的解調(diào)數(shù)據(jù),并且最后需要長的時間才能再現(xiàn)相應(yīng)于整個兩列條形碼的解調(diào)數(shù)據(jù)。
本發(fā)明的主要目的在于提供一種條形碼讀取器,其能夠精確地合成通過塊讀第二數(shù)據(jù)塊而獲得的解調(diào)數(shù)據(jù)和通過塊讀兩列條形碼的每級的左數(shù)據(jù)塊而獲得的解調(diào)數(shù)據(jù),因此能夠在短時間內(nèi)再現(xiàn)相應(yīng)于整個兩列條形碼的解調(diào)數(shù)據(jù)。
為完成上述目的,按照本發(fā)明的第一方面,條形碼讀取器包括條形碼圖形檢測單元,用于掃描由第一條形碼和第二條形碼構(gòu)成的兩列條形碼,所述每個條形碼包括左數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述每個數(shù)據(jù)塊含有預(yù)定數(shù)量的數(shù)據(jù)字符,并檢測在掃描路徑上的條形碼圖形;解調(diào)單元,用于通過解調(diào)所述條形碼圖形檢測單元檢測的條形碼圖形而獲得解調(diào)數(shù)據(jù);第一緩沖器,用于當(dāng)由所述解調(diào)單元獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于第一條形碼的左數(shù)據(jù)塊的部分時存儲解調(diào)數(shù)據(jù);第二緩沖器,用于當(dāng)由所述解調(diào)單元獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于第二條形碼的左數(shù)據(jù)塊的部分時存儲解調(diào)數(shù)據(jù);第三緩沖器,用于當(dāng)由所述解調(diào)單元獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于第一條形碼或第二條形碼的第二數(shù)據(jù)塊的部分時存儲解調(diào)數(shù)據(jù);第一合成單元,用于合成存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第三緩沖器中的解調(diào)數(shù)據(jù);第二合成單元,用于合成存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第三緩沖器中的解調(diào)數(shù)據(jù);以及確認(rèn)單元,用于只有在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分以及相應(yīng)于兩個解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分彼此不同時,由所述第一合成單元作為相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù)而合成解調(diào)數(shù)據(jù),并確認(rèn)由所述第二合成單元作為相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)而合成解調(diào)數(shù)據(jù)。
利用這種結(jié)構(gòu),條形碼圖形檢測單元根據(jù)掃描兩列條形碼的路徑檢測條形碼圖形。然后,解調(diào)單元解調(diào)由條形碼圖形檢測單元按順序檢測的條形碼圖形,并輸出解調(diào)數(shù)據(jù)。這一組解調(diào)數(shù)據(jù)當(dāng)含有相應(yīng)于第一條形碼的左數(shù)據(jù)塊部分時被存儲在第一緩沖器中,當(dāng)含有相應(yīng)于第二條形碼的左數(shù)據(jù)塊部分時被存儲在第二緩沖器中。當(dāng)含有相應(yīng)于任何一列的第二數(shù)據(jù)塊部分時,解調(diào)數(shù)據(jù)被存儲在第三緩沖器中。然后,第一合成單元合成存儲在第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在第三緩沖器中的解調(diào)數(shù)據(jù)。第二合成單元合成存儲在第二緩沖器中的解調(diào)數(shù)據(jù)和存儲在第三緩沖器中的解調(diào)數(shù)據(jù)。只有在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分以及相應(yīng)于每組解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分彼此不同時,確認(rèn)單元確認(rèn)由第一合成單元合成的解調(diào)數(shù)據(jù)作為相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)由第二合成單元合成的解調(diào)數(shù)據(jù)作為相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)。因而,如果存儲在第一緩沖器中或存儲在第二緩沖器中的解調(diào)數(shù)據(jù)不含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分,并且如果相應(yīng)于包含在各組解調(diào)數(shù)據(jù)中的第二數(shù)據(jù)塊中的數(shù)據(jù)字符的部分彼此相同時,才可能不能精確地合成相應(yīng)于條形碼的解調(diào)數(shù)據(jù),因而確認(rèn)單元不執(zhí)行上述的確認(rèn)。當(dāng)進(jìn)行兩列條形碼的分割讀取處理時誤讀的可能性被避免了。
在按照本發(fā)明的第二方面的條形碼讀取器中,條形碼是WPC碼,UPC/A碼,JAN碼或EAN碼。
在按照本發(fā)明的第三方面的條形碼讀取器中,第一合成單元只有在存儲在第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在第三緩沖器中的解調(diào)數(shù)據(jù)彼此重疊兩個或多個字符時才合成解調(diào)數(shù)據(jù)的這些片。第二合成單元只有在存儲在二緩沖器中的解調(diào)數(shù)據(jù)和存儲在第三緩沖器中的解調(diào)數(shù)據(jù)彼此重疊兩個或多個字符時才合成解調(diào)數(shù)據(jù)的這些片。
在按照本發(fā)明的第四方面的條形碼讀取器中,只有在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)含有相應(yīng)于兩個或多個第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分時,確認(rèn)單元才確認(rèn)由所述第一合成單元獲得的解調(diào)數(shù)據(jù)作為相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)由所述第二合成單元獲得的解調(diào)數(shù)據(jù)作為相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)。利用這種結(jié)構(gòu),可以確保在第二數(shù)據(jù)塊中要被合成的解調(diào)數(shù)據(jù)彼此重疊兩個或多個字符,借以進(jìn)一步減少在合成解調(diào)數(shù)據(jù)時的錯誤。
在按照本發(fā)明的第五方面的條形碼讀取器中,在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)相應(yīng)于第一條形碼以及存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)相應(yīng)于第二條形碼時,確認(rèn)單元確認(rèn)存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)作為相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)作為相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù),利用這種結(jié)構(gòu),當(dāng)獲得基于連續(xù)讀取處理的解調(diào)數(shù)據(jù)時,解調(diào)數(shù)據(jù)便立即被確認(rèn),因而進(jìn)一步增強(qiáng)了讀取條形碼的響應(yīng)。
按照本發(fā)明的條形碼讀取方法包括掃描包含第一條形碼和第二條形碼的兩列條形碼的步驟,所述條形碼的每一個含有左數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述數(shù)據(jù)塊的每一個含有預(yù)定數(shù)量的數(shù)據(jù)字符,并檢測掃描路徑上的條形碼圖形;通過解調(diào)條形碼圖形而獲得解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第一條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的的右數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第二條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的的第二數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟;以及只有在含有相應(yīng)于第一條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第二條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分以及相應(yīng)于兩個解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分彼此不同時,確認(rèn)相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟。
按照本發(fā)明的一種計(jì)算機(jī)可讀介質(zhì),用于存儲用于和用于掃描含有第一條形碼和第二條形碼的兩列條形碼的檢測裝置相連的計(jì)算機(jī)的程序,所述每個條形碼含有左數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述每個數(shù)據(jù)塊含有預(yù)定數(shù)量的數(shù)據(jù)字符,所述檢測裝置還用于檢測在掃描路徑上的條形碼圖形,所述程序使計(jì)算機(jī)執(zhí)行通過解調(diào)由所述檢測裝置檢測到的條形碼而獲得解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第一條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的的右數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第二條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的的第二數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟;以及只有在含有相應(yīng)于第一條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第二條形碼的左數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分以及相應(yīng)于兩個解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分彼此不同時,確認(rèn)相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟。
下面參照附圖詳細(xì)說明本發(fā)明,其中圖1是表示在本發(fā)明的一個實(shí)施例中的條形碼讀取器的方塊圖;圖2表示圖1中的Ig-up緩沖器和Ig-down緩沖器的結(jié)構(gòu);圖3表示圖1中的M10-buff-up緩沖器和M10-buff-down緩沖器的結(jié)構(gòu);圖4是一個在圖1中由CPU執(zhí)行的條形碼識別/解調(diào)處理程序的流程圖;圖5是一個在圖1中由CPU執(zhí)行的條形碼識別/解調(diào)處理程序的流程圖;圖6是一個在圖4中步S002執(zhí)行的數(shù)據(jù)解調(diào)處理的流程圖;圖7是一個在圖4中步S002執(zhí)行的數(shù)據(jù)解調(diào)處理的流程圖;圖8是一個在圖4中步S002執(zhí)行的數(shù)據(jù)解調(diào)處理的流程圖;圖9表示兩列條形碼的結(jié)構(gòu);圖10表示W(wǎng)PC碼的字符結(jié)構(gòu);圖11是表示數(shù)值數(shù)據(jù)和條形碼的組合與各個字符之間的相關(guān)性的表;圖12是表示在左數(shù)據(jù)塊中的奇數(shù)和偶數(shù)奇偶校驗(yàn)與標(biāo)記字符之間的相關(guān)性;圖13表可以進(jìn)行連續(xù)讀取處理時的掃描光束的角度;圖14表可以進(jìn)行塊讀取處理時的掃描光束的角度;以及圖15是表示在現(xiàn)有技術(shù)中兩列條形碼是如何被讀取的例圖。
下面參照
本發(fā)明的實(shí)施例。
首先參照附圖9說明要被本發(fā)明實(shí)施例中的條形碼讀取器讀取的兩級條形碼的結(jié)構(gòu)。如圖9所示,兩級條形碼被這樣構(gòu)成,使得兩個條形碼上下平行設(shè)置(WPC碼)。這樣,每級條形碼(WPC碼)包括在其右邊的由固定圖形的條構(gòu)成的開始保護(hù)條(SGB),由以固定圖形以類似方式形成的條構(gòu)成的中心條(CB),以及由以固定圖形以類似方式形成的條構(gòu)成的終止保護(hù)條(EGB)。這樣,WPC碼具有包括在開始保護(hù)條(SGB)和終止保護(hù)條(EGB)之間的6個數(shù)據(jù)字符片(C1-C6)的左數(shù)據(jù)塊,和在中心條(CB)和終止保護(hù)條(EGB)之間的6個數(shù)據(jù)字符片(C7-C12)的右數(shù)據(jù)塊,
如圖10所示,每個數(shù)據(jù)字符(C1-C12)是兩個白條和兩個黑條的組合,它們通過分別分配7個模數(shù)(每個模數(shù)具有一個單位長度)為白或黑而形成。那么,在構(gòu)成左數(shù)據(jù)塊的各個數(shù)據(jù)字符(C1-C6)中,構(gòu)成每個數(shù)據(jù)字符的4個條從開始保護(hù)條(SGB)按照白黑白黑的順序排列。在構(gòu)成右數(shù)據(jù)塊的各個數(shù)據(jù)字符(C7-C12)中,構(gòu)成每個數(shù)據(jù)字符的4個條從中心條(CB)按照黑白黑白的順序排列。
圖11是表示由數(shù)據(jù)字符的各個條(a,b,c,d)可取的長度(模數(shù)數(shù))的所有的組合的一個表,并表示相應(yīng)于各個組合的數(shù)值數(shù)據(jù)。注意在數(shù)值數(shù)據(jù)中的“E-”代表偶數(shù)奇偶校驗(yàn)字符,“O-”代表奇數(shù)奇偶校驗(yàn)字符。此外,T2代表通過把每個字符的最后條(d)加到其緊挨的前一條(c)而獲得的長度,T1代通過把后條(c)加到其緊挨的前一條(b)而獲得的長度。這兩個長度被稱為“δ距離”。
按照WPC碼的規(guī)則,右數(shù)據(jù)塊只包括奇數(shù)奇偶校驗(yàn)數(shù)據(jù)字符,左數(shù)據(jù)塊包括偶數(shù)和奇數(shù)奇偶校驗(yàn)數(shù)據(jù)字符。不過,按照WPC碼的規(guī)則,可以由左數(shù)據(jù)塊的6個數(shù)據(jù)字符進(jìn)行的偶數(shù)和奇數(shù)奇偶校驗(yàn)的組合被限制于圖12所示的10種方法。這樣,唯一的數(shù)值(0-9),即標(biāo)記字符則分別相對于這些組合被定義。在標(biāo)記字符也被包含在數(shù)字?jǐn)?shù)中的情況下,由12個數(shù)據(jù)字符構(gòu)成的WPC碼(WPC/A碼,JAN-13碼,和EAN碼)被稱為“13數(shù)字條形碼”。注意,標(biāo)記字符被用于識別兩級條形碼中的上下級。即標(biāo)記字符和第一字符的組合被稱為“識別標(biāo)記”。如果“識別標(biāo)記”是一個特定的數(shù)值(例如21),則表示上級條形碼。如果“識別標(biāo)記”是另一個特定的數(shù)值(例如29),則表示下級條形碼。附帶說明,如圖12所示,由左數(shù)據(jù)塊的6個數(shù)據(jù)字符進(jìn)行的偶數(shù)和奇數(shù)奇偶校驗(yàn)的組合和所有其它組合比較時,在偶數(shù)和奇數(shù)校驗(yàn)中具有兩個或多個不同。
此外,按照WPC碼的規(guī)則,如果包含在13數(shù)字條形碼中的12個數(shù)據(jù)字符按順序被分成偶數(shù)或奇數(shù)位置,其中最右字符被定義為奇數(shù)位置(標(biāo)記字符被歸類于奇數(shù)位置),則在奇數(shù)位置中的數(shù)據(jù)字符的數(shù)值的總和的3倍和在偶數(shù)位置中的數(shù)據(jù)字符的數(shù)值的總和的和是10的整數(shù)倍。如果利用這個規(guī)則,便可以容易地證實(shí)是否再現(xiàn)相應(yīng)于整個條形碼的解調(diào)數(shù)據(jù)。這種證實(shí)被稱為“模數(shù)10檢查”。
參照圖1,條形碼讀取器具有CPU1,條寬度數(shù)據(jù)設(shè)置存儲緩沖器2,控制電路3,接口電路4,ROM5,解調(diào)數(shù)據(jù)暫存緩沖器6和解調(diào)數(shù)據(jù)存儲緩沖器7,它們通過總線彼此相連,條寬計(jì)數(shù)器16和與條寬度數(shù)據(jù)設(shè)置存儲緩沖器2相連的激光束開始/結(jié)束檢測電路17,時鐘19和與寬度計(jì)數(shù)器16相連的A/D轉(zhuǎn)換器15,和A/D轉(zhuǎn)換器15相連的光接收元件18,電機(jī)驅(qū)動電路8,激光驅(qū)動電路9,揚(yáng)聲器10,以及和控制電路3相連的LED,和電機(jī)驅(qū)動電路8相連的電機(jī),由電機(jī)12驅(qū)動的掃描光學(xué)系統(tǒng)14,以及和激光驅(qū)動電路9相連的半導(dǎo)體激光器13。
ROM5是只讀存儲器,用于作為計(jì)算機(jī)可讀介質(zhì)存儲條形碼識別/解調(diào)處理程序。
被稱為計(jì)算機(jī)的CPU1執(zhí)行存儲在ROM5中的條形碼識別/解調(diào)處理程序,借以控制整個條形碼讀取器。CPU1還作為解調(diào)單元,第一合成單元,第二合成單元,和確認(rèn)單元,并通過讀取兩級條形碼21的每級的條形碼而獲得的每組條寬度數(shù)據(jù)再現(xiàn)相應(yīng)于整個兩級條形碼21的數(shù)據(jù)。
在解調(diào)數(shù)據(jù)暫存緩沖器RAM6中提供有CPU1的操作區(qū)域,和解調(diào)數(shù)據(jù)暫存緩沖器6a,Ig-up緩沖器6b,Ig-down緩沖器6c,M10-buff-up緩沖器6d,和M10-buff-down緩沖器6e,由CPU1執(zhí)行上述的條形碼識別/解調(diào)處理程序。
接口電路4控制總線B的狀態(tài)并控制向外部裝置的數(shù)據(jù)傳輸。
控制電路3控制電機(jī)驅(qū)動電路8,激光驅(qū)動電路9,揚(yáng)聲器10,和發(fā)光二極管(LED)11。電機(jī)驅(qū)動電路8驅(qū)動電機(jī)12,從而使構(gòu)成掃描光學(xué)系統(tǒng)14的多邊鏡(未示出)轉(zhuǎn)動。此外,激光驅(qū)動電路9驅(qū)動半導(dǎo)體激光器13發(fā)出激光束L。此外,揚(yáng)聲器10發(fā)出表示條形碼讀取(解調(diào))完成的聲音。發(fā)光二極管11是用于顯示數(shù)據(jù)的顯示元件,例如顯示商品20的銷售價(jià)格,其是作為條形碼的解調(diào)結(jié)果而獲得的。
從半導(dǎo)體激光器13發(fā)出的激光束L入射到掃描光學(xué)系統(tǒng)14,并被其偏轉(zhuǎn)。更詳細(xì)地說,掃描光學(xué)系統(tǒng)14通過使用由電機(jī)12轉(zhuǎn)動的多邊鏡(未示出)使激光束L沿一個方向偏轉(zhuǎn)。一組固定鏡被固定在多邊鏡的相對側(cè)。因而,由多邊鏡偏轉(zhuǎn)的激光束L沿不同方向由各個固定鏡再反射。結(jié)果,激光束L的偏轉(zhuǎn)方向(即掃描方向)改變?yōu)椴煌姆较?。在由多邊鏡的一個反射表面偏轉(zhuǎn)的期間內(nèi),掃描光學(xué)系統(tǒng)14沿多個方向進(jìn)行連續(xù)的高速掃描。在由多邊鏡的一個反射表面偏轉(zhuǎn)的期間內(nèi)進(jìn)行的多個激光束掃描的每一個掃描以后被稱為“一次掃描”。
當(dāng)這樣掃描的激光束L碰到商品20的表面(含有兩列條形碼21)時,激光束L被從表面進(jìn)行不規(guī)則的反射,一些反射光束R被光接收元件(是一種光二極管)18接收。光接收元件輸出相應(yīng)于接收到的反射光束R的亮度和暗度的電流。A/D轉(zhuǎn)換器15比較由光接收元件18輸出的電流和預(yù)定的門限值,并把電流轉(zhuǎn)換為二進(jìn)制信號。當(dāng)反射光束R的強(qiáng)度相應(yīng)于兩級條形碼21中的黑條的反射率時,二進(jìn)制信號指示“H”電平,當(dāng)反射光束R的強(qiáng)度相應(yīng)于兩級條形碼21中的白條的反射率時,二進(jìn)制信號指示“L”電平。
條寬度計(jì)數(shù)器16測量從二進(jìn)制信號上升時刻到其下降時刻之間的時間間隔(這應(yīng)該相應(yīng)于在兩級條形碼21中的黑條的寬度)。條寬度計(jì)數(shù)器16還測量從二進(jìn)制信號下降時刻到其上升時刻之間的時間間隔(這應(yīng)該相應(yīng)于在兩級條形碼21中的白條的寬度)。注意,條寬度計(jì)數(shù)器16計(jì)數(shù)從時鐘19輸入的時鐘的數(shù)量,用于測量相應(yīng)于每個條寬的時間。從條寬計(jì)數(shù)器16輸出的各個條的讀出的數(shù)據(jù)呈這樣的形式,使得計(jì)數(shù)值和表示白或黑的顏色識別信號相結(jié)合。每當(dāng)激光束掃描一次,條寬計(jì)數(shù)器16連續(xù)地輸出讀數(shù)據(jù)。這樣在每次掃描期間連續(xù)輸出的一系列的讀數(shù)據(jù)被稱為“條寬數(shù)據(jù)組”。
上述的控制單元電路3,電機(jī)驅(qū)動電路8,電機(jī)12,激光驅(qū)動電路9,半導(dǎo)體激光器13,掃描光學(xué)系統(tǒng)14,光接收元件18,A/D轉(zhuǎn)換器15,條寬計(jì)數(shù)器16和時鐘19相當(dāng)于條形碼圖形檢測單元,用于通過掃描包括兩級WPC碼的兩級條形碼21檢測在掃描路徑上的條形碼圖形。
從條寬計(jì)數(shù)器16輸出的條寬數(shù)據(jù)組被輸入到激光束開始/結(jié)束檢測電路17。激光束開始/結(jié)束檢測電路17檢測條寬數(shù)據(jù)組的狀態(tài),并檢測一個激光束掃描的開始時刻和結(jié)束時刻。然后,激光束開始/結(jié)束檢測電路17把條寬數(shù)據(jù)組加到表示開始時刻和結(jié)束時刻的數(shù)據(jù)片上。
條寬數(shù)據(jù)組存儲緩沖器2暫時存儲加上激光束的開始時刻和結(jié)束時刻的條寬數(shù)據(jù)組。條寬數(shù)據(jù)組存儲緩沖器2按順序存儲從條寬計(jì)數(shù)器16輸入的條寬數(shù)據(jù)組,并響應(yīng)來自CPU1的請求按照數(shù)據(jù)組原來存儲的順序一片一片地傳遞條寬數(shù)據(jù)組。
右數(shù)據(jù)塊暫存緩沖器6a,Ig-up緩沖器6b,和Ig-down緩沖器6c屬于緩沖器類,用于暫時存儲作為對條寬數(shù)據(jù)組執(zhí)行解調(diào)處理的結(jié)果而獲得的解調(diào)數(shù)據(jù)。更詳細(xì)地說,右數(shù)據(jù)塊暫存緩沖器6a是一種暫存緩沖器(相應(yīng)于第三緩沖器),用于相應(yīng)于右數(shù)據(jù)塊的解調(diào)數(shù)據(jù)。此外,Ig-up緩沖器6b是一種暫存緩沖器(相應(yīng)于第一緩沖器),用于含有相應(yīng)于上級條形碼(第一級WPC碼)的左數(shù)據(jù)塊的區(qū)域的解調(diào)數(shù)據(jù)。如圖2所示,Ig-up緩沖器6b具有地址為0-11的12個項(xiàng),并用項(xiàng)0-5存儲相應(yīng)于左數(shù)據(jù)塊的數(shù)據(jù),用項(xiàng)6-11存儲相應(yīng)于右數(shù)據(jù)塊的數(shù)據(jù)。類似地,Ig-down緩沖器6c是一種暫存緩沖器(相應(yīng)于第二緩沖器),用于含有相應(yīng)于下級條形碼(第二級WPC碼)的左數(shù)據(jù)塊的區(qū)域的解調(diào)數(shù)據(jù)。并具有如圖2所示的結(jié)構(gòu)。此外,M10-buff-up緩沖器6d存儲相應(yīng)于整個上級條形碼的其中上述的模數(shù)10檢查的結(jié)果為OK的解調(diào)數(shù)據(jù)(在其頭部含有標(biāo)記字符),并且,如圖3所示,具有地址為0-12的13項(xiàng)。類似地,M10-buff-down緩沖器6e存儲相應(yīng)于整個下級條形碼的其中上述的模數(shù)10檢查的結(jié)果為OK的解調(diào)數(shù)據(jù)(在其頭部含有標(biāo)記字符),并且,其結(jié)構(gòu)如圖3所示。
下面參照圖4-8說明存儲在ROM5中的并由CPU1執(zhí)行的條形碼識別/解調(diào)處理程序。
圖4,5的流程圖是條形碼識別/解調(diào)處理的主程序,由接通條形碼讀取器和存儲條寬數(shù)據(jù)組的條寬數(shù)據(jù)組存儲緩沖器2的主電源開始。然后,在第一步S001,CPU1從條寬數(shù)據(jù)組存儲緩沖器2中取出一個最早的條寬數(shù)據(jù)組。
在步S002,CPU1對在步S001中取出的條寬數(shù)據(jù)細(xì)執(zhí)行數(shù)據(jù)解調(diào)處理(相應(yīng)于解調(diào)單元)。圖6-8是表示在步S001執(zhí)行的數(shù)據(jù)解調(diào)處理子程序的流程圖。在這子程序的第一步S101,CPU1檢查要被處理的條寬數(shù)據(jù)組是否包括開始保護(hù)條。如果是,CPU1就前進(jìn)到S102。在步S102-S135的處理是用于解調(diào)從開始保護(hù)條到一個能夠被調(diào)制的限度的字符的處理。
在步S102,CPU1檢查第一個字符(其在朝向中心條的一側(cè)和開始條相鄰)的長度。更詳細(xì)地說,CPU1檢查形成第一字符的4個條的寬度計(jì)數(shù)值的總和是否在一個固定值附近。然后,如果第一字符的長度不在固定值附近(S103),則CPU1把該數(shù)據(jù)組設(shè)想為基于不同于該條形碼的圖形的數(shù)據(jù)組,在步S136復(fù)位“解調(diào)完成標(biāo)記”,并結(jié)束這一子程序。與此相反,如果第一字符的長度在固定值附近(S103),則CPU1進(jìn)行S104的處理。
在步S104,CPU1檢查下一個字符(它被定義為和在初始狀態(tài)下的第一個字符相鄰的第二字符)的長度。然后,如果這一字符的長度不在固定值附近(S105),則CPU1進(jìn)行步S109,解調(diào)在第一塊中的其長度至今已被確定為在固定值附近的字符。與此相反,如果這一字符的長度在固定值附近(S105),則CPU1在步S106檢查字符的失真量是否大。如果不是,則CPU1直接前進(jìn)到步S108。如果字符的失真量的任何一個大(即如果相應(yīng)于各個字符的條寬數(shù)據(jù)的項(xiàng)之間的比超過一個固定范圍,或者如果相應(yīng)于各個模數(shù)的條寬數(shù)據(jù)的項(xiàng)之間的比超過一個固定范圍),則CPU1在步S107設(shè)置“失真狀態(tài)標(biāo)記”之后前進(jìn)到步S108。在步S108,CPU1檢查字符長度的檢查處理是否直到第6個字符(和朝向開始條側(cè)的中心條相鄰)都已完成。如果是,CPU1則前進(jìn)到步S109,解調(diào)構(gòu)成第一塊的6個字符。而如果不是,則CPU1返回步S104,檢查相鄰的下一個字符的長度。
在步S109,CPU1從字符長度被在步S103,S105確定為在固定值附近的字符當(dāng)中取出最接近于開始保護(hù)條的字符,并對取出的字符執(zhí)行解調(diào)處理。
在下一步S110,CPU1檢查在步S109進(jìn)行的解調(diào)處理是否完成。如果沒有完成,則CPU1前進(jìn)到步S135,以便完成這個子程序。如果已完成,則CPU1前進(jìn)到步S111。在步S111,CPU1檢查字符的失真量是否大。如果不大,則CPU1直接前進(jìn)到步S113。而如果大,則CPU1在步S112設(shè)置“失真狀態(tài)標(biāo)記”,并前進(jìn)到S113。在步S113,CPU1檢查是否完成相應(yīng)于其長度被在步S103,S105的字符長度檢查中確定為在固定值附近的所有字符數(shù)的解調(diào)處理。如果沒有完成,則CPU1返回步S109對下一個相鄰字符執(zhí)行解調(diào)處理。與此相反,如果已完成。則CPU1前進(jìn)到步S114。
在步114,CPU1檢查已經(jīng)被步S109中的解調(diào)處理解調(diào)的字符數(shù)是否是6個。如果小于6個,則可能要被處理的條寬數(shù)據(jù)組是通過“分割讀取”而獲得的,因而CPU1前進(jìn)到步S135以便完成這一子程序。與此相反,如果已被解調(diào)的字符數(shù)是6個,CPU1就前進(jìn)到步S115。
在步S115,CPU1再次檢查第6個字符的長度。如果第6個字符的長度不在固定值附近(S116),則CPU1前進(jìn)到步S135。與此相反,如果第6個字符的長度在固定值附近(S116),則CPU1在步S117檢查中心條。這一檢查中心條的處理是檢查和第6個字符相鄰的下一個字符是否和被設(shè)為中心條的預(yù)定的圖形一致。然后,當(dāng)獲得中心條檢查的所希望的結(jié)果時(S118),CPU1就前進(jìn)到步S119。與此相反,當(dāng)沒有獲得中心條檢查的所希望的結(jié)果時(S118),則CPU1確定要被處理的條寬數(shù)據(jù)組是通過“分割讀取”而獲得的條寬數(shù)據(jù)組,并前進(jìn)到步S135完成這一子程序。
在步S119,CPU1檢查第7個(和朝向終止保護(hù)條一側(cè)的中心條相鄰的)字符。然后,如果第7個字符的長度不在固定值附近(S120),則要被處理的條寬數(shù)據(jù)組被確定為不是通過“連續(xù)讀取”而獲得的條寬數(shù)據(jù)組,并因而CPU1前進(jìn)到步S135完成這一子程序。而如果第7個字符的長度在固定值附近(S120),則CPU1前進(jìn)到步S121。
在步S121,CPU1檢查下一個字符(和初始狀態(tài)下第7個字符相鄰的第8個字符)的長度,如果第8個字符的長度不在固定值的附近(S122),則要被處理的條寬數(shù)據(jù)組被確定為不是通過“連續(xù)讀取”而獲得的條寬數(shù)據(jù)組,并因而CPU1前進(jìn)到步S135完成這一子程序。而如果第8個字符的長度在固定值附近(S122),則CPU1在步S123檢查字符的失真量是否大。如果不是,則CPU1直接前進(jìn)到步S125。如果字符的失真量大,則CPU1在步S124設(shè)置“失真狀態(tài)標(biāo)記”之后前進(jìn)到步S125。在步S125,CPU1檢查字符長度的檢查是否直到第12個字符(和中心條一側(cè)的終止保護(hù)條相鄰的)都已完成。如果是,CPU1則前進(jìn)到步S126,解調(diào)構(gòu)成第二塊的6片字符。而如果不是,則CPU1返回步S121,檢查相鄰的下一個字符的長度。
在步S126,CPU1從在步S120,S122被確定為在固定值附近的字符當(dāng)中取出最接近中心條的字符,并執(zhí)行取出字符的解調(diào)處理,和S109類似。在下一步S127,CPU1檢查在步S126進(jìn)行的解調(diào)處理是否完成。如果沒有完成,則CPU1前進(jìn)到步S135,以便完成這個子程序。如果已完成,則CPU1前進(jìn)到步S128。在步S128,CPU1檢查字符的失真量是否大。如果不大,則CPU1直接前進(jìn)到步S130。而如果大,則CPU1在步S129設(shè)置“失真狀態(tài)標(biāo)記”,并前進(jìn)到S130。在步S130,CPU1檢查是否完成相應(yīng)于其長度被在步S120,S122的字符長度檢查中確定為在固定值附近的所有字符數(shù)的解調(diào)處理。如果沒有完成,則CPU1返回步S126對下一個相鄰字符執(zhí)行解調(diào)處理。與此相反,如果已完成。則CPU1前進(jìn)到步S131。
在步S131,CPU1再次檢查第12個字符的長度。如果第12個字符的長度不在固定值附近(S132),則CPU1前進(jìn)到步S135。如果第12個字符的長度在固定值附近(S132),則CPU1在步S133檢查終止保護(hù)條。這一檢查終止保護(hù)條的處理是檢查和第12個字符相鄰的下一個字符是否和被設(shè)為終止保護(hù)條的預(yù)定的圖形一致。然后,當(dāng)獲得終止保護(hù)條檢查的所希望的結(jié)果時(S134),CPU1就確定要被處理的條寬數(shù)據(jù)組是通過“連續(xù)讀取”而獲得的條寬數(shù)據(jù)組,因而前進(jìn)到步S135,與此相反,當(dāng)沒有獲得中心條檢查的所希望的結(jié)果時(S134),則CPU1確定要被處理的條寬數(shù)據(jù)組是至少通過“寬度取”而獲得的條寬數(shù)據(jù)組,并因此前進(jìn)到步S135完成這一子程序。
在步S135,CPU1檢查在步S109和步S126被完全解調(diào)的數(shù)據(jù)是否包括開始保護(hù)條和3個或更多的字符。如果是,則要被處理的條寬數(shù)據(jù)組可被確定為至少通過“分割讀取”獲得的條寬數(shù)據(jù)組,并且因而在步S137,CPU1設(shè)置“完成解調(diào)標(biāo)記”而終止這一子程序。與此相反,如果不是,則數(shù)據(jù)的可利用性就比較低,因而CPU1在步S136復(fù)位“完成解調(diào)標(biāo)記”,并結(jié)束這一子程序。
在另一方面,在步S001當(dāng)判斷條寬數(shù)據(jù)組不包括開始保護(hù)條時,便不可能通過“連續(xù)讀取”而獲得條寬數(shù)據(jù)組,因而CPU1前進(jìn)到步S138。在步S138,CPU1檢查要被處理的條寬數(shù)據(jù)組是否通過中心條。如果是,則CPU1就前進(jìn)到步S139。步S139-S169涉及用于盡可能以中心條為中心點(diǎn)沿雙向解調(diào)字符的處理。
在步S139,CPU1檢查第6,7個字符的長度。如果兩者的長度不在固定值附近(S140),CPU1則認(rèn)為要被處理的條寬數(shù)據(jù)組是基于不同于條形碼的圖形的數(shù)據(jù)組。在這種情況下,CPU1在步S136復(fù)位“完成解調(diào)標(biāo)記”,并終止這一子程序。與此相反,如果第6,7個字符的任何一個的長度在固定值附近(S140),則CPU1前進(jìn)到步S141。
在步S141,CPU1檢查在朝向終止保護(hù)條一側(cè)的相鄰字符(在初始狀態(tài)下的第7個字符)的長度。如果其長度不在固定值附近(S142),CPU1則前進(jìn)到步S146,解調(diào)其長度至今已被確定為在固定值附近的在第二數(shù)據(jù)塊中的字符。與此相反,如果該字符的長度在固定值附近(S142),則CPU1在步S143檢查字符的失真量是否大。如果不是,則CPU1直接前進(jìn)到步S145。如果字符的失真量大,則CPU1在步S144設(shè)置“失真狀態(tài)標(biāo)記”之后前進(jìn)到步S145。在步S145,CPU1檢查形成第二數(shù)據(jù)塊的6個字符長度的檢查是否都已完成。如果是,CPU1則前進(jìn)到步S146,解調(diào)這6個字符。而如果不是,則CPU1返回步S141,檢查相鄰的下一個字符的長度。
在步S146,CPU1從在步S142被確定為其長度在固定值附近的字符當(dāng)中取出最接近中心條的字符,并執(zhí)行對取出字符的解調(diào)處理,和S109類似。在下一步S147,CPU1檢查在步S146進(jìn)行的解調(diào)處理是否完成。如果沒有完成,則CPU1直接前進(jìn)到步S151,如果已完成,則CPU1前進(jìn)到步S148。在步S148,CPU1檢查字符的失真量是否大。如果不大,則CPU1直接前進(jìn)到步S150。而如果大,則CPU1在步S149設(shè)置“失真狀態(tài)標(biāo)記”,并前進(jìn)到S150。在步S150,CPU1檢查是否完成相應(yīng)于其長度被在步S142的字符長度檢查中確定為在固定值附近的所有字符數(shù)的解調(diào)處理。如果沒有完成,則CPU1返回步S146對下一個相鄰字符執(zhí)行解調(diào)處理。與此相反,如果已完成。則CPU1前進(jìn)到步S151。
在步151,CPU1檢查已經(jīng)被步S146中的解調(diào)處理解調(diào)的字符數(shù)是否是6個。如果小于6個,則CPU1前進(jìn)到步S154,解調(diào)包括在第一數(shù)據(jù)塊中的字符,與此相反,如果已被解調(diào)的字符數(shù)是6個,CPU1就前進(jìn)到步S152。
在步S152,CPU1再次檢查第12個字符的長度,并檢查終止保護(hù)條。接著,在任何情況下(S153),CPU1都前進(jìn)到步S154,解調(diào)包括在第一數(shù)據(jù)塊中的字符。
在步S154,CPU1檢查朝向開始保護(hù)條一側(cè)的相鄰字符(在初始狀態(tài)下的第6個字符)的長度。如果其長度不在固定值附近(S155),CPU1則前進(jìn)到步S159,解調(diào)其長度至今已被確定為在固定值附近的在第一數(shù)據(jù)塊中的字符。與此相反,如果該字符的長度在固定值附近(S155),則CPU1在步S156檢查字符的失真量是否大。如果不是,則CPU1直接前進(jìn)到步S158。如果字符的失真量大,則CPU1在步S157設(shè)置“失真狀態(tài)標(biāo)記”之后前進(jìn)到步S158。在步S158,CPU1檢查形成第一數(shù)據(jù)塊的6個字符長度的檢查是否都已完成。如果是,CPU1則前進(jìn)到步S159,解調(diào)這6個字符。而如果不是,則CPU1返回步S154,檢查相鄰的下一個字符的長度。
在步S159,CPU1從在步S155被確定為其長度在固定值附近的字符當(dāng)中取出最接近中心條的字符,并執(zhí)行對取出字符的解調(diào)處理。在下一步S160,CPU1檢查在步S159進(jìn)行的解調(diào)處理是否完成。如果沒有完成,則CPU1直接前進(jìn)到步S164,如果已完成,則CPU1前進(jìn)到步S161。在步S161,CPU1檢查字符的失真量是否大。如果不大,則CPU1直接前進(jìn)到步S163。而如果大,則CPU1在步S162設(shè)置“失真狀態(tài)標(biāo)記”,并然后前進(jìn)到S163。在步S163,CPU1檢查是否完成相應(yīng)于其長度被在步S155的字符長度檢查中確定為在固定值附近的所有字符數(shù)的解調(diào)處理。如果沒有完成,則CPU1返回步S159對下一個相鄰字符執(zhí)行解調(diào)處理。與此相反,如果已完成。則CPU1前進(jìn)到步S164。
在步164,CPU1檢查已經(jīng)被步S159中的解調(diào)處理解調(diào)的字符數(shù)是否是6個。如果是6個,則CPU1前進(jìn)到步S169,如果小于6個,則CPU1前進(jìn)到步S165。
在步S165,CPU1檢查第1個字符的長度。如果第1個字符的長度不在固定值附近(這出現(xiàn)在第1個字符被丟失的情況下)(S166),則CPU1前進(jìn)到步S169。與此相反,如果第1個字符的長度在固定值附近(S166),則CPU1在步S167檢查開始保護(hù)條。然后,如果檢測到開始保護(hù)條(S168),則CPU1確定這和在步S101中作出的決定矛盾,因而在步S136復(fù)位“解調(diào)完成標(biāo)記”,因而結(jié)束這一子程序。與此相反,如果如果沒有檢測到開始保護(hù)條(S168),則CPU1前進(jìn)到步S169的處理。
在步S169,CPU1檢查完全解調(diào)的數(shù)據(jù)組是否具有這種結(jié)構(gòu),即字符和中心條的兩側(cè)連續(xù)地連接著。如果是,則在步S137CPU1設(shè)置“解調(diào)完成標(biāo)記”,因而結(jié)束這一子程序。與此相反,如果不是,這意味著是一種很少發(fā)生的情況,因而數(shù)據(jù)的可靠性低。因此,CPU1在步S136復(fù)位“解調(diào)完成標(biāo)記”,并結(jié)束這一子程序。
在另一方面,在步S138當(dāng)判斷條寬數(shù)據(jù)組不包括中心條時,便不能通過“塊讀取”而獲得要被處理的條寬數(shù)據(jù)組,因而CPU1前進(jìn)到步S170。在步S170,CPU1檢查要被處理的條寬數(shù)據(jù)組是否通過終止保護(hù)條。如果是,則條寬數(shù)據(jù)組被認(rèn)為是基于不同于條形碼圖形的,在這種情況下,CPU1在步S136復(fù)位“解調(diào)完成標(biāo)記”,并結(jié)束這一子程序。與此相反,如果條寬數(shù)據(jù)組通過終止保護(hù)條,CPU1就前進(jìn)到步S171。步S171-S187涉及用于盡可能以終止保護(hù)條為起點(diǎn)沿朝向中心條的方向進(jìn)行解調(diào)字符的處理。
在步S171,CPU1檢查第12個字符的長度。如果其長度不在固定值附近(S172),CPU1則認(rèn)為條寬數(shù)據(jù)組是基于不同于條形碼的圖形的數(shù)據(jù)組。在這種情況下,CPU1在步S136復(fù)位“完成解調(diào)標(biāo)記”,并終止這一子程序。與此相反,如果第12個字符的長度在固定值附近(S172),則CPU1前進(jìn)到步S173。
在步S173,CPU1檢查在朝向中心條一側(cè)的相鄰字符(在初始狀態(tài)下的第11個字符)的長度。如果其長度不在固定值附近(S174),CPU1則前進(jìn)到步S178,解調(diào)其長度至今已被確定為在固定值附近的在第二數(shù)據(jù)塊中的字符。與此相反,如果該字符的長度在固定值附近(S174),則CPU1在步S175檢查字符的失真量是否大。如果不是,則CPU1直接前進(jìn)到步S177。如果字符的失真量大,則CPU1在步S144設(shè)置“失真狀態(tài)標(biāo)記”,之后前進(jìn)到步S177。在步S177,CPU1檢查形成第二數(shù)據(jù)塊的6個字符長度的檢查是否都已完成。如果是,CPU1則前進(jìn)到步S178,解調(diào)這6個字符。而如果不是,則CPU1返回步S173,檢查相鄰的下一個字符的長度。
在步S178,CPU1從在步S172或S174被確定為其長度在固定值附近的字符當(dāng)中取出最接近終止保護(hù)條的字符,并執(zhí)行對取出字符的解調(diào)處理,在下一步S179,CPU1檢查在步S178進(jìn)行的解調(diào)處理是否完成。如果沒有完成,則CPU1直接前進(jìn)到步S183,如果已完成,則CPU1前進(jìn)到步S180。在步S180,CPU1檢查字符的失真量是否大。如果不大,則CPU1直接前進(jìn)到步S182。而如果大,則CPU1在步S181設(shè)置“失真狀態(tài)標(biāo)記”,并前進(jìn)到S182。在步S182,CPU1檢查是否完成相應(yīng)于其長度被在步S172或S174的字符長度檢查中確定為在固定值附近的所有字符數(shù)的解調(diào)處理。如果沒有完成,則CPU1返回步S178對下一個相鄰字符執(zhí)行解調(diào)處理。與此相反,如果已完成。則CPU1前進(jìn)到步S183。
在步S183,CPU1檢查第7個字符的長度。如果第7個字符的長度不在固定值附近(這出現(xiàn)在第7個字符被丟失的情況下)(S184),則CPU1前進(jìn)到步S187。與此相反,如果第7個字符的長度在固定值附近(S184),則CPU1在步S185檢查中心條和第6個字符的長度。然后,如果檢測到中心條或者第6個字符的長度在固定值附近(S186),則CPU1確定這和在步S138中作出的決定矛盾,因而在步S136復(fù)位“解調(diào)完成標(biāo)記”,因而結(jié)束這一子程序。與此相反,如果如果沒有檢測到中心條(S186),則CPU1前進(jìn)到步S187的處理。
在步S187,CPU1檢查在步S178完全解調(diào)的數(shù)據(jù)是否包括終止保護(hù)條和3個或更多的字符,如果是,則要被處理的條寬數(shù)據(jù)組可被確定為是至少通過“分割讀取”而獲得的條寬數(shù)據(jù)組,因而在步S137CPU1設(shè)置“解調(diào)完成標(biāo)記”,因而結(jié)束這一子程序。與此相反,如果不是,則數(shù)據(jù)的可靠性相當(dāng)?shù)?。因此,CPU1在步S136復(fù)位“解調(diào)完成標(biāo)記”,并結(jié)束這一子程序。
在完成數(shù)據(jù)解調(diào)處理之后,CPU1返回圖2的主程序,并在步S003檢查是否設(shè)置有“解調(diào)完成標(biāo)記”。這“解調(diào)完成標(biāo)記”表示條寬數(shù)據(jù)組已被步S002的數(shù)據(jù)解調(diào)處理完成解調(diào)。如果“解調(diào)完成標(biāo)記”沒有設(shè)置,則CPU1放棄此時要被處理的條寬數(shù)據(jù)組,并返回步S001,以便執(zhí)行關(guān)于從條寬數(shù)據(jù)組存儲緩沖器2中新取出的條寬數(shù)據(jù)組的解調(diào)處理。
而如果設(shè)置有“解調(diào)完成標(biāo)記”,則CPU1在步S004檢查由步S002的數(shù)據(jù)解調(diào)處理獲得的解調(diào)數(shù)據(jù)是否包含相應(yīng)于整個左數(shù)據(jù)塊的區(qū)域(含有開始保護(hù)條和中心條)。如果是,則CPU1前進(jìn)到步S005。
在步S005,CPU1檢查在步S002的數(shù)據(jù)解調(diào)處理中獲得的解調(diào)數(shù)據(jù)是否相應(yīng)于上級條形碼或下級條形碼。當(dāng)相應(yīng)于上級條形碼時,則前進(jìn)到步S006。
在步S006,CPU1把在步S002的數(shù)據(jù)解調(diào)處理中獲得的解調(diào)數(shù)據(jù)存儲在Ig-up緩沖器6b(第一緩沖器)中。
在下一步S007,CPU1根據(jù)中心條(CB)合成在Ig-up緩沖器6b中存儲的解調(diào)數(shù)據(jù)和在右數(shù)據(jù)塊暫存緩沖器6a中存儲的解調(diào)數(shù)據(jù)(這相應(yīng)于第一合成單元)。注意,要被合成的解調(diào)數(shù)據(jù)的各個組必須彼此重疊(一致)兩個或多個字符,以便實(shí)現(xiàn)這種合成。
在下一步S008,CPU1執(zhí)行關(guān)于在步S007中合成的解調(diào)數(shù)據(jù)的上述的模數(shù)10檢查(在計(jì)算標(biāo)記字符之后),并因而判斷是否獲得了相應(yīng)于整個上級條形碼的解調(diào)數(shù)據(jù)。然后,如果得到模數(shù)10檢查的好的結(jié)果(如果得到相應(yīng)于整個上級條形碼的解調(diào)數(shù)據(jù)),則CPU1在步S009把這樣合成的解調(diào)數(shù)據(jù)存儲在M10-buff-up緩沖器6d中,并前進(jìn)到步S023。然而如果沒有得到模數(shù)10檢查的好的結(jié)果(如果沒有得到相應(yīng)于整個上級條形碼的解調(diào)數(shù)據(jù)),則CPU1直接前進(jìn)到步S023。
在另一方面,當(dāng)CPU1在步S005判斷由步S002的解調(diào)處理獲得的解調(diào)數(shù)據(jù)相應(yīng)于下級條形碼時,則把在步S002的數(shù)據(jù)解調(diào)處理中獲得的解調(diào)數(shù)據(jù)存儲在Ig-down緩沖器6c(第二緩沖器)中。
在下一步S011,CPU1根據(jù)中心條(CB)合成在Ig-down緩沖器6c中存儲的解調(diào)數(shù)據(jù)和在右數(shù)據(jù)塊暫存緩沖器6a中存儲的解調(diào)數(shù)據(jù)(這相應(yīng)于第二合成單元)。注意,要被合成的解調(diào)數(shù)據(jù)的各個組必須彼此重疊(一致)兩個或多個字符,以便實(shí)現(xiàn)這種合成。
在下一步S012,CPU1執(zhí)行關(guān)于在步S011中合成的解調(diào)數(shù)據(jù)的上述的模數(shù)10檢查(在計(jì)算標(biāo)記字符之后),并因而判斷是否獲得了相應(yīng)于整個下級條形碼的解調(diào)數(shù)據(jù)。然后,如果得到模數(shù)10檢查的好的結(jié)果(如果得到相應(yīng)于整個下級條形碼的解調(diào)數(shù)據(jù)),則CPU1在步S013把這樣合成的解調(diào)數(shù)據(jù)存儲在M10-buff-down緩沖器6e中,并前進(jìn)到步S023。然而如果沒有得到模數(shù)10檢查的好的結(jié)果(如果沒有得到相應(yīng)于整個下級條形碼的解調(diào)數(shù)據(jù)),則CPU1直接前進(jìn)到步S023。
在另一方面,當(dāng)CPU1在步S004判斷由步S002的解調(diào)處理獲得的解調(diào)數(shù)據(jù)不包括相應(yīng)于整個左數(shù)據(jù)塊的解調(diào)數(shù)據(jù)時,則在步S014把這解調(diào)數(shù)據(jù)存儲在右數(shù)據(jù)塊暫存緩沖器6a(第三緩沖器)中。
接著的步S015-S018的處理是嘗試合成存儲在右數(shù)據(jù)塊暫存緩沖器6a中的解調(diào)數(shù)據(jù)和存儲在Ig-up緩沖器6b中的解調(diào)數(shù)據(jù)的處理。步S019-S022的處理是嘗試合成存儲在右數(shù)據(jù)塊暫存緩沖器6a中的解調(diào)數(shù)據(jù)和存儲在Ig-down緩沖器6c中的解調(diào)數(shù)據(jù)的處理。如上所述,按順序試探合成儲在右數(shù)據(jù)塊暫存緩沖器6a中的解調(diào)數(shù)據(jù)和存儲在上下級的左數(shù)據(jù)塊中的中的解調(diào)數(shù)據(jù)的理由在于在右數(shù)據(jù)塊中的解調(diào)數(shù)據(jù)不包括用于在上級和下級之間進(jìn)行識別的識別信息。
在步S015,CPU1檢查解調(diào)數(shù)據(jù)是否被存儲在M10-buff-up緩沖器6d中。如果是,則CPU1直接前進(jìn)到步S019。
然而如果在M10-buff-up緩沖器6d中沒有存儲解調(diào)數(shù)據(jù),則CPU1在步S016根據(jù)中心條(CB)合成在右數(shù)據(jù)塊暫存緩沖器6a中存儲的解調(diào)數(shù)據(jù)和在M10-buff-up緩沖器6d中存儲的解調(diào)數(shù)據(jù)(這相應(yīng)于第一合成單元)。注意,要被合成的解調(diào)數(shù)據(jù)的各個組必須彼此重疊(一致)兩個或多個字符,以便實(shí)現(xiàn)這種合成。
在下一步S017,CPU1執(zhí)行關(guān)于在步S016中合成的解調(diào)數(shù)據(jù)的上述的模數(shù)10檢查(在計(jì)算標(biāo)記字符之后),并因而判斷是否獲得了相應(yīng)于整個上級條形碼的解調(diào)數(shù)據(jù)。然后,如果得到模數(shù)10檢查的好的結(jié)果(如果得到相應(yīng)于整個上級條形碼的解調(diào)數(shù)據(jù)),則CPU1在步S018把在步S016合成的解調(diào)數(shù)據(jù)存儲在M10-buff-up緩沖器6d中,并前進(jìn)到步S019。然而如果沒有得到模數(shù)10檢查的好的結(jié)果(如果沒有得到相應(yīng)于整個上級條形碼的解調(diào)數(shù)據(jù)),則CPU1直接前進(jìn)到步S019。
在步S019,CPU1檢查解調(diào)數(shù)據(jù)是否被存儲在M10-buff-down緩沖器6e中。如果是,則CPU1直接前進(jìn)到步S023。
然而如果在M10-buff-down緩沖器6e中沒有存儲解調(diào)數(shù)據(jù),則CPU1在步S020根據(jù)中心條(CB)合成在右數(shù)據(jù)塊暫存緩沖器6a中存儲的解調(diào)數(shù)據(jù)和在M10-buff-down緩沖器6e中存儲的解調(diào)數(shù)據(jù)(這相應(yīng)于第二合成單元)。注意,要被合成的解調(diào)數(shù)據(jù)的各個組必須彼此重疊(一致)兩個或多個字符,以便實(shí)現(xiàn)這種合成。
在下一步S021,CPU1執(zhí)行關(guān)于在步S020中合成的解調(diào)數(shù)據(jù)的上述的模數(shù)10檢查(在計(jì)算標(biāo)記字符之后),并因而判斷是否獲得了相應(yīng)于整個下級條形碼的解調(diào)數(shù)據(jù)。然后,如果得到模數(shù)10檢查的好的結(jié)果(如果得到相應(yīng)于整個下級條形碼的解調(diào)數(shù)據(jù)),則CPU1在步S022把在步S020合成的解調(diào)數(shù)據(jù)存儲在M10-buff-down緩沖器6e中,然后前進(jìn)到步S023。然而如果沒有得到模數(shù)10檢查的好的結(jié)果(如果沒有得到相應(yīng)于整個下級條形碼的解調(diào)數(shù)據(jù)),則CPU1直接前進(jìn)到步S023。
在步S023,CPU1檢查解調(diào)數(shù)據(jù)是否被存儲在M10-buff-down緩沖器6e中。如果在M10-buff-up緩沖器6d中和M10-buff-down緩沖器6e中都沒有存儲解調(diào)數(shù)據(jù),則CPU1判斷表示模數(shù)10檢查的好的結(jié)果的的解調(diào)數(shù)據(jù)(模數(shù)10 OK數(shù)據(jù))尚未準(zhǔn)備好,并返回步S001。然而如果在M10-buff-up緩沖器6d中和M10-buff-down緩沖器6e中都存儲有解調(diào)數(shù)據(jù),則CPU1判斷表示模數(shù)10檢查的好的結(jié)果的的解調(diào)數(shù)據(jù)(模數(shù)10 OK數(shù)據(jù))已經(jīng)準(zhǔn)備好,并前進(jìn)到步S024。
在步S024,CPU1檢查存儲在M10-buff-up緩沖器6d和M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)的識別標(biāo)記。如果存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)的識別標(biāo)記和表示上級的預(yù)定值“21”不一致,或者如果存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)的識別標(biāo)記和表示下級的預(yù)定值“29”不一致,則CPU1從步S025前進(jìn)到步S040以便執(zhí)行判斷NG的處理。然而如果存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)的識別標(biāo)記和表示上級的預(yù)定值“21”一致,或者如果存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)的識別標(biāo)記和表示下級的預(yù)定值“29”一致,則CPU1從步S025前進(jìn)到步S026。
在步S026,CPU1檢查存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)和存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)是否都是是基于連續(xù)讀取處理的解調(diào)數(shù)據(jù)。這檢查根據(jù)存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)是否和存儲在Ig-up緩沖器6b中的解調(diào)數(shù)據(jù)相同以及存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)是否和存儲在Ig-down緩沖器6c中的解調(diào)數(shù)據(jù)相同。然后,如果存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)和存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)都是基于連續(xù)讀取處理的解調(diào)數(shù)據(jù),則CPU1前進(jìn)到步S039,執(zhí)行判斷OK的處理。與此相反,如果其中一個解調(diào)數(shù)據(jù)組不是基于連續(xù)讀取處理的,則CPU1前進(jìn)到步S027。
在步S027,CPU1檢查存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)和存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)是否都是是基于塊讀取處理的解調(diào)數(shù)據(jù)。然后,如果存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)或存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)不是基于塊讀取處理的解調(diào)數(shù)據(jù)(即如果和基于分割讀取處理的解調(diào)數(shù)據(jù)相同),則CPU1前進(jìn)到步S040,執(zhí)行判斷NG的處理。然而,如果這兩組解調(diào)數(shù)據(jù)組都是基于塊讀取處理的,則CPU1前進(jìn)到步S028。
在步S028,CPU1比較存儲在M10-buff-up緩沖器6d中的解調(diào)數(shù)據(jù)的右數(shù)據(jù)塊和存儲在Ig-up緩沖器6b中的解調(diào)數(shù)據(jù)的右數(shù)據(jù)塊。
在下一步S029,CPU1根據(jù)在步S028比較的結(jié)果,計(jì)算在兩個解調(diào)數(shù)據(jù)的右數(shù)據(jù)塊中相同的字符數(shù)。這相同的字符數(shù)相當(dāng)于相應(yīng)于存儲在Ig-up緩沖器6b中的解調(diào)數(shù)據(jù)包含的的右數(shù)據(jù)塊的數(shù)值數(shù)據(jù)的數(shù)。然后,CPU1把計(jì)算的數(shù)代入變量“往上計(jì)數(shù)”。
在步S030,CPU1比較存儲在M10-buff-down緩沖器6e中的解調(diào)數(shù)據(jù)的右數(shù)據(jù)塊和存儲在Ig-down緩沖器6c中的解調(diào)數(shù)據(jù)的右數(shù)據(jù)塊。
在下一步S031,CPU1根據(jù)在步S030比較的結(jié)果,計(jì)算在兩個解調(diào)數(shù)據(jù)的右數(shù)據(jù)塊中相同的字符數(shù)。這相同的字符數(shù)相當(dāng)于相應(yīng)于存儲在Ig-down緩沖器6c中的解調(diào)數(shù)據(jù)包含的右數(shù)據(jù)塊的數(shù)值數(shù)據(jù)的數(shù)。然后,CPU1把計(jì)算的數(shù)代入變量“往下計(jì)數(shù)”。
在下一步S032,CPU1檢查變量“往上計(jì)數(shù)”和變量“往下計(jì)數(shù)”是否超過“2”。然后如果這些變量中有一個小于2,則認(rèn)為不能保證可以精確地再現(xiàn)相應(yīng)于每級的整個條形碼的解調(diào)數(shù)據(jù),因此,處理進(jìn)行步S040。然而如果兩個變量都大于2,CPU1就前進(jìn)到步S033。
在步S033,CPU1設(shè)置指針(a)為“6”,它指示在Ig-up緩沖器6b和Ig-down緩沖器6c中的地址。
接著,CPU1進(jìn)入步S034-S038的循環(huán)。這處理循環(huán)用于確認(rèn)存儲在Ig-up緩沖器6b中的解調(diào)數(shù)據(jù)不同于右數(shù)據(jù)塊中的存儲在Ig-down緩沖器6c中的解調(diào)數(shù)據(jù)。
在進(jìn)入這一循環(huán)處理之后的第一步S034中,CPU1檢查變量“往上計(jì)數(shù)”和變量“往下計(jì)數(shù)”是否達(dá)到“0”。
在下一步S035,CPU1比較存儲在Ig-up緩沖器6b的地址“a”的項(xiàng)中的數(shù)值數(shù)據(jù)和存儲在M10-buff-down緩沖器6e的地址“a”的項(xiàng)中的數(shù)值數(shù)據(jù)。
在下一步S036,CPU1根據(jù)在步S035比較的結(jié)果檢查兩組數(shù)值數(shù)據(jù)是否彼此一致。如果是,CPU1則在步S037使指針(a)增加“1”。
在步S037使變量“往上計(jì)數(shù)”和變量“往下計(jì)數(shù)”增加1之后,CPU1返回步S034。
作為重復(fù)上述循環(huán)處理的結(jié)果,CPU1當(dāng)判定變量“往上計(jì)數(shù)”或變量“往下計(jì)數(shù)”達(dá)到“0”時,在步S036判定數(shù)值數(shù)據(jù)彼此不同之前,便前進(jìn)到步S040。即當(dāng)只根據(jù)由讀取上下級之一的一個右數(shù)據(jù)塊獲得的解調(diào)數(shù)據(jù)而使上下級被合成時,CPU1不能識別這一事實(shí)。類似地,如果在Ig-up緩沖器6b或Ig-down緩沖器6c中存儲的解調(diào)數(shù)據(jù)的范圍之外兩個條形碼不同,并且即使如果在Ig-up緩沖器6b中存儲的解調(diào)數(shù)據(jù)和相應(yīng)于下級條形碼的右數(shù)據(jù)塊的解調(diào)數(shù)據(jù)合成,進(jìn)一步即使如果在Ig-down緩沖器6c中存儲的解調(diào)數(shù)據(jù)和相應(yīng)于上級條形碼的左數(shù)據(jù)塊的解調(diào)數(shù)據(jù)合成,CPU1也不能識別這一事實(shí)。這樣,當(dāng)變量“往上計(jì)數(shù)”或變量“往下計(jì)數(shù)”達(dá)到“0”時,則不能保證可以精確地再現(xiàn)相應(yīng)于上下級條形碼的解調(diào)數(shù)據(jù),因而CPU1前進(jìn)到步S040執(zhí)行判斷NG的處理。
與此相反,當(dāng)在步S036判定存儲在Ig-up緩沖器6b的地址“a”的項(xiàng)中的數(shù)值數(shù)據(jù)和存儲在M10-buff-down緩沖器6e的地址“a”的項(xiàng)中的數(shù)值數(shù)據(jù)不同時,CPU1則前進(jìn)到步S039執(zhí)行判斷OK的處理。
在步S039執(zhí)行的判斷OK處理中,CPU1從揚(yáng)聲器10輸出表示讀取(解調(diào))條形碼完成的聲音,并通過組合相應(yīng)于存儲在M10-buff-up緩沖器6d中的上條形碼的解調(diào)數(shù)據(jù)和相應(yīng)于存儲在M10-buff-down緩沖器6e中的下級條形碼的解調(diào)數(shù)據(jù),再現(xiàn)相應(yīng)于整個兩列條形碼21的解調(diào)數(shù)據(jù)。CPU1通過發(fā)光二極管11顯示例如相應(yīng)于這樣再現(xiàn)的解調(diào)數(shù)據(jù)的商品20的銷售價(jià)格信息。此外,CPU1清除在RAM6中形成的各個緩沖器6a-6e的所有內(nèi)容,準(zhǔn)備下一個條形碼讀取處理。在完成判斷OK處理時,CPU1返回步S001。
此外,在步S040執(zhí)行的判斷NG處理中,CPU1在清除在RAM6中形成的各個緩沖器6a-6e的所有內(nèi)容之后,返回步S001。
下面參照圖9說明按照本實(shí)施例構(gòu)成的條形碼讀取器的操作。假定兩列條形碼21的各個塊通過沿圖9所示的路徑(1)-(4)被光束掃描而讀取。在這種情況下,如果兩列條形碼的第7,8個字符C7,C8彼此相同,按照路徑(1)的解調(diào)數(shù)據(jù)(存儲在Ig-up緩沖器6b中)可以和按照路徑(2)的解調(diào)數(shù)據(jù)(存儲在右數(shù)據(jù)塊暫存緩沖器6a中)以及按照路徑(4)的解調(diào)數(shù)據(jù)(存儲在右數(shù)據(jù)塊暫存緩沖器6a中)合成。類似地,按照路徑(3)的解調(diào)數(shù)據(jù)(存儲在Ig-down緩沖器6c中)可以和按照路徑(2)的解調(diào)數(shù)據(jù)以及按照路徑(4)的解調(diào)數(shù)據(jù)合成。因而,在這種情況下,不能保證再現(xiàn)相應(yīng)于每級的整個條形碼的解調(diào)數(shù)據(jù),因而,只有當(dāng)證實(shí)存儲在Ig-up緩沖器6b中的解調(diào)數(shù)據(jù)和存儲在Ig-down緩沖器6c中的解調(diào)數(shù)據(jù)的第8個字符C8彼此相同時(只有在步S035判定第8個字符C8彼此相同之后,當(dāng)證實(shí)在步S034兩個變量“往上計(jì)數(shù)”和“往下計(jì)數(shù)”達(dá)到“0”時),CPU1執(zhí)行判斷NG的處理(S040)。
此外,如果兩個條形碼的第7個字符C7或第8個字符C8彼此不同,則按照路徑(1)的解調(diào)數(shù)據(jù)只能和按照路徑(2)的解調(diào)數(shù)據(jù)合成,并且按照路徑(3)的解調(diào)數(shù)據(jù)只能和按照路徑(4)的解調(diào)數(shù)據(jù)合成。因而,在這種情況下,能夠保證再現(xiàn)相應(yīng)于每級的整個條形碼的解調(diào)數(shù)據(jù),因而,只有當(dāng)證實(shí)存儲在Ig-up緩沖器6b中的解調(diào)數(shù)據(jù)和存儲在Ig-down緩沖器6c中的解調(diào)數(shù)據(jù)的的第7個字符C7彼此不同時,或只有證實(shí)第8個字符C8彼此不同時(只有在步S035判定這些字符彼此不同時),CPU1才執(zhí)行判斷OK的處理(S039)。
注意,如果路徑(1)在中心條(CB)不連續(xù),則按照路徑(1)的解調(diào)數(shù)據(jù)可以和按照路徑(2)的解調(diào)數(shù)據(jù)以及按照路徑(4)的解調(diào)數(shù)據(jù)合成。類似地,如果路徑(3)在中心條(CB)不連續(xù),則按照路徑(2)的解調(diào)數(shù)據(jù)可以和按照路徑(3)的解調(diào)數(shù)據(jù)以及按照路徑(4)的解調(diào)數(shù)據(jù)合成。因而,在這種情況下,不能保證再現(xiàn)相應(yīng)于每級的整個條形碼的解調(diào)數(shù)據(jù),因而,CPU1立即執(zhí)行判斷NG的處理(只有在步S032證實(shí)兩個變量“往上計(jì)數(shù)”和“往下計(jì)數(shù)”的初始值小于“2”時)(S040)。
此外,當(dāng)路徑(1)和路徑(3)已經(jīng)達(dá)到終止保護(hù)條(EGB)時,則按照路徑(1)的解調(diào)數(shù)據(jù)和按照路徑(3)的解調(diào)數(shù)據(jù)是相應(yīng)于按照連續(xù)讀取處理的解調(diào)數(shù)據(jù),則必然有模數(shù)10檢查的好的結(jié)果。因而CPU1不比較上下條形碼(步S026,S039)便立即執(zhí)行判斷OK處理。
如上所述,按照本實(shí)施例的條形碼讀取器,由讀取通過在兩列中上下排列WPC碼而構(gòu)成的兩列條形碼中每級的每個數(shù)據(jù)塊而獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于右數(shù)據(jù)塊的并且彼此不同的數(shù)據(jù)字符的數(shù)據(jù),相應(yīng)于各級的整個條形碼的通過合成相應(yīng)于每級的左數(shù)據(jù)塊的解調(diào)數(shù)據(jù)和相應(yīng)于右數(shù)據(jù)塊的解調(diào)數(shù)據(jù)而獲得的解調(diào)數(shù)據(jù)已被證實(shí)。因而,兩列條形碼的塊讀可在固定的約束下被識別,從而防止誤讀,并因此和只能進(jìn)行連續(xù)讀取識別的現(xiàn)有技術(shù)的條形碼讀取器相比,相應(yīng)于整個兩列條形碼的解調(diào)數(shù)據(jù)可以好的響應(yīng)被再現(xiàn)。即如圖13所示,能夠塊讀的掃描光束的角β大于能夠連續(xù)讀取的掃描光束的角α,因而可讀性較高。因此在短的時間內(nèi)容易再現(xiàn)相應(yīng)于整個兩列條形碼的解調(diào)數(shù)據(jù)。
按照如上構(gòu)成的本發(fā)明的條形碼讀取器和條形碼讀取方法,可以精確地合成由塊讀兩列條形碼的每級的右數(shù)據(jù)塊而獲得的解調(diào)數(shù)據(jù)和由塊讀左數(shù)據(jù)塊而獲得的解調(diào)數(shù)據(jù)。因而,相應(yīng)于整個兩列條形碼的解調(diào)數(shù)據(jù)可以在短的時間內(nèi)被再現(xiàn)。
顯然,在本發(fā)明中,不脫離本發(fā)明的范圍和構(gòu)思,根據(jù)本發(fā)明可以得到寬范圍的不同的工作方式。除被所附權(quán)利要求限定之外,本發(fā)明不受特定工作方式所限制。
權(quán)利要求
1一種條形碼讀取器,包括條形碼圖形檢測單元,用于掃描由第一條形碼和第二條形碼構(gòu)成的兩列條形碼,所述每個條形碼包括第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述每個數(shù)據(jù)塊含有預(yù)定數(shù)量的數(shù)據(jù)字符,并檢測在掃描路徑上的條形碼圖形;解調(diào)單元,用于通過解調(diào)所述條形碼圖形檢測單元檢測的條形碼圖形而獲得解調(diào)數(shù)據(jù);第一緩沖器,用于當(dāng)由所述解調(diào)單元獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于第一條形碼的第一數(shù)據(jù)塊的部分時存儲解調(diào)數(shù)據(jù);第二緩沖器,用于當(dāng)由所述解調(diào)單元獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于第二條形碼的第一數(shù)據(jù)塊的部分時存儲解調(diào)數(shù)據(jù);第三緩沖器,用于當(dāng)由所述解調(diào)單元獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于第一條形碼或第二條形碼的第二數(shù)據(jù)塊的部分時存儲解調(diào)數(shù)據(jù);第一合成單元,用于合成存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第三緩沖器中的解調(diào)數(shù)據(jù);第二合成單元,用于合成存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第三緩沖器中的解調(diào)數(shù)據(jù);以及確認(rèn)單元,用于只有在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分以及相應(yīng)于兩個解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分彼此不同時,確認(rèn)由所述第一合成單元合成的解調(diào)數(shù)據(jù)作為相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)由所述第二合成單元合成的解調(diào)數(shù)據(jù)作為相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)。
2如權(quán)利要求1所述的條形碼讀取器,其中條形碼是WPC碼,UPC/A碼,JAN碼或EAN碼。
3如權(quán)利要求1所述的條形碼讀取器,其中所述第一合成單元只有在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第三緩沖器中的解調(diào)數(shù)據(jù)彼此重疊兩個或多個字符時才合成解調(diào)數(shù)據(jù)的這些片,以及所述第二合成單元只有在存儲在所述二緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第三緩沖器中的解調(diào)數(shù)據(jù)彼此重疊兩個或多個字符時才合成解調(diào)數(shù)據(jù)的這些片。
4如權(quán)利要求1所述的條形碼讀取器,其中只有在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)和存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)含有相應(yīng)于兩個或多個第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分時,確認(rèn)單元才確認(rèn)由所述第一合成單元獲得的解調(diào)數(shù)據(jù)作為相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)由所述第二合成單元獲得的解調(diào)數(shù)據(jù)作為相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)。
5如權(quán)利要求1所述的條形碼讀取器,其中在存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)相應(yīng)于第一條形碼以及存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)相應(yīng)于第二條形碼時,確認(rèn)單元確認(rèn)存儲在所述第一緩沖器中的解調(diào)數(shù)據(jù)作為相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)存儲在所述第二緩沖器中的解調(diào)數(shù)據(jù)作為相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)。
6一種條形碼讀取方法,包括掃描包含第一條形碼和第二條形碼的兩列條形碼的步驟,所述條形碼的每一個含有第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述數(shù)據(jù)塊的每一個含有預(yù)定數(shù)量的數(shù)據(jù)字符,并檢測掃描路徑上的條形碼圖形;通過解調(diào)條形碼圖形而獲得解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第一條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的的第二數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第二條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的的第二數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟;以及只有在含有相應(yīng)于第一條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第二條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分以及相應(yīng)于兩個解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分彼此不同時,才確認(rèn)相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟。
7一種計(jì)算機(jī)可讀介質(zhì),其中存儲有用于和用于掃描含有第一條形碼和第二條形碼的兩列條形碼的檢測裝置相連的計(jì)算機(jī)的程序,所述每個條形碼含有第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述每個數(shù)據(jù)塊含有預(yù)定數(shù)量的數(shù)據(jù)字符,所述檢測裝置還用于檢測在掃描路徑上的條形碼圖形,所述程序使計(jì)算機(jī)執(zhí)行通過解調(diào)由所述檢測裝置檢測到的條形碼而獲得解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第一條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的第二數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù)的步驟;通過合成含有相應(yīng)于第二條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第一條形碼或第二條形碼的的第二數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)而產(chǎn)生相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟;以及只有在含有相應(yīng)于第一條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)和含有相應(yīng)于第二條形碼的第一數(shù)據(jù)塊的部分的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分以及相應(yīng)于兩個解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的數(shù)據(jù)字符的部分彼此不同時,才確認(rèn)相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù),并確認(rèn)相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟。
8一種讀取含有第一條形碼和第二條形碼的兩列條形碼的方法,所述每個條形碼含有第一數(shù)據(jù)塊和第二數(shù)據(jù)塊,所述方法包括通過解調(diào)在兩列條形碼中的條形碼圖形而獲得解調(diào)數(shù)據(jù)的步驟;只有在第一條形碼的第一數(shù)據(jù)塊中的解調(diào)數(shù)據(jù)和第二條形碼的第一數(shù)據(jù)塊中的解調(diào)數(shù)據(jù)兩者都含有相應(yīng)于第二數(shù)據(jù)塊的部分并且相應(yīng)于兩個解調(diào)數(shù)據(jù)的第二數(shù)據(jù)塊的部分彼此不同時,確認(rèn)相應(yīng)于第一條形碼的解調(diào)數(shù)據(jù)并確認(rèn)相應(yīng)于第二條形碼的解調(diào)數(shù)據(jù)的步驟。
全文摘要
一個CPU,其作為有效數(shù)據(jù)涉及通過合成由讀取上級的第一數(shù)據(jù)塊獲得的解調(diào)數(shù)據(jù)和通過讀取上級的第二數(shù)據(jù)塊獲得的解調(diào)數(shù)據(jù)而獲得的解調(diào)數(shù)據(jù),并涉及通過合成由讀取下級的第一數(shù)據(jù)塊獲得的解調(diào)數(shù)據(jù)和通過讀取下級的第二數(shù)據(jù)塊獲得的解調(diào)數(shù)據(jù)而獲得的解調(diào)數(shù)據(jù),其中通過讀取通過在兩列中上下設(shè)置WPC碼而構(gòu)成的兩列條形碼的上級的第一數(shù)據(jù)塊而獲得的解調(diào)數(shù)據(jù)和通過讀取下級的第一數(shù)據(jù)塊而獲得的解調(diào)數(shù)據(jù)含有相應(yīng)于第二數(shù)據(jù)塊的部分,并且解調(diào)數(shù)據(jù)的這些組是不同的。
文檔編號G06K7/10GK1208904SQ9810896
公開日1999年2月24日 申請日期1998年5月22日 優(yōu)先權(quán)日1997年8月19日
發(fā)明者渡邊光雄, 巖口功, 佐藤伸一, 川合弘晃, 伊藤元彥 申請人:富士通株式會社