pb控制打印机

在使用连续纸打印数据窗口的情况下,需要定制打印的页长,以保证打印机走纸正确,不用人工干预,实现连续打印。在PB中须调用外部函数来自定义纸张长度,比较繁琐。本文介绍一种直接对打印机的控制方法,简单实现对页长的设定。

 

---- 一、 预备知识

 

---- 计算机与打印机的通讯使用ASCII码进行,其中标准ASCII码包括可打印字符及非打印字符(控制码),打印机使用控制码来定制打印机。大多数打印机指令使用控制码escape作为其指令序列的第一个序列码。下面介绍本文用到的几个指令码序列:

 

设置换行量(行距)1/8 英寸

ASCII码 ESC 0

十进制码 27 48

 

设置以行为单位的页长

ASCII码 ESC C n

十进制码 27 67 n

其中n 为每页行数范围(1-127)

 

---- 二、 PB中控制码的传送及定制页长的实现

 

---- 在PB中通过函数Printsend(printjobnumber,string,{zerochar})来实现向打印机发送控制码。各参数定义如下:

 

printjobnumber: 由printjob()函数返回的打印作业号;

string:        控制字符串,使用ASCII码;

zerochar:      用来替代string中的数字0;

 

---- 由于字符串中,0终止字符串,如果string 中包含0,则需利用其他字符来表示0,参数zerochar即为此用途而设,当PB发送控制字符串给打印机时,把替代的字符zerochar转化为0。

 

---- 下面是具体的完成定制页长打印数据窗口的程序(定制页长为2.75英寸):

 

long ll_job

dw_print.reset()

ll_job = printopen()

if ll_job = -1 then

messagebox(gs_title,"打印机未准备好")

return

end if

//定制行距1/8英寸

PrintSend(ll_job, CHAR(27)+CHAR(48))

//设定页长22行

PrintSend(ll_job, CHAR(27)+CHAR(67)+CHAR(22))

printdatawindow(ll_job,dw_print)

printclose(ll_job)

 

通过ESC指令集来控制。

具体方法: ESC_D_M(M为数值)

 

long ll_job

dw_print.reset()

ll_job = printopen()

if ll_job = -1 then

messagebox(gs_title,"打印机未准备好")

return

end if

//定制行距1/8英寸

PrintSend(ll_job, CHAR(27)+CHAR(48))

//设定页长22行

PrintSend(ll_job,CHAR(27)+CHAR(67)+CHAR(dw_print.rowcount()))

printdatawindow(ll_job,dw_print)

printclose(ll_job)

可控制打印走纸的长度,如你打印时用dw_print.print()你windows中默认打印机的纸张是A4

这样打印时如果dw中有一行也是把A4这张纸走完,如果你用上面的这可以控制如dw中有10行这样走到第10行时,打印作业就停止了!,你可以把上面的程序写到你的程序中就应该可以解决,不过此程序只适用于针式打印机

如有问题可以发邮件pjj-33@163.com

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值