您的位置:首页 > 编程语言 > Delphi

Delphi调用打印机的ZPL指令来打印数据

2011-06-22 09:42 507 查看
一、如果是并口打印机这样,可直接以打印机为本地文件操作。 代码如下:

procedure TDSaleBillDetailForm.YRButton1Click(Sender: TObject);

var

F :Textfile;

begin

AssignFile(F, 'LPT1');

try

ReWrite(F);

Write(F, chr(27) + chr(64)); //初始化打印头

Writeln(F, ' 歡迎光臨 ');

Writeln(F, '* * * * * * * * * * * * * * ');

//......

finally

Closefile(F);

end;

end;

二、如果是USB接口连接打印机的话有两种方法:

1、在CMD窗口下将USB虚拟成LPT

第一步,配置网卡的IP地址,指定一个固定IP与子网掩码;

第二步,共享USB接口的条码打印机,记得起一个简单易记的名字,这个是打印机共享名, 我的打印机起名叫GP5860
;

第三步,映射出刚才共享的打印机到LPT1端口,在命令行端口运行NET USE LPT1: //计算机名或IP/打印机名 /Persistent:YES,回车;(把计算机名或IP和打印机名改成你自己的)
例: NET USE LPT1 //127.0.0.1/GP5860 /PERSISTENT:YES
说明: NET USE  列出所有的映射内容

NET USE LPT1 /DELETE 删除前面的映射定义

2、使用斑马打印机windows驱动来实现

uses   winspool

...............

procedure WriteRawStringToPrinter(PrinterName, S: string);

var

Handle: THandle;

N: DWord;

DocInfo1: TDocInfo1;

begin

if not OpenPrinter(PChar(PrinterName), Handle, nil) then raise Exception.Create('打开打印机失败!');

with DocInfo1 do

begin

pDocName    := PChar('Test Doc');

pOutputFile := nil;

pDatatype   := 'RAW';

end;

StartDocPrinter(Handle, 1, @DocInfo1);

StartPagePrinter(Handle);

WritePrinter(Handle, PChar(S), Length(S), N);

EndPagePrinter(Handle);

EndDocPrinter(Handle);

ClosePrinter(Handle);

end;

//调用以上面的过程

procedure bbtnPOSPrintClick(Sender: TObject);

var

ZPL: string;

sList: TStringList;

begin

sList := TStringList.Create;

try

sList.Add(chr(27) + chr(64));  //初始化打印头

sList.Add('             歡迎光臨                 ');

sList.Add(' * * * * * * * * * * * * * *');

sList.Add('');

sList.Add('');

sList.Add('');

sList.Add('');

ZPL := sList.Text;

WriteRawStringToPrinter('GP-5860III', ZPL);    //我的打GP-5860III

finally

sList.Free;

end;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐