Delphi下使用并口控制打印机的方法

Delphi下使用并口控制打印机的方法



使用Delphi编程的人员如果需要在Windows下使用并口打印机逐行打印,而又不想使用Windows的驱动程序。我们这里提供一种不需要任何外来的元件的方法。
Var F:TextFile;
Str:string;
Begin
try
Str:=’ 欢迎使用票据打印机!’+Chr(10);
AssignFile(F, 'LPT1');
Rewrite(F);
Write(F, Str);
CloseFile(F);
Except
Messagedlg('数据发送失败!',mterror,[mbok],0);
End;
end;
如果需要控制并口打印机开钱箱,也只需要重新给Str如下赋值:
Str:= Chr(27)+'p'+Chr(0)+Chr(25)+Chr(255);



Delphi下使用串口控制打印机
使用Delphi编程的人员如果需要在Windows下使用串口控制顾客显示屏或串口打印机,就需要使用外来方式。我们这里提供了API_COM.DLL这个链接库供调用。
首先把API_COM.DLL文件复制到编写的源程序目录下,接着在程序的开头声明调用的三个函数来源:
var
Form1: TForm1;
{加入下面三行声明}
function com_init(com:Integer; baud:Dword):Boolean;stdcall;external'api_com.dll';
function com_rest:Boolean;stdcall;external 'api_com.dll';
function com_send(buf:PChar; len:Integer):Boolean;stdcall;external'api_com.dll';
implementation
{$R *.DFM}
Com_init(1,9600)是打开串口进行通讯,1是打开COM1,波特率为9600。如果打开成功,它会返回逻辑真告知串口打开。
Com_rest是关闭串口。
Com_send(命令,长度)是发送数据到串口。
{在窗体创建时打开端口}
procedure TForm1.FormCreate(Sender: TObject);
begin
Com_init(1,9600);
end;
{在按钮中发送内容}
procedure TForm1.Button1Click(Sender: TObject);
begin
Str=Chr(27)+Chr(112)+Chr(0)+Chr(25)+Chr(255);{控制打印机开钱箱指令}
if com_send(Pchar(Str),Length(Str)) then
begin
Label1.Caption :='已经发送命令';
end
else
begin
Label1.Caption :='发送失败';
end;
end;

{在关闭窗体时关闭端口}
procedure TForm1.FormClose(Sender: TObject; var Action:TCloseAction);
begin
Com_rest;
end;
上面语句是控制打印机开钱箱命令,其他的命令集只需要改变按钮中的Str的值即可:
下面是控制打印机打印出“欢迎使用GP系列票据打印机!”的命令:
Str=’欢迎使用GP系列票据打印机!’+Chr(13)
if com_send(Pchar(Str),Length(Str)) then
begin
Label1.Caption :='已经发送命令';
end
else
begin
Label1.Caption :='发送失败';
end;





部分特殊打印机:VB语法:

在VB中,大家对使用串口/并口控制开钱箱功能存在疑问,故此提供一个简单的方法给大家。
对于EPSON TM210PD/EPSON TM300K/TP POS58并口打印机可使用以下语句:
Open "LPT1" For Output As #1
Print #1, Chr(27) + "p" + Chr(0) + Chr(60) + Chr(255)
Close #1
对于STAR SP2320并口打印机可使用以下语句:
Open "LPT1" For Output As #1
Print #1, Chr(27) + "p" + Chr(7)
Close #1
而对于串口打印机,只需要把语句中的“LPT1”换成“COM1”或“COM2”即可实现。
此语句还可用于打印控制,被控制之打印机无需通过驱动,直接送出字符串供打印机打印。语句如下:
Open "LPT1" For Output As #1
Print #1, "送出打印字符1"
Print #1, "送出打印字符2"
Close #1
以上语句其实是让打印机实现逐行打印,而非按页打印。该语句同上方法可以用于串口票据打印机。如果想输出中文,必须使用带有中文硬字库的票据打印机,因为以上的列印方法并未通过Windows的打印机驱动程序,所以无法在英文打印机上面输出中文字。

你可能感兴趣的:(Delphi,打印机)