php code128扫码不能识别,求助excel中code128字体打印出的条码扫描枪读不出

下面是我在一个用PB开发的程序中用字体实现条形码打印的,转化函数

/*******************************************************************

函数名称:f_getcode128A()

参数:           as_sourcetext string 源字符串

返回值:    string 转成code128A码后可打印的字符串

功能描述:取code128码字符串

创建人:   JF

创建日期:2009-3-11

版本号:  V1.0

备注:要在PB中正常打印code128码字符串,必须使用PB10以上(支持Unicode码)

*******************************************************************/

//CODE128条码基础知识:

//        CODE128有三个版本

//        CODE128A: 标准数字和字母, 控制符, 特殊字符

//        CODE128B: 标准数字和字母, 小写字母, 特殊字符

//        CODE128C: [00]-[99]的数字对集合, 共100个

//本函数采用CODE128A版本

//条码由 开始位 + [FNC1(为EAN128码时加)] + 数据位 + 检验位 + 结束位 组成

//Code128A检验位计算:(开始位对应的ID值 + 每位数据在整个数据中的位置×每位数据对应的ID值)% 103

//计算过程:

//1.取各字符ASC码乘以字符序号之和(以ASC=32为分界点,大于32减32,小于32加64)

//2.计算校验码

//3.组合条码:开始位+数据位+校验位+停止位

int li_asc_total = 103

int li_asc_tmp,i

char lc_start=char(203)//采用CODE128A版本 ID >95 则ID+100

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值