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

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

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

 

{打印}
Writeln(RPrinter,'测试:****'+(Edit1.text));

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

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

delphi通过LPT1并口POS58小票打印机开钱箱见经常有人问如何开钱箱.就做了个非常简单的DEMO,中高手不要下了;
只支持POS打印机带钱箱接口的钱箱;
POS打印机 必须使用并口,及使用电脑的 LPT1 端口;

procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
pdStr:string;
begin
    pdStr:=#27+#112+#0+#100+#100;//开钱箱指令
    assignFile(F, 'LPT1'); //端口自己改....
    Rewrite(F);
    Write(F,pdStr);
    CloseFile(F);
end;

*****************************************************

Delphi下POS机控制钱箱,客显,打印机,小票打印
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;
\\\

Delphi POS打印的处理

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);

http://blog.csdn.net/zisongjia/article/details/72639702

delphi LPT1端口打印与开钱箱的更多相关文章

  1. 直接端口打印 支持USB接口的打印机吗?解决办法

    直接端口打印 支持USB接口的打印机吗?解决办法 www.MyException.Cn  网友分享于:2013-09-15  浏览:488次       直接端口打印 支持USB接口的打印机吗?问题如 ...

  2. C#Lpt端口打印类的操作浅析

    C#LPT端口打印类的操作是什么呢?首先让我们看看什么是LPT端口(打印机专用)?LPT端口是一种增强了的双向并行传输接口,在USB接口出现以前是扫描仪,打印机最常用的接口.最高传输速度为1.5Mbp ...

  3. C#后台调用LPT1端口实现小票机打印方法。

    public class POSPrinter { const int OPEN_EXISTING = 3; string prnPort = "LPT1"; [DllImport ...

  4. Delphi 串口打印机打印

    一.硬件准备 打印机: 打印机必须具有串口,没有标配串口的打印机,必须购买串口卡,串口卡的型号请参考随机<操作手册>. 计算机: 计算机必须具有串口,计算机通常具有两个串口:COM1和CO ...

  5. Win10环境下Hadoop(单节点伪分布式)的安装与配置--bug(yarn的8088端口打不开+)

    一.本文思路 [1].配置java环境–JDK12(Hadoop的底层实现语言是java,hadoop运行需要JDK环境) [2].安装Hadoop 1.解压hadop 2.配置hadoop环境变量 ...

  6. XP下1433端口打不开

    问题:操作系统windows xp:数据库sql server 2000:安装后通过程序无法访问数据,原因是数据库的默认端口1433未打开. 原因:sql server 2000的bug,需要升级补丁 ...

  7. delphi选择打印机打印

    printer.getprinter(mdevice, mdriver, mport, mhdmode); printer.setprinter(pchar(g_PRNzt), mdriver, mp ...

  8. delphi 判断端口(Port)是否被占用(转载)

    function IsPortUsed(aPort: Integer): Boolean; var _vSock: TSocket; _vWSAData: TWSAData; _vAddrIn: TS ...

  9. 用delphi开发activex打印控件

    http://blog.csdn.net/baronyang/article/details/4465468

随机推荐

  1. 【烽火传递】dp + 单调队列优化

    题目描述 烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有 n 个烽火台,每个烽火台发出信 ...

  2. CentOS 挂载iso文件配置yum源

    1.挂载iso 准备好centos的光盘镜像 挂载前的准备; mkdir -p /dev/centos mkdir -p  /mnt/local_yum 挂载 mount -o loop /opt/s ...

  3. mysql 数据库 添加查询 修改 删除

    cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)   一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行   ...

  4. JAVA从本机获取IP地址

    JAVA从本机获取IP地址 论述: 此篇博客是在工作的时候,需要获得当前网络下面正确的ip地址,在网上查阅很多博客,网上一个比较普遍的说法是通过InetAddress.getLocalHost().g ...

  5. unity3d 学习笔记(三)

    工作现场查看: 飞行模式: 按住鼠标右键 w s a d 围绕浏览当前视图, q e 上下浏览. 交模式下无效 需透视图 移动吸附:移动状态(w) ctrl+shif  移动吸附在其它物体上移动 顶点 ...

  6. Object-c学习笔记(1)

    说明:本人用的win8 系统装Code::Blocks练习OC. 1.类的声明和实现的关系图:  @interface就好像暴露在外面的时钟表面  @implementation就好像隐藏在时钟内部的 ...

  7. Matlab Tricks(二十九) —— 使用 deal 将多个输入赋值给多个输出

    deal:Distribute inputs to outputs: >> [id, name, data] = deal(123, 'zhang', randn(3)) 注意: [Y1, ...

  8. Redis入门手册

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使用r ...

  9. 一个Java工程师的入门级Linux命令集

    0.前言    网上介绍linux的命令的文章一大堆,但是大部分都是流于命令介绍,把命令的所有参数都介绍一遍,但是其实在真正的工作中,很多参数都不会用到.本文总结了我自己常用的一些命令,这些命令都比较 ...

  10. chaos —— 混沌

    混沌,一个被严重滥用的物理数学概念. 混沌(chaos)是一个动力学系统(Dynamic System)概念,指的是确定性动力学系统因对初值敏感而表现出的不可预测的.类似随机性的运动. 1. 洛伦兹吸 ...