联系电话:021-60706467
 
驭源云标签打印软件及管理系统,是一款集成标签设计、模板管理、供应链协同、防伪标签打印等功能的专业标签打印及管理软件。
它可以从1个用户扩展到成千上万个用户,还可延伸到本公司其他地点的工厂、仓库、以及客户及供应商,协同打印。
< /td>
如有业务意向欢迎联系我们!
电话联系:
021-60706467
栏目导航
条形码基础知识
条形码打印机知识
条码扫描器知识
产品评测
条码标签、碳带知识
条码应用
仓库管理及生产采购知识
  条码知识条形码打印机知识—VB应用程序中打印条形码的两种方法
VB应用程序中打印条形码的两种方法
2007-10-16
     条形码作为一种机器可识别的图形,它能快速、准确地标识某种产品或商品,在许多数据库应用中起作很重要的作用,如超市收银、车站售票等场合。当某件物品上带有的条形码条码扫描器正确解读后,将会得到该物品的唯一标识字符串,通过检索数据库我们就可以很容易知道它的一些其它属性并作相应处理。虽然在Internet上能找到许多免费和不免费的条形码打印控件,但是这些控件除了使用不方便外,还有一个最大的缺点:它们的打印输出不能和我们的程序共存在一个打印页面上,比如说在一个过程中,我们先向系统 Printer 中输出一些内容,然后再调用控件的条形码打印方法,最后打印的结果为两页!,如果现在我们要处理一张车票,上面不仅要打印条形码,还要有终点站和票价等信息,那么控件就变得不可用。对程序员来说,可能还是希望能了解条形码打印的原理,本文提出两种打印方法与同行们探讨。 
一、直接利用有条形码打印功能的打印机 
  有许多打印机能够直接打印条形码,但在 VB 中,我们在DOS时代熟悉的LPRINT语句已经不能再使用了,打印操作被Windows的Spool系统完全接管,输出是以“页”为单位,所有的打印输出都被Windows转换为图形发送给打印驱动程序。而要使打印机打印条形码就必须将对应的ESC序列直接发送给它,因此我们就要想办法避开Windows的Spool系统,也就是说再程序中不能使用Printer对象和Printers集合处理打印输出,在VB中要将ESC指令直接发送给打印机至少有三种方法,前两种方法是调用Windows API 函数:Escape()和SpoolFile(),第三种是最容易的方法:打开打印机端口进行二进制存取,我们主要考虑这种方法。 
  即使在Windows时代,”LPT1:”和”PRN”仍然是可用的,下面我们先作一个试验:打开一个DOS窗口,在提示符下输入COPY CON LPT1:回车,然后随便输入一些字符,最后按F6键,打印机就开始工作了,它将打印出你输入的那些字符!下面的代码演示了直接将指令和字符发送给打印机: 
Private Sub Command1_Click() 
  Dim strOut As String 
  StrOut = “这是直接发送到打印机端口的字符串” 
  ‘ 打开打印机端口,其中的”LPT1:”可能需要根据你的打印机设置而改变 
  Open “LPT1:” For Binary Access Write As #1 
  ‘ 发送给打印机,注意语句的最后一个参数必须是变量 
    Put #1, ,strOut 
    ‘ 关闭打印机端口 
    Close #1 
End Sub 
  各种打印机打印条形码的指令可能不同,比如将上面的变量 strOut赋值为: 
  strOut = Chr(28) & “P” & Chr(5) & Chr(2) & Chr(3) & Chr(3) & Chr(6) & “012345” 
  将在 AR2400 打印机上打印出内容为”012345”的 CODE39 格式的条形码。具体的打印控制指令请参考打印机手册。 
  用这种方法的缺点:一是过份依赖打印机本身,而有条形码打印功能的打印机通常要比普通打印机昂贵,这会使构造应用系统不够经济;二是所有的打印输出都必须你自己处理,比如打印定位就很浪费时间。 
二、利用画图方式输出到普通打印机 
  条形码编码规则不外乎是通过线条和线条间间隙的宽窄不同来表示二进制的1和0,只要我们了解了条形码的编码规则,完全可以用画图的方式在普通打印机上得到可以接受的效果。下面我们就使用最普遍的CODE39码进行讨论。 
  CODE39码的编码规则是: 
1、 每五条线表示一个字符; 
2、 粗线表示1,细线表示0; 
3、 线条间的间隙宽的表示1,窄的表示0; 
4、 五条线加上它们之间的四条间隙就是九位二进制编码,而且这九位中必定有三位是1,所以称为39码; 
5、 条形码的首尾各一个*标识开始和结束 
  在我们的程序中,给常用的字符都进行编码,解读时先取线条粗细,再取间隙宽窄,如: 
  上图中的字符*就可以解读为 001101000,字符3解读为 110000100 
  下面就是我们给出的子过程: 
’ 将字符串 strBarCode 对应的条形码输出到缺省打印机 
Private Sub PrintBarCode( _ 
  ByVal strBarCode As String, _ 
  Optional ByVal intXPos As Integer = 0, _ 
  Optional ByVal intYPos As Integer = 0, _ 
  Optional ByVal intPrintHeight As Integer = 10, _ 
  Optional ByVal bolPrintText As Boolean = True _ 

’ 参数说明: 
’ strBarCode    - 要打印的条形码字符串 
’ intXPos, intYPos - 打印条形码的左上角坐标(缺省为(0,0),坐标刻度为:毫米) 
’ intHeight     - 打印高度(缺省为一厘米,坐标刻度为:毫米) 
’ bolPrintText   - 是否打印人工识别字符(缺省为true) 
’ "0"-"9","A-Z","-","%","$"和"*" 的条码编码格式,总共 40 个字符 
Static strBarTable(39) As String 
’ 初始化条码编码格式表 
  strBarTable(0) = "001100100"   ’ 0 
  strBarTable(1) = "100010100"   ’ 1 
  strBarTable(2) = "010010100"   ’ 2 
  strBarTable(3) = "110000100"   ’ 3 
  strBarTable(4) = "001010100"   ’ 4 
  strBarTable(5) = "101000100"   ’ 5 
  strBarTable(6) = "011000100"   ’ 6 
  strBarTable(7) = "000110100"   ’ 7 
  strBarTable(8) = "100100100"   ’ 8 
  strBarTable(9) = "010100100"   ’ 9 
  strBarTable(10) = "100010010"  ’ A 
  strBarTable(11) = "010010010"  ’ B 
  strBarTable(12) = "110000010"  ’ C 
  strBarTable(13) = "001010010"  ’ D 
  strBarTable(14) = "101000010"  ’ E 
  strBarTable(15) = "011000010"  ’ F 
  strBarTable(16) = "000110010"  ’ G 
  strBarTable(17) = "100100010"  ’ H 
  strBarTable(18) = "010100010"  ’ I 
  strBarTable(19) = "001100010"  ’ J 
  strBarTable(20) = "100010001"  ’ K 
  strBarTable(21) = "010010001"  ’ L 
  strBarTable(22) = "110000001"  ’ M 
  strBarTable(23) = "001010001"  ’ N 
  strBarTable(24) = "101000001"  ’ O 
  strBarTable(25) = "011000001"  ’ P 
  strBarTable(26) = "000110001"  ’ Q 
  strBarTable(27) = "100100001"  ’ R 
  strBarTable(28) = "010100001"  ’ S 
  strBarTable(29) = "001100001"  ’ T 
  strBa
上篇文章: 无线局域网的标准与应用
下篇文章: SATO条码打印机CT系列常见问题例集
   相关文章 (  关键字:条形码  )
   热点信息

Copyright©2008-2025上海驭源信息科技有限公司 沪ICP备08020661号-3 
 条码打印机   
 条码扫描枪   
 数据采集器   
 无线局域网   
 不干胶标签   
 条码碳带   
 条码仓库管理软件(条码仓库管理系统)   
 驭源标签打印软件   
 条码生产管理软件(条码生产管理系统)   
 防伪防窜货条码管理系统   
 产品质量跟踪条码追溯系统   
 条形码系统与ERP系统集成   
 二维条码在物流中的应用   
 大型超市仓库中的条码应用   
 人事考勤条码系统   
 条形码基础知识   
 条形码打印机知识   
 条码扫描器知识   
 产品评测   
 条码标签、碳带知识    
 条码应用   
 仓库管理及生产采购知识   
 下载中心   
 库存日报表   
 库存月报表   
 用料分析报表   
 用料计划报表   
 材料编号表   
 领用、退料记录报表   
 盘点记录报表   
 库存报表   
 半成品记录报表   
 呆废料记录报表   
 关于我们   
 联系我们   
 网站地图