2007年8月4日 delphi 小票打印
{打印代码}
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;
建议看看Printers单元
uses Printers,然后看看里面的函数
1.POS软件是使用windows通用的端口打印方式进行打印命令输出的。
2.也可直接调用POS打印机厂商所提供的函数库。(一般不推荐这种开发方式,因为打印机的品牌很多,每个打印机都需要编程)
3.驱动打印,很少有软件采用,因为收款员的电脑操作能力差,无法对打印预览等窗口进行操作。而如果出现驱动方式的打印错误,就会出现打印等待的情况,而这样的错误有可能会影响到多笔的收款业务(多人交款,都不打小票),如果使用端口打印则不会有这种问题出现,出错就无法进行收款,重新启动计算机就可以,而避免了错误的重复发生。所以建议使用端口打印。
热印打印知识
Direct Thermal(热敏)
--- 介质,多为纸质,覆盖一化学涂层,该物质经过热能作用一段时间后会变为深色。
--- 图像不是由燃烧形成的,而是涂层在经过热能作用后发生化学反应而形成的。
热敏打印的优点
--- 有效的打印方法:只需要介质,无须碳带。
--- 打印机操作相对地简单。
--- 打印机噪音小,适合安静场合。
--- 热敏打印速度快,最快可以达到200mm/sec。
热敏的打印速度快,噪音低,热敏纸成本高,不能打印双联,一段时间后大约两个礼拜,打印的字会消失。
针式打印速度慢,噪音相对大,成本低,可打印多联,字迹不容易消失。
针式打印机比热敏打印机便宜。
-------------------------------------------------------------------------------------------------------------------------------------
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,2400)是打开串口进行通讯,1是打开COM1,波特率为2400。如果打开成功,它会返回逻辑真告知串口打开。 Com_rest是关闭串口。 Com_send(命令,长度)是发送数据到串口。
{在窗体创建时打开端口} procedure TForm1.FormCreate(Sender: TObject); begin Com_init(1,2400); end;
{在按钮中发送内容} procedure TForm1.Button1Click(Sender: TObject); begin PDStr:=Chr(2)+Chr(77);{控制顾客显示屏开钱箱指令} if com_send(Pchar(PDStr),Length(PDStr)) then begin Label1.Caption :='已经发送命令'; end else begin Label1.Caption :='发送失败'; end; end;
{在关闭窗体时关闭端口} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Com_rest; end; 上面语句是控制顾客显示屏开钱箱的命令,其他的命令集只需要改变按钮中的PDStr的值即可: 下面是控制顾客显示屏显示1234.56的命令: PDStr:=Chr(27)+Chr(81)+Chr(65)+’1234.56’+Chr(13); if com_send(Pchar(PDStr),Length(PDStr)) then begin Label1.Caption :='已经发送命令'; end else begin Label1.Caption :='发送失败'; end; 下面是控制顾客显示屏显示“总计”灯的命令: PDStr:= Chr(27)+Chr(115)+’2’; if com_send(Pchar(PDStr),Length(PDStr)) then begin Label1.Caption :='已经发送命令'; end else begin Label1.Caption :='发送失败'; end; 如果需要控制串口的POS58打印机打印,也只需要重新给PDStr赋值: PDStr:=’Delphi Printer on COM1’+chr(10); 要POS58开钱箱,则需要如下赋值: PDStr:= Chr(27)+'p'+Chr(0)+Chr(60)+Chr(255);
|
请发表评论