POS打印机一些特殊控制

procedure TForm1.Button1Click(Sender: TObject);
var
RPrinter:TextFile;
i:integer;
begin

{设置打印机}
Assignfile(RPrinter,'lpt1');

{准备写文件}
Rewrite(RPrinter);

{打印}
for i := 0 to memo1.lines.Count - 1 do
Writeln(RPrinter,memo1.lines[i]);

{向后倒纸}
Writeln(RPrinter,chr($b)+chr(27)+'K'+chr(40));

{向前进纸}
Writeln(RPrinter,chr($b)+chr(27)+'J'+chr(140));

{开钱箱}
writeln(f,CHR(27)+CHR(112)+CHR(0)+CHR(17)+CHR(8));
write(f,CHR(27)+CHR(112)+CHR(0)+CHR(17)+CHR(8));
Chr(27)+'p'+chr(0)+chr(60)+chr(255)

{关闭打印机}
CloseFile(RPrinter); 
end;

如何检测“LPT1” 端口是否可以用!
var 
H: THandle; 
begin 
H := CreateFile('LPT1',0,0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0); 
if H <> INVALID_HANDLE_VALUE then 
ShowMessage('可用'); 
end;

1、控制POS机的客户显示屏

procedure TFrmMain.ShowMoney(Money_Port:   String;Money_String:String);
//Moneey_Port     顾显接口Com1   or   Com2     Money_String     顾显显示的内容
var
    PrnFileName:TextFile;
begin
    Assignfile(PrnFileName,Money_Port);
    printer.Canvas.Font.Name:='宋体';
    printer.Canvas.Font.Size:=8;
    printer.Canvas.Font.Charset:=GB2312_CHARSET;
    Rewrite(PrnFileName);
    write(PRNFileName,chr(12));         //清除顾显
    write(PRNFileName,chr(27)+chr(81)+chr(65)+Money_String+chR(13));       //显示信息
    CloseFile(PRNFileName);
end;

2、不换页走纸的打印

procedure TFrmMain.AddPrintStrings(Strings: TStrings);
var
Prn: TextFile;
i: word;
begin
Assignfile(Prn,'lpt1');
    printer.Canvas.Font.Name:='宋体';
    printer.Canvas.Font.Size:=9;
    printer.Canvas.Font.Charset:=GB2312_CHARSET;
try
    Rewrite(Prn);
    try
      for i := 0 to Strings.Count - 1 do
        writeln(Prn, Strings.Strings[i]);
    finally
      CloseFile(Prn);
    end;
except
    on EInOutError do
      MessageBox(Handle,PChar('文本打印出错!'),'警告',MB_ICONEXCLAMATION or MB_OK);
end;
end;

3、走纸换页的打印

procedure TFrmMain.PrintStrings(Strings: TStrings);
var
Prn: TextFile;
i: word;
begin
AssignPrn(Prn);
try
    Rewrite(Prn);
    printer.Canvas.Font.Name:='宋体';
    printer.Canvas.Font.Size:=9;
    printer.Canvas.Font.Charset:=GB2312_CHARSET;
    try
      for i := 0 to Strings.Count - 1 do
        writeln(Prn, Strings.Strings[i]);
    finally
      CloseFile(Prn);
    end;
except
    on EInOutError do
      MessageBox(Handle,PChar('文本打印出错!'),'警告',MB_ICONEXCLAMATION or MB_OK);
end;
end;

4、打开钱箱

procedure TFrmMain.OpenMoneyBox;
Var F:TextFile;
    PDStr:string;
begin
//弹出钱箱功能
PDStr:= Chr(27)+'p'+Chr(0)+Chr(60)+Chr(255);
AssignFile(F, 'LPT1');
Rewrite(F);
Write(F, PDStr);
CloseFile(F);
end;

posted @ 2013-04-28 14:36  小天1981  阅读(182)  评论(0编辑  收藏  举报