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

hxhe03 2009-08-03 06:38:10
我的问题是:
我现在用的是一种条码生成控件,生成条码图片打印,条码由13位纯数字组成,128码字体,用激光扫描枪扫描识别率几乎100%,但是在另外一种固定内置扫描器的仪器上扫描时,条码识别率为60%左右,请问有何识别率高的字体。在pb开发程序里如何应用和设置,谢谢
...全文
1258 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jalor_6 2009-08-04
  • 打赏
  • 举报
回复
只要是常用的码都能很快识别,你肯定拉伸了,或打印的条码不清晰。扫描枪的好坏当然也有关系,红外的用用还可以,想要快又准的就用激光的,我这里每天都用。
zhanghua_1228 2009-08-04
  • 打赏
  • 举报
回复
你生成的图片最好不要拉伸(横向的),要拉伸也要安1.5,2这个比例来拉伸,就应该没问题
gdstx 2009-08-03
  • 打赏
  • 举报
回复
code39字体 或 barcodex.ocx控件, 100%识别,当然你打印机不好那就没解了.
hxhe03 2009-08-03
  • 打赏
  • 举报
回复
请问楼上用什么格式,该仪器能识别39码和128码,就我所知,而我测试效果都不好
WorldMobile 2009-08-03
  • 打赏
  • 举报
回复
一般用code128字体来实现



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,i
char lc_start=char(204)//采用CODE128B版本
char lc_stop=char(206)
int li_check_digit
string 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 + 100
Else
li_check_digit = li_check_digit + 32
end if
ls_check_digit = char(li_check_digit)
//3.组合条码:开始位+数据位+校验位+停止位
Return lc_start + as_sourcetext + ls_check_digit + lc_stop


wag_enu 2009-08-03
  • 打赏
  • 举报
回复
应该不是字体问题.
换一种条码格式试一下.
还有,要看一下那种"固定内置扫描器"能识别的有哪些条码格式.

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧