条形码作为一种机器可识别的图形,它能快速、准确地标识某种产品或商品,在许多数据
库应用中起作很重要的作用,如超市收银、车站售票等场合。当某件物品上带有的条形码
被条码扫描器正确解读后,将会得到该物品的唯一标识字符串,通过检索数据库我们就可
以很容易知道它的一些其它属性并作相应处理。虽然在 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
- 1
- 2
- 3
- 4
- 5
前往页