因為要直接從程式產生一維條碼,所以要靠自己寫
看了很多人寫的一維條碼的資料,終於看懂了
大部分超商都是使用" EAN-13 "
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EAN-13碼(European Article Number,歐洲商品條碼)是1977年由歐洲十二個工業國家所共同發展出來的一種條碼系統,其後逐漸變成國際性的條碼系統,一般多用作商品標示條碼。其編碼特性如下:
1. 資料只能為0~9之數字計12個,連同檢查碼共13碼。資料中包括國家代碼3碼、廠商代碼4碼、產品代碼5碼,為一種專用於商品標示的條碼。
2. 編碼結構為〔護線+6個左資料碼+中線+5個右資料碼+檢查碼+護線〕,共佔119條線。其中在畫線時,護線和中線在下方均略長於資料碼,以便肉眼能明顯區分,但對於條碼機閱讀時並無差異。
3. 左資料的編碼方式有A、B兩組之分,而資料的第一碼隱藏在左資料碼的編碼方式,故實際只編出12碼。以下為左資料依首碼所對應使用的編碼方式:
0 AAAAAA
1 AABABB
2 AABBAB
3 AABBBA
4 ABAABB
5 ABBAAB
6 ABBBAA
7 ABABAB
8 ABABBA
9 ABBABA
4. 左資料的編碼方式,A組編碼為:
0 0001101
1 0011001
2 0010011
3 0111101
4 0100011
5 0110001
6 0101111
7 0111011
8 0110111
9 0001011
B組編碼為:
0 0100111
1 0110011
2 0011011
3 0100001
4 0011101
5 0111001
6 0000101
7 0010001
8 0001001
9 0010111
以上各位元0為白,1為黑。
5. 護線固定為101,中線固定為01010,各位元0為白,1為黑。
6. 右資料編碼方式固定為:
0 1110010
1 1100110
2 1101100
3 1000010
4 1011100
5 1001110
6 1010000
7 1000100
8 1001000
9 1110100
各位元0為白,1為黑。
驗證碼算法:
▲ 國家代號(3位數) | 中華民國的國家代號為471。 |
▲ 廠商代號(6位數) | 由本會核發給廠商6位數的廠商代號。 |
▲ 商品代號(3位數) | 由廠商自行編定,按一物一號的原則,不同的 商品賦予不同的序號。(包裝、尺寸、顏色、 材質等不同,應視為不同的商品) |
▲ 檢核碼 | 按"10法則"的公式計算得之。 |
檢核碼計算方式
|
|||||||||||||
國家代號
|
廠商代號
|
商品
代號 |
檢 |
||||||||||
位數
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
條碼編號
|
4
|
7
|
1
|
1
|
2
|
3
|
4
|
5
|
6
|
0
|
0
|
1
|
|
步驟一
偶位數數值相加乘3 |
7+1+3+5+0+1=17,17×3=51
|
||||||||||||
步驟二
奇位數數值相加 |
4+1+2+4+6+0=17
|
||||||||||||
步驟三
將步驟一與步驟三之和相加 |
51+17=68
|
||||||||||||
步驟四
以10減去步驟三總和之個 位數,所得即為檢核碼 |
10-8=2→檢核碼
若步驟三總和的個位數為"0", 檢核碼即為"0" |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
實際範例: 4 714947 000196
從 開頭 471 可以得知 是台灣條碼
而從 4 知道 要用ABAABB (左資料的編碼方式有A、B兩組之分,而資料的第一碼隱藏在左資料碼的編碼方式)
ABAABB | ||
4 | ||
7 | 0111011 | A |
1 | 0110011 | B |
4 | 0100011 | A |
9 | 0001011 | A |
4 | 0011101 | B |
7 | 0010001 | B |
0 | 1110010 | |
0 | 1110010 | |
0 | 1110010 | |
1 | 1100110 | |
9 | 1110100 | |
6 | 1010000 | |
0為白 1為黑。 |
依照以上的來畫線 就可以畫出來了。
編碼結構為〔護線+6個左資料碼+中線+5個右資料碼+檢查碼+護線〕,共佔119條線。其中在畫線時,護線和中線在下方均略長於資料碼,以便肉眼能明顯區分,但對於條碼機閱讀時並無差異。
護線固定為101,中線固定為01010,各位元0為白,1為黑。
將2邊加上
101 + 714947 + 01010 + 000196 + 101 (粗體為十進位,其他為二進位,請自行轉換十進位)
ex: 101011101101100110100011000101100010110011101001000101010111001011100101110010110011011101001010000
按照上面 0空白 1畫線 就可以畫出
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
參考:
http://www.programmer-club.com.tw/ShowSameTitleN/general/7269.html
http://www.vixual.net/blog/archives/89
http://adc.cm.nsysu.edu.tw/barcode/1d_def.htm
http://tw.knowledge.yahoo.com/question/question?qid=1105052607348
ABAABB | ||
4 | ||
7 | 0111011 | A |
1 | 0110011 | B |
4 | 0100011 | A |
9 | 0001011 | A |
4 | 0011101 | B |
7 | 0010001 | B |
0 | 1110010 | |
0 | 1110010 | |
0 | 1110010 | |
1 | 1100110 | |
9 | 1110100 | |
6 | 1010000 | |
0為白,1為黑。 |
留言列表