




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí) 驗(yàn):EAN13條形碼一、實(shí)驗(yàn)?zāi)康膹?fù)習(xí)并鞏固C語言,熟練的運(yùn)用C語言進(jìn)行編程。通過使用Visual C+6.0程序編譯軟件編寫源程序,能夠?qū)崿F(xiàn)ENA13條形碼的生成。二、實(shí)驗(yàn)要求1、利用C語言編程實(shí)現(xiàn)ENA13條形碼2、代碼實(shí)現(xiàn)的主要功能有:基本的輸入輸出功能、條形碼的讀取、條形碼的生成三、實(shí)驗(yàn)原理1、EAN-13條形碼的字符格式 國(guó)際物品條形碼有兩個(gè)版本,一個(gè)是標(biāo)準(zhǔn)版,另一個(gè)是縮短版。標(biāo)準(zhǔn)版即我們通常所說的ERIN- 13。標(biāo)準(zhǔn)版規(guī)定十三位數(shù)字的條形碼符號(hào)形式,如圖1.所示。開始三位數(shù)字(用FI-F3表示)代表商品制造商所屬的國(guó)家或地區(qū),也稱為前綴號(hào)。例如日本為49#,澳大利亞為93#,我
2、國(guó)為690。這里的“#”表示0-9的任意數(shù)字。接下來的四位數(shù)字(M1-M4表示)為商品制造商的代碼,是由該國(guó)編碼管理局審查批準(zhǔn)并登記注冊(cè)的。在接下來的五位數(shù)字(I1-I5表示)是由所在國(guó)編碼管理局注冊(cè)的生產(chǎn)企業(yè)所給的商品編碼,由企業(yè)自己編制。最后一位是校驗(yàn)位(C),用來檢查條形碼閱讀器的結(jié)果是否正確。 圖1 .EAN條碼的格式2、EAN-13條形碼的構(gòu)成 通用商品條碼從左側(cè)空白區(qū)開始,依次向右為左側(cè)空白區(qū)、起始符、左側(cè)數(shù)據(jù)符、中間分隔符、右側(cè)數(shù)據(jù)符、校驗(yàn)符、終止符,到右側(cè)空白區(qū)為止。左、右側(cè)空白: 沒有任何印刷符號(hào)的空白區(qū)域,它通常是白的,位于條碼符號(hào)的兩側(cè)。用以提示閱讀器準(zhǔn)備掃描條形碼符號(hào),
3、共有十八個(gè)模塊組成(其中左側(cè)空白不得少于9個(gè)模塊寬度),一般左側(cè)11個(gè)模塊,右側(cè)7個(gè)模塊。起始符: 條形碼符號(hào)的第一位字符是起始符,它特殊的條空結(jié)構(gòu)用于識(shí)別條形碼符號(hào)的開始,由3個(gè)模塊組成。左側(cè)數(shù)據(jù)符: 位于中間分隔符的左側(cè),表示一定信息的條碼字符,由42個(gè)模塊組成。中間分隔符: 位于條碼中間位置的若干條與空,用于區(qū)分左右側(cè)數(shù)據(jù),有5個(gè)模塊構(gòu)成。右側(cè)數(shù)據(jù)符: 位于中間分隔符右側(cè),表示一定信息的條碼字符,由35個(gè)模塊組成。條碼校驗(yàn)符: 表示校驗(yàn)碼的條碼字符,用以校驗(yàn)條碼符號(hào)的正確與否,由7個(gè)模塊組成。終止符: 條形碼符號(hào)的最后一位字符是終止符,它的特殊的條空結(jié)構(gòu)用于識(shí)別條形碼符號(hào)的結(jié)束,由3個(gè)模
4、塊組成。可見起始符、終止符的編碼是相同的,都是用等寬的兩個(gè)黑線條加一個(gè)白線條組成,分別是黑-白-黑。如規(guī)定一個(gè)模塊寬度的黑條對(duì)應(yīng)1,白條對(duì)應(yīng)0,則起始符和終止符的編碼為101,中間分隔符的編碼為01010。這三種符號(hào)的條空排列是固定不變的,比其他條空的長(zhǎng)度略長(zhǎng)。 圖2.標(biāo)準(zhǔn)EAN-13條形碼的構(gòu)成3、EAN-13條形碼的編碼原則 所謂編碼原則就是針對(duì)商品項(xiàng)目代碼而言的。我們所研究的一維條碼是我國(guó)主要采用的EAN代碼,編碼時(shí)應(yīng)遵循如下原則:a、唯一性 所謂唯一性是指商品項(xiàng)目與其標(biāo)識(shí)代碼一一對(duì)應(yīng),即一個(gè)商品項(xiàng)目只有一個(gè)代碼,一個(gè)代碼只標(biāo)識(shí)同一商品項(xiàng)目。商品項(xiàng)目代碼一旦確定,永不改變,即使該商品停止
5、生產(chǎn),停止供應(yīng)了,在一段時(shí)間以內(nèi)(一些國(guó)家規(guī)定為3年)也不得將該代碼分配給其他商品項(xiàng)目。在商品系統(tǒng)中商品及商品價(jià)格的差異是靠不同的代碼識(shí)別的。唯一的商品項(xiàng)目代碼與廠商代碼和國(guó)別(地區(qū))組配在一起就可以保證商品的代碼標(biāo)識(shí)在一個(gè)國(guó)家(地區(qū))乃至全世界范圍內(nèi)都是唯一的。唯一性是商品編碼最重要的一條原則,也是傳統(tǒng)條碼的局限所在。b、無含義 無含義是指代碼數(shù)字本身及其位置不表示商品的任何特定信息。平常說的“流水號(hào)”就是一種無含義代碼。在EAN及UPC系統(tǒng)中,商品編碼僅僅是一種識(shí)別商品的手段,而不是商品分類的手段。無含義使商品編碼具有簡(jiǎn)單、靈活、可靠、充分利用代碼容量大、生命力強(qiáng)等特點(diǎn),所以傳統(tǒng)條碼需要借
6、助數(shù)據(jù)庫(kù)的存在。 c、全數(shù)字型代碼 在EAN及UPC系統(tǒng)中,商品編碼全部采用阿拉伯字母。4、ENA13條形碼的特性1、只能儲(chǔ)存數(shù)字。2、可以雙向掃描處理。3、必須有一檢查碼,用以防止讀取資料的錯(cuò)誤情形發(fā)生,位于ENA碼中的最右邊處。4、具有左護(hù)線,中線以及右護(hù)線,以分隔條碼上的不同部分。5、條碼長(zhǎng)度一定,較缺乏彈性,但經(jīng)由適當(dāng)?shù)墓艿溃梢允蛊渫ㄓ糜谌澜?。四、?shí)驗(yàn)過程1、下載一個(gè)Easyx解壓包并新建一個(gè)ENA13文件夾。2、解壓并安裝Easyx軟件。3、在Visual C+6.0程序編譯軟件中建立ENA13工程。4、編寫程序并運(yùn)行調(diào)試到?jīng)]有錯(cuò)誤。5、編譯并運(yùn)行結(jié)果五、實(shí)驗(yàn)總結(jié)通過本次實(shí)驗(yàn),我
7、對(duì)EAN13條碼的編碼方法和編碼原理及規(guī)則有了更深層次的了解,而且對(duì)EAN13條形碼的結(jié)構(gòu)也更加清楚,雖然實(shí)驗(yàn)過程并不是很順利,但最后通過查找資料及詢問同學(xué),實(shí)驗(yàn)做成功了,該實(shí)驗(yàn)不僅讓我鞏固了大一時(shí)所學(xué)的C語言知識(shí),能夠更加熟練的運(yùn)用了Visual C+6.0環(huán)境中編寫程序的基本方法,而且加深了我對(duì)條形碼的了解,并且對(duì)信息自動(dòng)識(shí)別技術(shù)的學(xué)習(xí)有很大幫助。六、附錄:實(shí)驗(yàn)源代碼如下:#include <stdio.h>#include <string.h>#include <graphics.h>#include <conio.h>int startX
8、, startY, height;/劃線,注意這里設(shè)置的是一條線的寬度占兩個(gè)像素void DrawLine(int h)setcolor(BLACK);line(startX, startY, startX, startY + height + h);line(startX + 1, startY, startX + 1, startY + height + h);startX += 2;/左側(cè)空白處理void LeftBlank()clearcliprgn();/清空畫圖setcolor(BLACK);/ 設(shè)置繪圖色為紅色rectangle(startX, startY - 10, star
9、tX + 226, startY + 120); / 畫矩形startX = startX + 9 * 2;/留出9個(gè)模塊的空白/起始符處理void StartPattern()DrawLine(10);startX += 2;DrawLine(10);/左側(cè)數(shù)據(jù)處理void LeftDataPattern(char * leftdata)int i;for(i = 0; i < 42; i +)if(leftdatai = '1')DrawLine(0);elsestartX += 2;/中間分隔符處理void CenterDivisionPattern()int i;
10、int center5 = 0, 1, 0, 1, 0 ;for(i = 0; i < 5; i +)if(centeri = 1)DrawLine(10);elsestartX += 2;/右側(cè)數(shù)據(jù)處理void RightDataPattern(char *rightdata)int i;for(i = 0; i < 42; i +)if(rightdatai = '1')DrawLine(0);elsestartX += 2;/結(jié)束符處理void EndPattern()DrawLine(10);startX += 2;DrawLine(10);/數(shù)據(jù)檢查處理b
11、ool DataCheck(char * strdata)int i;if(strlen(strdata) != 12)printf("您輸入的數(shù)據(jù)長(zhǎng)度不正確,n");return false;for(i = 0; i < 12; i +)if(strdatai < '0' | strdatai > '9')printf("您輸入的不是數(shù)字,n");return false;return true;/輸入數(shù)據(jù)并檢查數(shù)據(jù)的格式void input(int *data)char strdata13;int i
12、;printf("請(qǐng)輸入12位的數(shù)據(jù):n");gets(strdata);while(!DataCheck(strdata)printf("請(qǐng)重新輸入:n");scanf("%s",strdata);for(i = 0; i <12; i +)datai = strdatai - '0'/獲取校驗(yàn)位int GetCheckBit(int *data)int i, sum = 0, n;for(i = 0; i < 12; i +)n = (i + 1) % 2 ? datai : datai * 3;sum
13、 += n;sum %= 10;return (10 - sum) % 10;char *ASubset(int number)char *strdata;switch(number)case 0: strdata = "0001101"break;case 1: strdata = "0011001"break;case 2: strdata = "0010011"break;case 3: strdata = "0111101"break;case 4: strdata = "0100011"
14、;break;case 5: strdata = "0110001"break;case 6: strdata = "0101111"break;case 7: strdata = "0111011"break;case 8: strdata = "0110111"break;case 9: strdata = "0001011"break;return strdata;char *BSubset(int number)char *strdata;switch(number)case 0: st
15、rdata = "0100111"break;case 1: strdata = "0110011"break;case 2: strdata = "0011011"break;case 3: strdata = "0100001"break;case 4: strdata = "0011101"break;case 5: strdata = "0111001"break;case 6: strdata = "0000101"break;case 7: s
16、trdata = "0010001"break;case 8: strdata = "0001001"break;case 9: strdata = "0010111"break;return strdata;char *CSubset(int number)char *strdata;switch(number)case 0: strdata = "1110010"break;case 1: strdata = "1100110"break;case 2: strdata = "11
17、01100"break;case 3: strdata = "1000010"break;case 4: strdata = "1011100"break;case 5: strdata = "1001110"break;case 6: strdata = "1010000"break;case 7: strdata = "1000100"break;case 8: strdata = "1001000"break;case 9: strdata = "1
18、110100"break;return strdata;char *LeftDataSelectRole(int number)char *strdata;switch(number)case 0: strdata = "AAAAAA"break;case 1: strdata = "AABABB"break;case 2: strdata = "AABBAB"break;case 3: strdata = "AABBBA"break;case 4: strdata = "ABAABB"
19、;break;case 5: strdata = "ABBAAB"break;case 6: strdata = "ABBBAA"break;case 7: strdata = "ABABAB"break;case 8: strdata = "ABABBA"break;case 9: strdata = "ABBABA"break;return strdata;/獲取左側(cè)數(shù)據(jù)處理void GetLeftData(int *data, int begin, int end, char *leftd
20、ata)int i;char *str;str = LeftDataSelectRole(data0);for(i = begin; i <= end; i +)if( stri -1 = 'A')strcat(leftdata, ASubset(datai);if(stri - 1 = 'B')strcat(leftdata, BSubset(datai);/獲取左側(cè)數(shù)據(jù)處理void GetRightData(int *data, int begin, int end, char *rightdata)int i;for(i = begin; i <
21、;= end; i +)strcat(rightdata, CSubset(datai);/獲取數(shù)據(jù)void GetData(char *leftdata, char *rightdata)int data13 = 0;input(data); /輸入數(shù)據(jù)data12 = GetCheckBit(data);/計(jì)算校驗(yàn)位/printf("%dn", data12);/輸出校驗(yàn)位的值GetLeftData(data, 1, 6, leftdata); /獲取左側(cè)數(shù)據(jù)GetRightData(data, 7, 12, rightdata);/獲取右側(cè)數(shù)據(jù)/畫EAN13條碼的主體函數(shù)void DrawEAN13()/int l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 營(yíng)口職業(yè)技術(shù)學(xué)院《信息與編碼》2023-2024學(xué)年第二學(xué)期期末試卷
- 移動(dòng)優(yōu)先設(shè)計(jì)理念實(shí)踐手冊(cè)
- 廣東云浮中醫(yī)藥職業(yè)學(xué)院《計(jì)算機(jī)應(yīng)用基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年四川省南充市嘉陵區(qū)思源實(shí)驗(yàn)學(xué)校數(shù)學(xué)五下期末達(dá)標(biāo)檢測(cè)試題含答案
- 數(shù)據(jù)庫(kù)變更管理審批流程
- 黃岡職業(yè)技術(shù)學(xué)院《房地產(chǎn)市場(chǎng)營(yíng)銷》2023-2024學(xué)年第二學(xué)期期末試卷
- 歐洲奶茶采購(gòu)合同范本
- 陜西省咸陽市2025屆四下數(shù)學(xué)期末統(tǒng)考模擬試題含解析
- 2025屆河北省秦皇島市撫寧區(qū)三下數(shù)學(xué)期末統(tǒng)考試題含解析
- 運(yùn)城學(xué)院《醫(yī)學(xué)基礎(chǔ)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四年級(jí)美術(shù)素養(yǎng)附答案
- 2021年全國(guó)中學(xué)生天文奧林匹克競(jìng)賽預(yù)賽試題及答案
- 四年級(jí)下冊(cè)音樂教案-2.2我們美麗的祖國(guó) |接力版
- Quantum軟件培訓(xùn)手冊(cè)
- 走近人工智能
- 服裝市場(chǎng)營(yíng)銷項(xiàng)目2服裝市場(chǎng)營(yíng)銷環(huán)境分析課件
- 中國(guó)傳媒大學(xué)《當(dāng)代電視播音主持教程》課件
- 制造業(yè)信息化管理系統(tǒng)架構(gòu)規(guī)劃
- 《納米復(fù)合材料》第2章 納米復(fù)合材料概論
- 建設(shè)工程圍擋標(biāo)準(zhǔn)化管理圖集(2022年版)
- 2022新教科版六年級(jí)科學(xué)下冊(cè)全一冊(cè)全部教案(共28節(jié))
評(píng)論
0/150
提交評(píng)論