CODE128码在PB中的实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CODE128码在PB中的实现

CODE128码在PB中的实现 在信息系统开发时通常有用户要求能够打印条码,如CODE128码,使用专门的条码打印程序固然可能,但难以与你的信息系统接轨,虽然也有支持数据源为数据的条码打印程序。通常有几种方法实现条码的打印:一、直接向打印机发送控制命令,二、使用条码字体,三、印刷。各有优劣,使用条码字体的方法无疑是最简单、经济的做法,如果对条码识别精确度不高(比如使用下面我提供的方法由最大分辨率为200dpi的条码打印机打印出来的条码在条码检测仪上被评为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 作者:康剑民 邮件地址:kangjianmin@139.com 写作日期:2009-02-18 本文来自CSDN

文档评论(0)

gk892289 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档