当前位置: 代码迷 >> PB >> 请教大家都用什么条码字体,而且识别率倍高
  详细解决方案

请教大家都用什么条码字体,而且识别率倍高

热度:197   发布时间:2016-04-29 10:30:45.0
请问大家都用什么条码字体,而且识别率倍高!
我的问题是:
  我现在用的是一种条码生成控件,生成条码图片打印,条码由13位纯数字组成,128码字体,用激光扫描枪扫描识别率几乎100%,但是在另外一种固定内置扫描器的仪器上扫描时,条码识别率为60%左右,请问有何识别率高的字体。在pb开发程序里如何应用和设置,谢谢

------解决方案--------------------
一般用code128字体来实现

Delphi(Pascal) code
CODE128码在PB中的实现在信息系统开发时通常有用户要求能够打印条码,如CODE128码,使用专门的条码打印程序固然可能,但难以与你的信息系统接轨,虽然也有支持数据源为数据的条码打印程序。通常有几种方法实现条码的打印:一、直接向打印机发送控制命令,二、使用条码字体,三、印刷。各有优劣,使用条码字体的方法无疑是最简单、经济的做法,如果对条码识别精确度不高(比如使用下面我提供的方法打印出来的条码在条码检测仪上被评为F级即最低级),建议试试条码字体的方法。以下代码可实现在PB中将源字符串转为可打印的CODE128码字符串。为了能正确显示条码并能打印,你必须先安装CODE128码字体并将显示为CODE128码的对象的字体设置为CODE128码。例如,在PB数据窗口对象中创建一个表达式类似“f_getcode128(要显示成CODE128码的栏位)”的计算列,字体设置为CODE128码。F_getcode128实现的是CODE128B版本,你可以根据CODE128的编码原理实现A版本和C版本。要注意的是,由于CODE128码字符串包含不可正常显示的字符,你必须使用支持Unicode码的PB版本,如PB10以上。附CODE128码在PB中的实现源代码。/*******************************************************************函数名称:f_getcode128()参数:     as_sourcetext string 源字符串返回值:  string 转成code128码后可打印的字符串功能描述:取code128码字符串创建人:  康剑民创建日期:2008-12-10版本号:  V1.0备注:要在PB中正常打印code128码字符串,必须使用PB10以上(支持Unicode码)*******************************************************************///CODE128条码基础知识//CODE128有三个版本//CODE128A: 标准数字和字母, 控制符, 特殊字符//CODE128B: 标准数字和字母, 小写字母, 特殊字符//CODE128C: [00]-[99]的数字对集合, 共100个//本函数采用CODE128B版本//条码由开始位、数据位、校验位、停止位组成//计算过程://1.取各字符ASC码乘以字符序号之和(以ASC=32为分界点,大于32减32,小于32加64)//2.计算校验码//3.组合条码:开始位+数据位+校验位+停止位int li_asc_total = 104 int li_asc_tmp,ichar lc_start=char(204)//采用CODE128B版本char lc_stop=char(206)int li_check_digitstring ls_check_digit//1.取各字符ASC码乘以字符序号之和(以ASC=32为分界点,大于32减32,小于32加64)For i = 1 To len(as_sourcetext)     li_asc_tmp = Asc(mid(as_sourcetext,i, 1))      If li_asc_tmp >= 32 Then           li_asc_total = li_asc_total + (li_asc_tmp - 32) * i      Else           li_asc_total = li_asc_total + (li_asc_tmp + 64) * i      End If Next //2.计算校验码li_check_digit = mod(li_asc_total,103)If li_check_digit >= 95 Then//特殊字符    li_check_digit = li_check_digit + 100Else      li_check_digit = li_check_digit + 32 end ifls_check_digit = char(li_check_digit) //3.组合条码:开始位+数据位+校验位+停止位Return lc_start + as_sourcetext + ls_check_digit  + lc_stop
------解决方案--------------------
code39字体 或 barcodex.ocx控件, 100%识别,当然你打印机不好那就没解了.
------解决方案--------------------
只要是常用的码都能很快识别,你肯定拉伸了,或打印的条码不清晰。扫描枪的好坏当然也有关系,红外的用用还可以,想要快又准的就用激光的,我这里每天都用。
  相关解决方案