專利名稱:對條形碼譯碼的方法和條形碼讀出器的制作方法
技術領域:
本發明涉及一種對條形碼進行譯碼的方法和條形碼讀出器。
許多商店和超級市場采用包括條形碼讀出器的POS(銷售點)系統。條形碼讀出器必須讀取印刷質量并非總是良好的條形碼。由于差的印刷質量,條形碼的某些條比標準寬度粗或者細,質地不勻或部分斷線。條形碼讀出器需要正確讀出如此低質的條形碼。
UPC條形碼由開始保護條、中間條和結束保護條組成。中間條將條形碼分為兩部分。在開始保護條與中間條之間的部分是左塊,在中間條與結束保護條之間的部分是右塊。左塊和右塊中的每一個都由六個字符組成,因此每個條形碼含有12個字符。條形碼讀出器的光敏元件響應于從條形碼的黑條反射的光提供代表“1”的電信號,響應于從條形碼的白條反射的光提供代表“0”的電信號。
條形碼的每個字符由兩個白條和兩個黑條組成,每個字符延伸七個基本單位(module)。每個基本單位是用于表達條形碼每條寬度的的單位。每個白條或黑條的寬度是整數個基本單位。
條形碼的每個字符根據字符的白條和黑條的寬度代表數字0至9中的一個。因為每個字符由七個基本單位組成,所以將字符分為兩組。在一組中,每個字符的兩個黑條的基本單位的總數是偶數的,在另一組中,是奇數的。于是,每個UPC條形碼能夠表達20個字符,即偶-0(E0)至偶-9(E9),每個包括偶數個黑基本單位,和奇-0(O0)至奇-9(O9),每個包括奇數個黑基本單位,如圖3所示。兩個字符組例如用于相互區分條形碼的左塊和右塊。
條形碼讀出器向條形碼發送掃描光束,并接收從條形碼反射的光束。條形碼讀出器對反射光束的強度與參考值進行比較,并提供代表1或0的電信號。條形碼讀出器的譯碼器根據電信號的電平(1或0)和持續時間將電信號譯碼為E0至E9和O0至O9中的一個。
條形碼的每條取決于印刷條件經常太細或太粗。條形碼讀出器不能檢測印刷條件,因此,如果條形碼讀出器直接讀條形碼每條的寬度則可能錯誤地讀出劣質印刷的條形碼。
為解決這個問題,有一種條形碼譯碼方法,它消除了當讀出條形碼時過粗或過細條的影響。該方法測量條形碼的相鄰兩對黑條和白條的的寬度T1和T2,如圖2所示。寬度T1和T2稱為Δ距離。在條形碼中能夠表達從E0至E9以及O0至O9的20個字符。另一方面,從兩個到五個基本單位有四個Δ距離,以提供T1和T2的16種組合。因此,E1至E7提供T1和T2的相同組合。類似地,E2至E8、O1至O7和O2至O8分別提供T1和T2的相同組合。對于這些字符,Δ距離T1和T2不足以使其相互區分。
然而,具有T1和T2相同組合的字符在各個條中具有不同數量的基本單位。因此,可以通過測量各對中的條來相互區別對E1和E7、對E2和E8、對O1和O7以及對O2和O8中任何一個的成員。
這里產生另一個問題,即各對中的每條也取決于印刷條件或粗或細。
于是,測量條的寬度不足以區分字符,例如具有具有相同Δ距離T1和T2的E1和E7。
這解決這個問題,有一種根據已經譯碼的字符的條寬度對將被譯碼的字符的條寬度進行校正的方法。
有另外一種方法,它設置條寬度的允許誤差范圍,確定每條是否位于該范圍之內,并且僅當條位于該范圍之內時,才對條形碼進行譯碼。
如果每條具有大的誤差,則擴大允許誤差范圍,以根據情況適當地對條形碼進行譯碼。
然而,這種方法是復雜的,不是最佳的。無法確定校正后的條寬度是否是正確的。如果校正后的條寬度是錯誤的,則條形碼讀出器將提供錯誤的結果。
最近的條形碼是緊湊、短小和簡單印刷的,要求條形碼讀出器正確地讀出這些條形碼。
本發明的一個目的是提供對條形碼進行譯碼的方法和能夠正確讀出需要寬度校正的條形碼的條形碼讀出器。
這實現上述目的,本發明提供一種根據從條形碼反射的光對條形碼進行譯碼的方法,包括步驟有檢測反射光中的條形碼數據,將條形碼數據存儲在存儲單元中,在第一方向上讀出條形碼數據并譯碼,在第二方向上讀出條形碼數據并譯碼,以及確定在第一方向和在第二方向上的譯碼結果是否彼此相同。
本發明還提供一種根據從條形碼反射的光對條形碼進行譯碼的方法,包括步驟有檢測反射光中的條形碼數據,將條形碼數據存儲在存儲單元中,在第一方向上讀出條形碼數據并譯碼,如果第一方向上的譯碼結果包括特殊數據則在第二方向上讀出條形碼數據并譯碼,以及確定在第一方向和在第二方向上的譯碼結果是否彼此相同。該特殊數據涉及在第一方向和第二方向的每個方向上在對字符進行譯碼之前根據在每個方向上已經譯碼的字符的條寬度其條寬度被校正的字符。
對兩個方向上的校正條寬度或譯碼結果相互比較,以確定它們是否彼此相同。如果它們彼此相同,則正確接受它們。如果它們互不相同,則它們之中的至少一個是錯誤的。
本發明還提供一種根據從條形碼反射的光對條形碼進行譯碼的方法,包括步驟有檢測反射光中的條形碼數據,將條形碼數據存儲在存儲單元中,在第一方向上讀出條形碼數據并譯碼,如果第一方向上的譯碼結果包括連續特殊數據則在第二方向上讀出條形碼數據并譯碼,以及確定在第一方向和在第二方向上的譯碼結果是否彼此相同。
該特殊數據涉及在第一方向和第二方向的每個方向上在對字符進行譯碼之前根據在每個方向上已經譯碼的字符的條寬度其條寬度被校正的字符。
本發明還提供一種根據從條形碼反射的光對條形碼進行譯碼的方法,包括步驟有檢測反射光中的條形碼的條寬度數據,將條寬度數據存儲在存儲單元中,在第一方向上讀出條寬度數據并將其譯碼為第一字符,并且確定在第一字符之前剛剛譯碼的第二字符的條寬度是否已經根據在第二字符之前剛剛譯碼的第三字符的條寬度被校正。如果第二字符的條寬度已經根據第三字符的條寬度被校正,則該方法根據第一字符的條寬度校正第二字符的條寬度,再次對第二字符進行譯碼,并且確定第二字符的兩個譯碼結果是否彼此相同。
通過以下參照附圖的描述,將更清楚地理解本發明。
圖1示出UPC條形碼的一個例子;圖2示出UPC條形碼的一個字符的例子;圖3示出UPC條形碼的字符O0至O9以及E0至E9;圖4示出正常條形碼、加粗條形碼和減細條形碼;圖5是示出Δ距離和相應字符的表;圖6是用于對UPC條形碼的字符1、2、7和8進行譯碼的表;圖7示出條寬度校正;圖8示出條形碼讀出器的一個例子;圖9是示出根據本發明一個實施方式的條形碼讀出器的框圖;圖10示出條形碼的譯碼方向;圖11是示出根據本發明第一個實施方式的條形碼譯碼程序的流程圖;圖12是示出根據本發明第二個實施方式的條形碼譯碼程序的流程圖;圖13示出兩個字符之間所夾的字符;圖14是示出根據本發明第三個實施方式的條形碼譯碼程序的流程圖;圖15是示出根據本發明第四個實施方式的條形碼譯碼程序的流程圖;圖16是示出根據本發明第五個實施方式的條形碼譯碼程序的流程圖。
為了更好地理解本發明的最佳實施方式,下面解釋現有技術中存在的問題。
圖1示出UPC條形碼的一個例子。條形碼具有開始保護條53、結束保護條54和中間條55。
在開始保護條53與中間條55之間的部分是左塊;在中間條55與結束保護條54之間的部分是右塊。
左塊和右塊中的每一個都由六個字符組成,因此每個條形碼含有12個字符。
圖2示出UPC條形碼的一個字符的例子。條形碼讀出器的光敏元件響應于從條形碼的黑條反射的光提供代表“1”的電信號,響應于從條形碼的白條反射的光提供代表“0”的電信號。
條形碼的每個字符由兩個白條和兩個黑條組成,每個字符的寬度是七個基本單位(module)。基本單位是用于表達條形碼每條寬度的的單位。每個白條或黑條的寬度是整數個基本單位。
開始保護條53包括兩個黑條和夾在兩個黑條之間的一個白條,每個條的寬度為一個基本單位。結束保護條54具有相同的結構。中間條55由三個白條和兩個黑條組成,每條的寬度為一個基本單位。這些條以白、黑、白、黑和白的次序排列。
條形碼的每個字符根據字符的白條和黑條的寬度代表數字0至9中的任何一個。因為每個字符由七個基本單位組成,所以將字符分為兩組。在一組中,每個字符的兩個黑條的基本單位的總數是偶數的,在另一組中,是奇數的。于是,一個UPC條形碼能夠表達20個字符,即偶-0(E0)至偶-9(E9),每個包括偶數個黑基本單位,和奇-0(O0)至奇-9(O9),每個包括奇數個黑基本單位,如圖3所示。兩個字符組例如用于相互區分條形碼的左塊和右塊。
在圖3中,右部分示出E0至E9,左部分示出O0至O9。這些數字的每一個的每一條由特定數的基本單位組成。
條形碼讀出器向條形碼發送掃描光束,并接收從條形碼反射的光束。條形碼讀出器對反射光束的強度與參考值進行比較,并提供代表1或0(圖2)的電信號。條形碼讀出器的譯碼器根據電信號的電平(1或0)和持續時間將電信號譯碼為E0至E9和O0至O9中的一個。
給定條形碼的圖3的E0至E9以及O0至O9中的任何一個根據從條形碼反射的光是可區分的,因為每個字符具有黑條和白條的不同結構。于是,條形碼中的每個字符得以譯碼。
通常條形碼中的條取決于印刷條件減細或加粗,如圖4所示。圖4示出兩個白條和一個黑條,每條由相同數目的基本單位組成。在圖4(1)中,條是正常印刷的。在圖4(2)中,黑條粗。在圖4(3)中,黑條細。
在圖4(1)中,白條B1和B3以及黑條B2是以正常寬度正確印刷的,因此,條形碼讀出器將正確地讀出這些條。
在圖4(2)中,黑條B2比正常寬度粗了“P0×2”。因此,每個白條B1和B2比正常寬度細相同的部分。在圖4(3)中,黑條B2比正常寬度細了“P1×2”,每個白條B1和B2比正常寬度粗相同的部分。
條形碼讀出器不能檢測印刷條件,因此,如果條形碼讀出器直接讀取條形碼每條的寬度,則可能不能正確地讀取具有圖4(2)和圖4(3)的未正確印刷的條的條形碼。
下面參照圖4解釋用于正確讀取具有減細的或加粗的條的條形碼的現有技術。
Δ距離T1是黑條B2與白條B1的總寬度,Δ距離T2是白條B3與黑條B2的總寬度。
現在參照圖4(2)解釋具有加粗黑條的條形碼的讀取。如果每條均勻地具有印刷誤差,與白條B1相鄰的黑條的粗部分P01大約等于黑條B2左側的粗部分P03,因此,P01和P03相互取消。于是,Δ距離T1大約等于正常黑條B2與正常白條B1的總和。黑條B2的粗部分P02永遠不會影響Δ距離T1。即,Δ距離T1實質上與粗部分無關。
類似地,Δ距離T2大約等于正常黑條B2與正常白條B3的總和,因為粗部分P02和P04相互取消。
在圖4(3)中,在Δ距離T1中的細部分P11和P13相互取消,在Δ距離T2中的細部分P12和P14相互取消。于是,Δ距離T1和T2與細部分無關。即,在圖4的(1)、(2)和(3)情況下Δ距離T1和T2實質上不變。現有技術使用這種Δ距離對給定條形碼進行譯碼。
圖3示出UPC條形碼的20個字符每個的Δ距離。每個字符由七個基本單位組成,每條的寬度是至少一個基本單位。這意味看每個Δ距離在2至5個基本單位的范圍內。圖5是示出20個字符即E0至E9以及O0至O9中每個的Δ距離T1和T2的表。為了對條形碼譯碼,測量條形碼每個字符的Δ距離T1和T2,并且根據圖5的表對字符進行譯碼。
如上所述,條形碼能夠表述E0至E9以及O0至O9這20個字符。另一方面,有四個Δ距離,在2至5個基本單位的范圍內,提供T1和T2的16種組合。因此,字符E1和E7具有相同的T1和T2組合。類似地,E2和E8、O1和O7以及O2和O8分別具有相同的T1和T2組合。于是,Δ距離T1和T2不足以相互區分這些對中每一對中的兩個字符。
然而,具有相同T1和T2組合的字符在各條中具有不同的基本單位。于是,通過測量對中的一條,能夠相互區分任何一對E1和E7、E2和E8、O1和O7以及O2和O8中的字符。
圖6示出用于標識這些對中每個字符的表。例如,具有都為3的相同Δ距離T1和T2的字符E2和E8根據圖6的表得以相互區分。
如果所檢測的Δ距離T1和T2都為3,則相應字符必然是E2或E8。于是,測量兩個黑條B1和B3(圖2)的寬度,并且參照圖6的表,選擇E2和E8中的一個。
如果字符是E2,則每個黑條B1和B3具有兩個基本單位。如果是E8,則每個黑條B1和B3具有一個基本單位。以這種方式,能夠標識具有相同Δ距離T1和T2的兩個字符中的任何一個。
然而,這種方法有問題。
為了相互區分具有相同Δ距離的兩個字符,需要測量特定條的寬度,即基本單位數。這些條取決于印刷條件自然被減細或加粗。例如,字符E2具有兩個黑條,每條具兩個基本單位的寬度。如果這些黑條由于差的印刷條件被減細一個基本單位,則條形碼讀出器可能將該字符讀為E8。
以這種方式,當相互區分具有相同Δ距離的兩個字符時,不能夠消除印刷誤差的影響。
為解決這個問題,另一方法根據已被譯碼的先前字符的條寬度校正給定字符的每條的寬度,然后對給定字符譯碼。
圖7說明了這種方法。
E0的字符位于E2的字符前而,并已譯碼。為了譯碼E2,必須測量E2的黑條B3和B1。這些黑條可能有印刷誤差。因為E0已被譯碼,所以知道E0的黑條和白條的基本單位數目。
為了校正E2的黑條B3的寬度,從黑條B3的寬度中減去E0的黑條B5或B7的寬度。黑條B5或B7的寬度是已知的,并有印刷誤差。于是,從黑條B3的寬度中減去黑條B5或B7的寬度消除了黑條B3中的印刷誤差。如果從黑條B3中減去黑條B5,則差將為“0”,因為兩條的寬度都為一個基本單位。如果從黑條B3中減去黑條B7,則差將為“-1”。
之后,將差加到E0的B5或B7的正常基本單位數目上。正常基本單位數沒有印刷誤差。以這種方式,正確地測量黑條B3的寬度。類似地,正確測量字符E2的黑條B1的寬度。
對具有校正條寬度的字符E2進行正確譯碼,而不考慮印刷誤差。
然而,不能確定在字符E2之前的字符是否確實是E0,或者黑條B5或B7的基本單位數是否正確。該方法假設在E2之前譯碼的字符E0是正確的然后對字符E2譯碼。如果這種假設由于斷條等是錯誤的,則不能正確譯碼字符E2。沒有方法測試所譯碼的字符E0是否正確,或者是否已經真正校正了字符E2的條。
如果條形碼印刷在曲面上,則字符E0對字符E2的比率將不是1∶1。于是,根據字符E0的條寬度校正字符E2的條寬度將提供錯誤的結果。
為解決這個問題,有一種方法,它為條寬度設置允許的誤差范圍,確定每條是否位于該范圍內,并且僅當條位于范圍之內時,才對相應條形碼進行譯碼。
如果每條具有大的誤差,則擴大允許的誤差范圍,以根據情況對條形碼進行適當地譯碼。
然而,這種方法是復雜的,非最佳的。
另外,這種方法不能確定給定條寬度是否是準確的。如果是錯誤的,則條形碼讀出器將提供錯誤的結果。
最近的條形碼是緊湊、短小和簡單印刷的,要求條形碼讀出器正確地讀出這些條形碼。
下面,解釋本發明的最佳實施方式。
圖8示出一種條形碼讀出器的例子。這是固定在例如商店收款臺上的靜止型的。
該條形碼讀出器具有一個在不同向下方向上發射激光束的窗口1。
圖9是示出根據本發明一種實施方式的條形碼讀出器的信號處理系統的框圖。光系統11包括一個諸如半導體激光器的光源,用于從光源反射光束的鏡子,用于根據反射光束提供掃描光束的多角鏡,用于發射掃描光束的窗口,以及用于接收從條形碼反射的光束的光敏元件。該光敏元件提供代表與條形碼的黑條或白條相應的值的模擬電信號。
A/D轉換器12將該模擬電信號轉換為代表值1或0的數字電信號。寬度計數器13根據由時鐘發生器14提供的時鐘信號對A/D轉換器12的輸出的邊緣之間的時間進行計數。也就是說,寬度計數器13測量條形碼的黑條或白條的寬度。
存儲器15存儲寬度計數器13的輸出。當完成掃描操作時,CPU 16從存儲器15讀出條寬度,并且譯碼器17將條寬度譯碼為條形碼字符。
定向單元18確定讀出和譯碼存儲器15中的寬度數據的方向。
圖10示出一個條形碼和條形碼譯碼方向。根據本實施方式的條形碼讀出器首先在方向(1)上對條形碼譯碼,并且如果必要,也在方向(2)上對條形譯碼。即,首先在方向(1)上讀出存儲在存儲器15中的條形碼數據,并且在相同方向上譯碼,然后在方向(2)上讀出相同的條形碼數據,并且在相同方向上譯碼。定向單元18確定方向(1)和(2)之一。
圖11是示出根據本發明第一實施方式的條形碼譯碼程序的流程圖。該程序是在條形碼讀出器讀出條形碼并且存儲器15存儲條寬度數據之后執行的。步驟S101在第一方向上從存儲器15讀出條寬度數據,并且逐字符地對數據進行譯碼。步驟S102在第一方向上存儲譯碼結果(a)。
步驟S103在第二方向上逐字符地讀并且對條寬度數據進行譯碼。從一個譯碼方向改變到另一個譯碼方向是由定向單元18控制的。在第一方向上最后譯碼的字符是在第二方向上首先譯碼的字符。
步驟S104在第二方向上存儲譯碼結果(b)。步驟S105對譯碼結果(a)和(b)進行相互比較。如果正確讀出條形碼,則譯碼結果(a)和(b)必須彼此相同。如果結果(a)和(b)彼此一致,則步驟S106確定已經正確譯碼條形碼。如果結果(a)和(b)不彼此相同,則步驟S107放棄譯碼結果。
以這種方式,第一實施方式在兩個方向上對條形碼進行譯碼,并且根據兩個方向上的譯碼結果確定是否已經成功地對條形碼進行譯碼。這使得條形碼譯碼可靠性高于現有技術。
圖12是示出根據本發明第二實施方式的條形碼譯碼程序的流程圖。該實施方式根據條形碼是否包括字符E1、E2、E7、E8、O1、O2、O7和O8中的任何一個在一個方向或兩個方向上對條形碼進行譯碼。下文中將這些字符稱為特殊字符。
特殊字符中的任何一個必須根據其條的實際寬度進行譯碼。為了提高譯碼結果的可靠性,必須根據已經譯碼的先前字符的條寬度校正這些字符的條寬度。
另一方面,可以根據Δ距離對除特殊字符之外的正常字符進行譯碼,而不考慮印刷誤差。也就是說,正常字符不需要條寬度校正。
如果譯碼的先前字符是正確的,則條寬度校正將是正確的。如果譯碼的先前字符是錯誤的,則條寬度校正將是錯誤的,因此,譯碼結果將是錯誤的。
圖12的實施方式解決了這個問題。
步驟S201在第一方向上對給定條形碼進行譯碼。步驟S202存儲譯碼結果(a)。這些步驟與第一實施方式中的相同。步驟S203確定譯碼結果(a)中是否包括特殊字符E1、E2、E7、E8、O1、O2、O7和O8中的任何一個。如果一個都不包括,則步驟S207確定譯碼結果(a)是正確的和可接受的。
如果譯碼結果(a)包括特殊字符中的任何一個,則字符的條寬度將根據譯碼的先前字符的條寬度已被校正,因此,必須驗證條寬度校正。為此,步驟S204在第二方向上對條形碼數據進行譯碼,并且步驟S205在第二方向上存儲譯碼結果(b)。
圖13示出夾在字符B和C之間的字符A。字符A是O1,即特殊字符之一,因此,必須根據先前譯碼的字符的條寬度其條寬度被校正。
當在圖13中在第一方向上對條形碼進行譯碼時,字符A在字符B之后得到譯碼。于是,字符A的黑條的寬度根據字符B的黑條b的寬度得到校正。
當在第二方向上對條形碼進行譯碼時,字符A在字符C之后得到譯碼。于是,字符A的黑條的寬度根據字符C的黑條c的寬度得到校正。
在圖13中,為了校正字符A的黑條的寬度用作參考的黑條是字符B和C的每個的右黑條。
以這種方式,字符A的黑條寬度根據字符B和C的黑條寬度被校正兩次。之后,在兩次校正基礎上的譯碼結果相互比較。如果比較沒有差別,則確定條形碼已被成功譯碼,或者條寬度校正是正確的。
回到圖12,如果步驟S203確定譯碼結果(a)包括特殊字符中的任何一個,則步驟S204在第二方向上對條形碼數據進行譯碼。步驟S205在第二方向上存儲譯碼結果(b)。步驟S206對譯碼結果(a)和(b)進行相互比較。
如果譯碼結果(a)和(b)彼此相同,則步驟S207確定已成功地對條形碼進行譯碼。如果相互不一致,則步驟S208放棄譯碼結果,因為兩個結果中的至少一個必然是錯誤的。
以這種方式,如果條形碼含有任何需要條寬度校正的字符,則第二實施方式在不同方向上對條形碼進行譯碼,對不同方向上的譯碼結果進行相互比較,并且確定是否已經正確地對條形碼進行譯碼。
如果條形碼不含有這種特殊字符中的任何一個,則第二初稿方式只在一個方向上對條形碼進行譯碼,以縮短譯碼時間。
第二實施方式對圖13的字符A的黑條寬度根據與字符A相鄰的字符B和C的條寬度進行校正。這避免了加有條形碼的表面的曲率的影響。然而,這并不限制本發明。條寬度校正可以根據例如第一個譯碼字符或保護條來進行。
圖14是示出根據本發明第三實施方式的條形碼譯碼程序的流程圖。如果條形碼連續含有特殊字符E1、E2、E7、E8、O1、O2、O7和O8中的任何一個,則該實施方式在第一和第二方向上對給定條形碼進行譯碼。
第三字符的條寬度根據在第三字符之前的第二字符的條寬度得到校正。第二字符的條寬度根據在第二字符之前的第一字符的條寬度得到校正。如果第二字符的條寬度校正含有誤差,則該誤差將擴展到第三字符的校正中。于是,第三字符將具有更大的誤差。
如果條形碼連續地含有其條寬度已被校正的幾個特殊字符,則第三實施方式除了在第一方向之外在第二方向上對給定條形碼進行譯碼。在這種情形下,第三實施方式根據兩個不同的字符的條寬度對一個給定特殊字符的條寬度進行校正,以提高條寬度校正和條形碼譯碼的可靠性。
步驟S301在第一方向上對條形碼進行譯碼,步驟S302存儲譯碼結果(a)。步驟S303確定譯碼結果(a)是否連續含有特殊字符E1、E2、E7、E8、O1、O2、O7和O8中的任何一個。如果連續地含有它們,則步驟S304在第二方向上對條形碼數據進行譯碼,并且步驟S305存儲譯碼結果(b)。
步驟S306對譯碼結果(a)和(b)進行相互比較。如果它們彼此一致,則步驟S307確定已經正確地對條形碼進行譯碼。如果它們彼此不一致,則步驟S308放棄譯碼結果,因為它們中的至少一個是錯誤的。
如果步驟S303確定譯碼結果(a)沒有連續的特殊字符,則步驟S307確定譯碼結果(a)是正確的。
如果條形碼含有不連續的特殊字符中的任何一個,則第三實施方式不在第二方向上對條形碼進行譯碼。然而,這種技術并不限制本發明。
圖15是示出根據本發明第四實施方式的條形碼譯碼程序的流程圖。第四實施方式檢測剛剛被譯碼的第一個字符,以確定它是否是特殊字符E1、E2、E7、E8、O1、O2、O7和O8中的一個,并且如果是,則根據將被譯碼的第二字符的條寬度對第一字符的條寬度進行校正。之后,第四實施方式再次對第一字符進行譯碼并確定第一字符的譯碼結果在條寬度校正之前和之后是否是不變的。
當需要時,第一至第三實施方式中的任何一種都在第一和第二方向上對給定條形碼進行完整地譯碼。這可能加長譯碼時間并降低條形碼讀出器的工作效率。于是,第四實施方式只在不同方向上對特殊字符進行譯碼,并確定譯碼結果是否彼此相同。
步驟S402對當前字符進行譯碼。步驟S403確定先前字符是否是特殊字符E1、E2、E7、E8、O1、O2、O7和O8中的一個。如果不是,則對下一字符進行譯碼。
如果前一字符是特殊字符中的一個,則步驟S404確定當前字符是否是特殊字符中的一個。如果當前字符是它們中的一個,則不必根據當前字符的條寬度對前一字符的條寬度進行校正,因為可能引起校正誤差。因此,步驟S406進行到下一字符。
在步驟S404中如果當前字符不是特殊字符中的一個,則根據當前字符的條寬度對前一字符的條寬度進行校正。并再對前一字符進行譯碼。步驟S405對前一字符校正前后的譯碼結果進行相互比較。如果它們彼此一致,則步驟S406進行到下一字符。如果它們彼此不一致,則步驟S407確定前一字符的譯碼是錯誤的。
以這種方式,第四實施方式只對必須驗證的字符在兩個方向上進行譯碼,并確定譯碼結果是否是可接受的。第四實施方式僅在一個方向上對不需驗證的字符進行譯碼,以縮短譯碼時間。
圖16是示出根據本發明第五實施方式的條形碼譯碼程序的流程圖。該實施方式根據當前字符的譯碼結果重復對連續特殊字符的譯碼,以驗證特殊字符。
步驟S502對當前字符進行譯碼。步驟S503檢查第一先前字符,以確定它是否是特殊字符E1、E2、E7、E8、O1、O2、O7和O8中的一個。如果是這樣,則步驟S504檢查第二先前字符,以確定它是否是特殊字符中的一個。如果步驟S504和S504中的任何一個步驟給出否定回答,則步驟S507進行到下一字符。
如果第一和第二先前字符都是特殊字符之一,則步驟S505確定當前字符是否不是特殊字符中的一個。如果當前字符是正常字符,則步驟S506根據當前字符的條寬度校正連續特殊字符的條寬度,對校正后的連續特殊字符進行譯碼,并且對校正前后的字符進行相互比較。如果它們彼此一致,則步驟S507確定譯碼字符是正確的并且進行到下一字符。如果它們彼此不一致,則步驟S508確定譯碼字符是錯誤的。
在步驟S505如果當前字符是特殊字符中的一個,則步驟S507進行到下一字符,而不校正先前特殊字符的條寬度。
如上所述,本發明在兩個方向上對條形碼進行譯碼,并且對譯碼結果進行相互比較,以確定譯碼結果是否正確。本發明使得對條形碼的譯碼可靠性高于現有技術。
本發明根據相鄰字符兩次校正特殊字符。對經過兩次校正之后的譯碼結果進行相互比較,以對校正進行驗證。
如果所譯碼的先前字符是特殊字符中的一個,則本發明根據當前字符對先前字符進行校正并再次譯碼。對校正前后的先前字符的譯碼結果進行相互比較,以對校正和譯碼結果進行驗證。不需要驗證的任何正常字符只在一個方向上譯碼,以減少譯碼時間。
如果有連續的特殊字符,則在不同方向上對它們進行譯碼,使得條寬度校正誤差的傳播最小,并且提高條形碼譯碼的可靠性。
權利要求
1.根據從條形碼反射的光束對條形碼進行譯碼的方法,包括步驟檢測反射光中的條形碼數據;將條形碼數據存儲在存儲裝置中;在第一方向上從存儲裝置讀條形碼數據并對其進行譯碼;在相反的第二方向上讀條形碼數據并對其進行譯碼;以及確定在第一方向和第二方向上的譯碼結果是否彼此相同。
2.根據從條形碼反射的光束對條形碼進行譯碼的方法,包括步驟檢測反射光中的條形碼數據;將條形碼數據存儲在存儲裝置中;在第一方向上讀條形碼數據并對其進行譯碼;如果在第一方向上的譯碼結果包括特殊數據,則在第二方向上讀條形碼數據并對其進行譯碼;以及確定在第一方向和第二方向上的譯碼結果是否彼此相同。
3.權利要求2的方法,其中特殊數據涉及一種字符,在第一和第二方向的每個方向上,在對該字符譯碼之前,根據每個方向上已經譯碼的字符的條寬度,對該字符的條寬度進行校正。
4.根據從條形碼反射的光束對條形碼進行譯碼的方法,包括步驟檢測反射光中的條形碼數據;將條形碼數據存儲在存儲裝置中;在第一方向上讀條形碼數據并對其進行譯碼;如果在第一方向上的譯碼結果包括連續的特殊數據,則在第二方向上讀條形碼數據并對其進行譯碼;以及確定在第一方向和第二方向上的譯碼結果是否彼此相同。
5.權利要求4的方法,其中特殊數據涉及這樣的字符,在第一和第二方向的每個方向上,在對這些字符譯碼之前,根據每個方向上已經譯碼的字符的條寬度,對這些字符的條寬度進行校正。
6.根據從條形碼反射的光束對條形碼進行譯碼的方法,包括步驟檢測反射光中的條形碼的條寬度數據;將條寬度數據存儲在存儲裝置中;在第一方向上從存儲裝置讀條寬度數據并將其譯碼為第一字符;確定在第一字符之前剛被譯碼的第二字符的條寬度是否已經根據在第二字符之前剛被譯碼的第三字符的寬度得以校正;如果第二字符的條寬度已經根據第三字符的條寬度得以校正,則根據第一字符的條寬度校正第二字符的條寬度,并且再次對第二字符進行譯碼;以及確定第二字符的兩個譯碼結果是否彼此相同。
7.條形碼讀出器,包括光源;用于從其上照射有來自光源的光的條形碼接收反射光、并提供表示條形碼數據的信號的接收器;用于存儲條形碼數據的存儲器;用于在第一方向和第二方向上分別對條形碼數據進行譯碼的譯碼器;以及用于對第一方向和第二方向上的譯碼結果進行相互比較的比較器。
8.條形碼讀出器,包括光源;用于從光源外部發射光的裝置;用于從條形碼接收反射光、并提供表示條形碼數據的信號的裝置;用于存儲條形碼數據的裝置;用于在第一方向上對條形碼數據進行譯碼、并且如果在第一方向上的譯碼結果包括特殊數據則在第二方向上進行譯碼的裝置;以及用于對第一方向和第二方向上的譯碼結果進行相互比較的裝置。
9.權利要求8的條形碼讀出器,其中特殊數據涉及一種字符,在第一和第二方向的每個方向上,在對該字符譯碼之前,根據每個方向上已經譯碼的字符的條寬度,對該字符的條寬度進行校正。
10.條形碼讀出器,包括光源;用于從光源外部發射光的裝置;用于從條形碼接收反射光、并提供表示條形碼數據的信號的裝置;用于存儲條形碼數據的裝置;用于在第一方向上對條形碼數據進行譯碼、并且如果在第一方向上的譯碼結果包括連續的特殊數據則在第二方向上進行譯碼的裝置;以及用于對第一方向和第二方向上的譯碼結果進行相互比較的裝置。
11.權利要求10的條形碼讀出器,其中特殊數據涉及這樣的字符,在第一和第二方向的每個方向上,在對這些字符譯碼之前,根據每個方向上已經譯碼的字符的條寬度,對這些字符的條寬度進行校正。
12.條形碼讀出器,包括光源;用于從光源外部發射光的裝置;用于從條形碼接收反射光、并提供表示條形碼數據的信號的裝置;用于存儲條形碼數據的裝置;用于在第一方向上對條形碼數據進行譯碼、并且如果在第一字符之前剛被譯碼的第二字符的條寬度已經根據在第二字符之前剛被譯碼的第三字符的條寬度得到校正則根據第一字符的條寬度對第二字符的條寬度進行校正、而且再次對第二字符進行譯碼的裝置;以及用于對第二字符的兩個譯碼結果進行相互比較的裝置。
全文摘要
一種條形碼讀出器,如果條形碼含有其要寬度已經被校正的特殊字符,則在不同方向上對條形碼進行譯碼。該條形碼讀出器對不同方向上的譯碼結果進行相互比較,以提高條形碼讀取的可靠性。如果譯碼結果彼此一致,則接受譯碼結果,否則放棄譯碼結果。
文檔編號G06K7/00GK1157443SQ9611795
公開日1997年8月20日 申請日期1996年12月25日 優先權日1995年12月25日
發明者川合弘晃, 佐藤伸一, 伊藤元彥, 渡邊光雄, 巖口功 申請人:富士通株式會社