ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:301KB ,
资源ID:9452307      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9452307.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(一维条形码生成与识别技术.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

一维条形码生成与识别技术.doc

1、一、引言 1 二、EAN-13条形码简介 1 1、 EAN-13码的格式 2 一维条形码生成与识别技术 一、引言    条形码(简称条码)技术是集条码理论、光电技术、计算机技术、通信技术、条码印制技术于一体的一种自动识别技术。条形码是由宽度不同、反射率不同的条(黑色)和空(白色),按照一定的编码规则编制而成,用以表达一组数字或字母符号信息的图形标识符。条形码符号也可印成其它颜色,但两种颜色对光必须有不同的反射率,保证有足够的对比度。条码技术具有速度快、准确率高、可靠性强、寿命长、成本低廉等特点,因而广泛应用于商品流通、工业生产、图书管理、仓储标证管理、信息服务等领域。

2、 二、EAN-13条形码简介 一维条码主要有EAN和UPC两种,其中EAN码是我国主要采取的编码标准。EAN是欧洲物品条码(European Article Number Bar Code)的英文缩写,是以消费资料为使用对象的国际统一商品代码。只要用条形码阅读器扫描该条码,便可以了解该商品的名称、型号、规格、生产厂商、所属国家或地区等丰富信息。 EAN通用商品条码是模块组合型条码,模块是组成条码的最基本宽度单位,每个模块的宽度为0.33毫米。在条码符号中,表示数字的每个条码字符均由两个条和两个空组成,它是多值符号码的一种,即在一个字符中有多种宽度的条和空参与编码。条和空分别由1~4个同一

3、宽度的深、浅颜色的模块组成,一个模块的条表示二进制的“1”,一个模块的空表示二进制的“0”,每个条码字符共有7个模块。即一个条码字符条空宽度之和为单位元素的7倍,每个字符含条或空个数各为2,相邻元素如果相同,则从外观上合并为一个条或空,并规定每个字符在外观上包含的条和空的个数必须各为2个,所以EAN码是一种(7,2)码。 EAN条码字符包括0~9共10个数字字符,但对应的每个数字字符有三种编码形式,左侧数据符奇排列、左侧数据符偶排列以及右侧数据符偶排列。这样十个数字将有30种编码,数据字符的编码图案也有三十种,至于从这30个数据字符中选哪十个字符要视具体情况而定。在这里所谓的奇或偶是指所含二

4、进制“1”的个数为偶数或奇数[2]。 2.1 EAN-13码的格式 EAN条形码有两个版本,一个是13位标准条码(EAN-13条码),另一个是8位缩短条码(EAN-8条码)。EAN-13条码由代表13位数字码的条码符号组成,如图1所示[1]。 图表 1 前2位( ~ ,欧共体12国采用)或前3位( ~ ,其他国家采用)数字为国家或地区代码,称为前缀码或前缀号。例如:我国为690,日本为49*,澳大利亚为93*等(其中的“*”表示0~9的任意数字)。前缀后面的5位( ~ )或4位( ~ )数字为商品制造商的代码,是由该国编码管理局审查批准并登记注册的。厂商代码后面的5位( ~ )数字

5、为商品代码或商品项目代码,用以表示具体的商品项目,即具有相同包装和价格的同一种商品。最后一位数字为校验码,用以提高数据的可靠性和校验数据输入的正确性,校验码的数值按国际物品编码协会规定的方法计算。 2.2 EAN-13条形码的构成    EAN-13条形码的构成如图2所示。 左侧 空白 起始符 左侧数据符 6位数字 中间 分隔符  右侧数据符   6位数字 校验符 1位数字 终止符 右侧空 白   图2 典型EAN-13条形码的构成   (1)左、右侧空白:没有任何印刷符号,通常是空白,位于条码符号的两侧。用以提示阅读,准备扫描条码符号,共有18个模块组成(其

6、中左侧空白不得少于9个模块宽度),一般左侧空白11个模块,右侧空白7个模块。   (2)起始符:条形码符号的第一位字符是起始符,它特殊的条空结构用于识别条形码符号的开始。由3个模块组成。   (3)左侧数据符:位于中间分隔符左侧,表示一定信息的条码字符,由42个模块组成。   (4)中间分隔符:位于条码中间位置的若干条与空,用以区分左、右侧数据符,由5个模块组成。   (5)右侧数据符:位于中间分隔符右侧,表示一定信息的条码字符,由35个模块组成。   (6)条码校验符:表示校验码的条码字符,用以校验条码符号的正确与否,由7个模块组成。   (7)终止符:条形码符号的最后一位字符是

7、终止符,它特殊的条空结构用于识别条形码符号的结束。由3个模块组成。   一个条形码图案是数条黑色和白色线条组成,如图3所示。   图3 条形码图案实例    图案分成五个部分,从左至右分别为:起始部分、第一数据部分、中间部分、第二数据部分和结束部分。   (1)起始部分:由11条线组成,从左至右分别是8条白线,一条黑线,一条白线和一条黑线。   (2)第一数据部分:由42条线组成,是按照一定的算法形成的,包含了左侧数据符( ~ )这些数字的信息。   (3)中间部分:由5条线组成,从左到右依次是白线,黑线,白线,黑线,白线。   (4)第二数据部分:由42条线组成,是按照一定

8、的算法形成的,包含了右侧数据符( ~ ) 这些数字的信息。   (5)结尾部分:由11条线组成,从左至右分别是一条黑线,一条白线和一条黑线,8条白线。   2.3 EAN-13的编码规则    EAN-13的编码是由二进制表示的。它的数据符、起始符、终止符、中间分隔符编码见表1。 表1 EAN-13编码   字符   二进制表示   左侧数据符   右侧数据符 奇性字符(A组) 偶性字符(B组) 偶性字符(C组) 0 0001101 0100111 1110010 1 0011001 0110011 1100110 2 0010011 0011011

9、 1101100 3 0111101 0100001 1000010 4 0100011 0011101 1011100 5 0110001 0111001 1001110 6 0101111 0000101 1010000 7 0111011 0001001 1000100 8 0110111 0001001 1001000 9 0001011 0010111 1110100 起始符 101 中间分隔符 1010 终止符 101    左侧数据符有奇偶性,它的奇偶排列取决于前置符,所谓前置符是国别识别码的第一位 ,该

10、位以消影的形式隐含在左侧六位字符的奇偶性排列中,这是国际物品编码标准版的突出特点。前置符与左侧六位字符的奇偶排列组合方式的对应关系见表2,实际上由表2这种编码规定可看出, 与这种组合方式是一一对应固定不变的。例如:中国的国别识别码为“690”,因此它的前置符为“6”,左侧数据符的奇偶排列为 “OEEEOO”[3],“E”表示偶字符,“O”表示奇字符。   表2 左侧数据符奇偶排列结合方式  前置符   左侧数据符奇、偶排列  前置符   左侧数据符奇、偶排列   0   OOOOOO   5   OEEOOE   1   OOEOEE   6   OEEEOO   

11、2   OOEEOE   7   OEOEOE   3   OOEEEO   8   OEOEEO   4   OEOOEE   9   OEEOEO   2.4 EAN-13条形码的校验方法    校验码的主要作用是防止条形码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息。作为确保商品条形码识别正确性的必要手段,条形码用户在标志设计完成后,代码的正确与否直接关系到用户的自身利益。对代码的验证,校验码的计算是标志商品质量检验的重要内容之一,应该谨慎严格,需确定代码无误后才可用于产品包装上。    下面是EAN-13条形码的校验码验算方法,步骤如下[

12、3]:   (1)以未知校验位为第1位,由右至左将各位数据顺序排队(包括校验码);   (2)由第2位开始,求出偶数位数据之和,然后将和乘以3,得积 ;   (3)由第3位开始,求出奇数位数据之和,得 ;   (4)将 和 相加得和 ;   (5)用 除以10,求得余数,并以10为模,取余数的补码,即得校验位数据值 ;   (6)比较第1位的数据值与C的大小,若相等,则译码正确,否则进行纠错处理。   例如,设EAN-13码中数字码为6901038100578(其中校验码值为8),该条码字符校验过程为:, , = + =82, 除以10的余数为2,故 ,译码正确。   3 EA

13、N-13条形码的生成   条形码的生成方法如下[3]:   n    (1)由 根据表3产生和 ~ 匹配的字母码,该字母码有6个字母组成,字母限于A和B。   表3 映射表 0 AAAAAA 5 ABBAAB 1 AABABB 6 ABBBAA   2 AABBAB   7 ABABAB   3 AABBBA   8 ABABBA   4 ABAABB   9 ABBABA   (2   0 AAAAAA   5 ABBAAB   1 AABABB   6 ABBBAA   2 AABBAB   7 ABABAB   3

14、 AABBBA   8 ABABBA   4 ABAABB   9 ABBABA   )将 ~ 和 产生的字母码按位进行搭配,来产生一个数字--字母匹配对。并通过查表4生成条形码的第一数据部分。   表4 数字--字母映射表 数字-字母匹配对 二进制信息 数字-字母匹配对 二进制信息   0A   0001101   0B   0100111   0C   1110010   1A   0011001   1B   0110011   1C   1100110   2A   0010011   2B   0011011   2C  

15、 1101100   3A   0111101   3B   0100001   3C   1000010   4A   0100011   4B   0011101   4C   1011100   5A   0110001   5B   0111001   5C   1001110   6A   0101111   6B   0000101   6C   1010000   7A   0111011   7B   0010001   7C   1000100   8A   0110111   8B   0001001  

16、 8C   1001000   9A   0001011   9B   0010111   9C   1110100   (3)将 ~ 和C进行搭配,并通过查表4生成条形码的第二数据部分。   (4)按照两部分数据绘制条形码:1对应黑线,0对应白线。   例如,假设一个条形码的数据码为:6901038100578。 =6,对应的字母码为ABBBAA, ~ 和 产生的字母码按位进行搭配结果为9A、0B、1B、0B、3A、8A,查表4得第一部分数据的编码分别为0001011、0100111、0110011、0100111、0111101、0110111; ~ 和C进行搭配结果为

17、1C、0C、0C、5C、7C、8C,查表4得第二部分数据的编码分别为1100110、1110010、1110010、1001110、1000100、1001000。   4 条形码识别   4.1条码识别的基本原理    EAN-13是一种(7, 2)码,即每个字符的总宽度为7个模块宽,交替由两个条和两个空组成,而每个条空的宽度不超过4个模块,如图4所示。   图片看不清楚?请点击这里查看原图(大图)。   图4  EAN-13条码宽度的定义   图4中 表示当前字符中四个相邻条、空的宽度, 是一个字符的宽度,满足:, 为整数 ;且 。    用 表示当前字符单位模块的宽度,

18、则 。令 , 。由 的值可以得到编码。例如:若 ,且条码的排列为条—空—条—空,则可知当前字符的编码为1000100,是右侧偶字符7。 ,且条码的排列为空—条—空—条,则可知当前字符的编码为0001011,是左侧偶字符9。    由于条码印刷和图像采集设备的限制,在图像采集时边缘部分还存在着半像素问题,实际扫描后得到的图像会出现一定程度的边缘模糊,尤其当条码密度较大,条空间距较小时边缘模糊更为明显。边缘出现模糊时,将导致寻找条空边缘时产生一定偏差,当这个偏差超过半个模块宽度时,便会出现误码。如果再考虑到流通过程中磨损、水渍浸泡等因素引起的图像缺陷,在这种情况下如果用边缘检测的方法确定条空序列

19、会大大降低条码的识别率。本文采用的方法为:以起始模块的中心为起始中心、一个单位模块宽度为间距来检测条空序列。   4.2 条形码扫描方向的判别    为了能够正确地解译条形码,在解译条形码符号所表示的数据之前,需要先进行条形码扫描方向的判别,EAN-13的起始字符和终止字符的编码结构都是“101”,只能通过它进行码制的判别(对于多种条码识别的时候,其它码制的条码起始字符和终止字符都不是“101”),但是不能通过起始字符和终止字符来判别它的扫描方向。由EAN-13码的编码结构可知,它的右侧字符为全偶,而左侧字符的奇偶顺序由前置符决定,没有全偶的,从而可以利用此原理来确定EAN-13码的扫描方

20、向。如果扫描到的前6个字符为全偶,即为反向扫描,否则为正向扫描。   4.3条形码字符的判别方法    从上述条码识别原理知,它的逻辑值可以通过和单位模块比较判别。这种方法对于印刷质量很好、没有缺陷的条码很适用,但是对于条码印刷质量存在缺陷,则不能正确地解译。因此本文提出了一种解决此类问题的较好方法,即相似边距离测量方法。   图5条码字符宽度示图   相似边距离就是相邻条和空的宽度之和,如图5中的 ,定义 的归一化值 和 如下:          表5列出了正向译码时EAN-13条码字符值与归一化值 的对应关系,表6列出了反向译码时EAN-13条码字符值与归一化值 的对应关系

21、其中“E”表示偶字符,“O”表示奇字符。   表5 EAN-13条码字符值与归一化值的对应关系(正向译码)   2   3   4   5     2   O6   EO   O4   E3   3   E9   O2或O8   E1或E7   O5   4   O9   E2或E8   O1或O7   E5   5   E6   O0   E4   O3   表6 EAN-13条码字符值与归一化值的对应关系(反向译码)   2   3   4   5   2   E6   O0

22、   E4   O3   3   O9   E2或E8   O1或O7   E5   4   E9   O2或O8   E1或E7   O5   5   O6   E0   O4   E3    表7和表8分别为正向译码和反向译码时EAN-13条码编码与归一化值的对应关系。   表7 EAN-13条码编码与归一化值的对应关系(正向译码)   字符   值   左奇字符   编码   左偶字符   编码   右偶字符   编码   0   1   2   3   4   5   6   7   8

23、   9   0001101   0011001   0010011   0111101   0100011   0110001   0101111   0111011   0110111   0001011   (5,3)   (4,4)   (3,3)   (5,5)   (2,4)   (3,5)   (2,2)   (4,4)   (3,3)   (4,2)   0100111   0110011   0011011   0100001   0011101   0111001   0000101   0010001   0001

24、001   0010111   (2,3)   (3,4)   (4,3)   (2,5)   (5,4)   (4,5)   (5,2)   (3,4)   (4,3)   (3,2)   1110010   1100110   1101100   1000010   1011100   1001110   1010000   1000100   1001000   1110100   (5,3)   (4,4)   (3,3)   (5,5)   (2,4)   (3,5)   (2,2)   (4,4)   (3,3)   (

25、4,2)   表8 EAN-13条码字符值与归一化值的对应关系(反向译码)   字符   值   左奇字符   编码   左偶字符   编码   右偶字符   编码   0   1   2   3   4   5   6   7   8   9   1011000   1001100   1100100   1011110   1100010   1000110   1111010   1101110   1110110   1101000   (2,3)   (3,4)   (4,3)   (2,5)   (5,

26、4)   (4,5)   (2,2)   (3,4)   (4,3)   (3,2)   1110010   1100110   1101100   1000010   1001110   1001110   1010000   1000100   1001000   1110100   (5,3)   (4,4)   (3,3)   (5,5)   (2,4)   (3,5)   (2,2)   (4,4)   (3,3)   (4,2)   0100111   0110011   0011011   0100001   00111

27、01   0111001   0000101   0010001   0001001   0010111   (2,3)   (3,4)   (4,3)   (2,5)   (5,4)   (4,5)   (5,2)   (3,4)   (4,3)   (3,2)    由表5~8可以看出,条形码编码和归一化值在多数情况下呈现一一对应的关系,只要确定了归一化值就能确定字符值,但是有四种情况例外。以正向译码为例,在表6中,左侧奇字符和右侧偶字符1, 7归一化值均为44,左侧奇字符和右侧偶字符2, 8归一化值均为33,左侧偶字符1, 7归一化值均为34,左侧偶字符2

28、 8归一化值均为43,这几种情况可以根据字符的条空宽度 进一步判别。表9为1728字符标准条空宽度值,其中字符上有“-”的对应条,否则对应空。   表9 1728字符标准条空宽度值      字符值   左奇字符编码   条空宽度值   左偶字符编码   条空宽度值   右偶字符编码   条空宽度值   1   0011001     0110011   1100110   2   0010011   0011011   1101100   7   0111011   0010001   1000100   8

29、  0110111   0001001   1001000    根据表9中各字符条空宽度的特点可知:①对于左侧奇字符、右侧偶字符1和7,可通过比较 与 来判别,若 > ,则为字符1,反之为7;②对于左侧奇字符、右侧偶字符2和8,可通过比较 与 来判别,若 > ,则为字符8,反之为2;③对于左侧偶字符1和7,可通过比较 与 来判别,若 > ,则为字符7,反之为1;④对于左侧偶字符2和8,可通过比较 与 来判别,若 > ,则为字符2,反之为8。    采用相似边距离归一化的条码识别方法,当条码质量存在缺陷使得实际测量值和条码应该具有的理论值有较大偏差时,仍能正确解译。例如对于

30、左侧奇字符“0”进行译码,该字符的四个元素宽度的理论值应该是 ,但是由于印刷等原因的影响,实际上测量值是 。如果只根据元素宽度的测量值进行译码,那么这四个元素的宽度测量值四舍五入取整后分别为3、3、1、1,从而造成译码错误。若采取相似边距离归一化的条码识别方法进行译码,此时 ,由表7知字符编码为左侧奇字符“0”。可见利用相似边距离归一化的条码识别方法判别字符值,可以得到比较满意的效果。   4.4纠错处理    采用相似边距离归一化的译码方法能够在一定程度上消除条、空误差对译码识别的影响。当系统误差特别是条码印刷误差较大导致 、 改变时,译码将出错。因此译码软件应具有一定的纠错能力,以减少

31、条空宽度值不精确的影响,提高条码识别率[1]。纠错主要从以下两方面进行:    (1)如果条码字符的 或 在临界位置,当条或空的宽度有误差时,就会导致 或 的整数值增1或减1。如果 和 中只有一个发生错误,则引起该字符的奇偶性、字符值的改变,如果 和 都出错,则引起该字符值的改变,但奇偶性未变。实际情况中第一种现象出现的概率比第二种情况大得多,因此本文主要对第一种情况进行纠错。由表1和表2可知,右侧字符为全偶字符排列,左侧字符有10种奇偶排列,这11种排列构成有效的排列集合,把所译的字符串奇偶排列与有效的奇偶排列对比,判断是否为排列集合成员。若是,所译的字符串不作任何处理;若不是,所译码出错

32、并找出 或 哪个处在临界值,修改它的归一化整数值,这样可实现纠错。    (2)当字符数据为2、8、1、7时,由于条码宽度不精确导致误码,即2判成8、1判成7,或反之。分析这种误码相对于校验位的差值有一定规律,因此可利用此规律进行纠错。由EAN-13校验方法知:当偶数位上有2错译成8或1错译成7时,计算得到的实译值与校验值差-8或2,反之8错译成2或7错译成1时,计算得到的实译值与校验值差8或-2;当奇数位上有2错译成8或1错译成7时,计算得到的实译值与校验值差-6或4,反之,8错译成2或7错译成1时,计算得到的实译值与校验值差6或-4;当然别的字符译错也可能出现这些差值,但几率很小,可以

33、不予考虑。这样若程序校验没通过,可加一个判断,根据差值判断其属于上述哪种情况,找出出错的字符并纠正。   5 程序实现   5.1 应用Visual C++生成条形码图像   5.1 1 创建工程文件   (1)打开VC++ 6.0,点击“File”菜单的“New”菜单项,在出现的界面中选定“Projects”栏,点击“MFC APPWizard(exe)”,工程文件名为Generator。按“确定”按纽,进入MFC APPWizard。   (2)在MFC APPWizard第一步选择Single document文档类型。第二步和第三步按默认方式。第四步中去掉“Docking t

34、oolbar”、“Initial status bar”、“Printing and print preview”前面的“√”,即不选该三项。然后点击“Advanced…”,在出现的界面中填写“File extension”为“bmp”。第五步和第六步按默认方式。最终生成工程Generator。   (3)修改菜单。①增加“操作”菜单;②删除“编辑”菜单;③修改“帮助”菜单。参见工程文件。   (4)插入两个对话框(IDD_WELCOME、IDD_GIVECODE)并修改这两个对话框。参见工程文件。   5.1.2 类代码编制   (1)在Generator工程中增加新类CWelcom

35、eDlg,类型为Generic Class。   (2)在Generator工程中增加新类CGiveCodeDlg,类型为Generic Class。   (3)点击“View”菜单的“ClassWizard”菜单项,在出现的界面中,选择Class Name为“, CGeneratorView”,增加成员函数,Object Ids、Messages、Member functions分别为:①ID_EDIT_GIVE、COMMAND、ON_ID_EDIT_GIVE:COMMAND;②ID_FILE_SAVE、COMMAND、ON_ID_FILE_SAVE。   (4)给类Generator

36、View添加成员变量,参见源程序Generatorview.h。   (5)打开文件GeneratorView.h,增加代码,参见源程序。打开文件GeneratorView.cpp,增加代码,参见源程序。   (6)点击“View”菜单的“ClassWizard”菜单项,在出现的界面中,选择Class Name为“CWelcomeDlg”,增加成员函数,Object Ids、Messages、Member functions分别为:IDOK、BN_CLICKED、OnOK()。   (7)点击“View”菜单的“ClassWizard”菜单项,在出现的界面中,选择Class Name为“

37、CMainFrame”,增加成员函数,Object Ids、Messages、Member functions分别为:CmainFrame、WM_CREATE、OnCreate()。   (8)打开文件MainFrame.cpp,增加“#include "WelcomeDlg.h"”,输入代码,参见源程序。   (9)打开GeneratorView.cpp源文件,增加语句“#include "GiveCodeDlg.h" ,#inc, lude "GiveSizeDlg.h", #include ,#include ”,输入成员函数代码,参见源程序。  

38、 (10)编译、连接、运行。   5.2 应用Visual C++识别条形码图像   5.2.1创建工程文件   (1)打开VC++ 6.0,点击“File”菜单的“New”菜单项,在出现的界面中选定“Projects”栏,点击“MFC APPWizard(exe)”,工程文件名为Recognizor。按“确定”按纽,进入MFC APPWizard。   (2)MFC APPWizard第一步选择Single document文档类型。第二步和第三步按默认方式。第四步中去掉“Docking toolbar”、“Initial status bar”、“Printing and prin

39、t preview”前面的“√”,即不选该三项。然后点击“Advanced…”,第四步、第五步和第六步按默认方式。最终生成工程Recognizor。   (3)修改菜单。①修改“文件”菜单;②删除“编辑”菜单;③修改“帮助”菜单。参见工程文件。   (4)插入一个对话框(IDD_WELCOME),参见工程文件。   5.2.2 类代码编制   (1)在Recognizor工程中增加新类CWelcomeDlg,类型为Generic Class。   (2)给类RecognizorView添加成员变量,参见源程序Recognizorview.h。   (3)点击“View”菜单的“Cl

40、assWizard”菜单项,在出现的界面中,选择Class Name为“CRecognizorView”,增加成员函数,Object Ids、Messages、Member functions分别为:ID_FILE_OPEN、COMMAND、ON_ID_FILE_OPEN:COMMAND;   (4)点击“View”菜单的“ClassWizard”菜单项,在出现的界面中,选择Class Name为“CMainFrame”,增加成员函数,Object Ids、Messages、Member functions分别为:CmainFrame、WM_CREATE、ON_WM_CREATE;   (

41、5)打开文件MainFrame.cpp,增加“#include "WelcomeDlg.h"”,增加代码,参见源程序。   (6)打开RecognizorView.cpp源文件,输入成员函数,参见源程序。   (7)编译、连接、运行。   6 结论    本文介绍了一维条码格式、编码规则等技术特点,以及条码图像生成与识别的基本原理,并用Visual C++实现了条码图像生成和具有一定纠错能力的条码识别软件。尽管关于一维条码识别的设备很多,但这些都是针对于光电识别的。光电识别设备只能识别印刷质量好的条码,而通过图像处理技术辨识一维条码能对质量差的条码达到好的识别效果,因此它明显优于光电识别设备。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服