一 EAN碼介紹
1 EAN碼定義:
EAN碼是國際物品編碼協會制定的一種商品用條碼,通用于全世界。EAN碼符號有標準版(EAN-13)和縮短版(EAN-8)兩種。標準版表示13位數字,又稱為EAN13碼,縮短版表示8位數字,又稱EAN8。兩種條碼的最后一位為校驗位,由前面的12位或7位數字計算得出
2 EAN碼結構:
EAN13商品條碼由左側空白區、起始符、左側數據符、中間分隔符、右側數據符、校驗符、終止符、右側空白區及供識別字符組成。 其各個組成部分如下:
·左側空白區
位于條碼符號最左側的與空的反射率相同的區域,其最小寬度為11個模塊寬。
·起始符
位于條碼符號左側空白區的右側,表示信息開始的特殊符號,由3個模塊組成。
·左側數據符
位于起始符號右側,中間分隔符左側的一組條碼字符。表示6位數字信息,由42個模塊組成。
·中間分隔符
位于左側數據符的右側,是平分條碼字符的特殊符號,由5個模塊組成。
右側數據符
位于中間分隔符右側,校驗符左側的一組條碼字符。表示5位數字信息的一組條碼字符,由35個模塊組成。
·校驗符
位于右側數據符的右側,表示校驗碼的條碼字符,由7個模塊組成。
·終止符
位于條碼符號校驗符的右側,表示信息結束的特殊符號,由3個模塊組成。
·右側空白區
位于條碼符號最右側的與空的反射率相同的區域,其最小寬度為7個模塊寬。為保護右側空白區的寬度,可在條碼符號右下角加“>”符號。
·供人識別字符
位于條碼符號的下方,與條碼相對應的13位數字。供人識別字符優先選用GB/T 12508中規定的OCR-B字符集;字符頂部和條碼字符底部的最小距離為0.5個模塊寬。EAN-13商品條碼供人識別字符中的前置碼印制在條碼符號起始符的左側。
EAN碼的編碼規則是什么?
起始符和終止符3個模塊的編碼均為101,中間分隔符5個模塊的編碼是01010。左側數據符和右側數據符的編碼方式不同。在左側數據符中,有A和B兩種編碼方式,右側數據符中有C編碼方式。其中A和C之間是反碼關系,B和C之間是倒序關系。在左側數據符中的編碼方式選A還是B,由前置碼字符決定
3 EAN碼特性:
EAN碼具有以下特性:
1、只能儲存數字。
2、可雙向掃描處理,即條碼可由左至右或由右至左掃描。
3、必須有一檢查碼,以防讀取資料的錯誤情形發生,位於EAN碼中的最右邊處。
4、具有左護線、中線及右護線,以分隔條碼上的不同部分與擷取適當的安全空間來處理。
5、條碼長度一定,較欠缺彈性,但經由適當的管道,可使其通用於世界各國。
6、依結構的不同,可區分為:
EAN-13碼:由13個數字組成,為EAN的標準編碼型式。
EAN- 8碼:由8個數字組成,屬EAN的簡易編碼型式。
*創建一個條碼讀取模版
create_bar_code_model ([], [], BarCodeHandle)*關閉已經打開的窗口
dev_close_window ()*打開一個新窗口
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)*設置字體的信息:字體大小:16,字體類型:mono,粗體,非斜體
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')*設置輸出對象的顯示顏色
dev_set_color ('green')*設置區域填充方式
dev_set_draw ('margin')*設置輸出對象的線寬度
dev_set_line_width (3)*成功解碼到一個條形碼后將解碼停止
set_bar_code_param (BarCodeHandle, 'stop_after_result_num', 1)
for I := 1 to 15 by 1*讀取一張圖像read_image (Image, 'barcode/ean13/ean13' + (I$'.2'))*重繪窗口大小,讓圖像自適應到窗口dev_resize_window_fit_image (Image, 0, 0, -1, -1)if (I == 14)*第14張圖像包含可能導致錯誤解碼的缺陷對象,因此,“mean_thresh”參數被調整。*用這個閾值找到邊緣位置的掃描線來確定條形碼的條形空間序列.set_bar_code_param (BarCodeHandle, 'meas_thresh', 0.2)endif*在圖像上讀取出條碼數據和條碼區域find_bar_code (Image, SymbolRegions, BarCodeHandle, 'EAN-13', DecodedDataStrings)if (I == 14)*執行完第14張圖像,恢復meas_thresh值為0.05set_bar_code_param (BarCodeHandle, 'meas_thresh', 0.05)endif*獲取條碼區域的面積和中心坐標area_center (SymbolRegions, Area, Row, Column)*顯示圖像dev_display (Image)*顯示條碼區域dev_display (SymbolRegions)*在窗口上顯示條碼數據信息disp_message (WindowHandle, DecodedDataStrings, 'image', Row - 30, Column - 90, 'black', 'true')*stop ()
endfor*刪除條碼模版并清除分配的內存
clear_bar_code_model (BarCodeHandle)