pos机的开钱箱程序(100分)

  • 主题发起人 主题发起人 arther
  • 开始时间 开始时间
A

arther

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
小弟最近在做一个pos记得开箱命令时被难倒了,请各位大虾帮忙!
pos 机的开箱命令是:esc p m t1 t2,lpt1 口
我认为是在delphi 中加入汇编语言对lpt1(378H)编程,可是不知道如何下手?
请大侠帮忙!
 
这是以前写的一段代码,可以控制打印机、钱箱。打印机连接在LPT1,不用安装驱动程序。
RPrinter为TextFile类型;
SContent为TStringList类型。
// 建立打印连接并打印数据
Assignfile(RPrinter,'lpt1');
// 设置打印机
Rewrite(RPrinter);
// 准备写文件
Writeln(RPrinter,chr($b)+chr(27)+'K'+chr(40));
// 向后倒纸!
...
for i := 0 to SContent.Count - 1do
Writeln(RPrinter,SContent.strings);
Writeln(RPrinter,chr($b)+chr(27)+'J'+chr(140));
// 向前进纸

CloseFile(RPrinter);
// 关闭打印机,结束打印
SContent.Free;
// 释放字符串列表
 
// 建立打印连接并打印数据
Assignfile(RPrinter,'lpt1');
// 设置打印机
Rewrite(RPrinter);
// 准备写文件
Writeln(RPrinter,chr(27)+'p'+'m'+(后面两个看起来像是参数) t1 t2);
// 开钱箱
CloseFile(RPrinter);
// 关闭打印机,结束打印
 
加入汇编!!
procedure;
asm
.....
end;
 
我做过这种程序,用汇编是可以的,问题是程序如果运行在2000或XP下是无法直接嵌入汇编的,后来找了一个开钱箱的程序,在自己的delphi程序里直接调用它就可以打开钱箱了,要的话请发email : dxj_lhq@sina.com
 
{ *********************************************************************** }
{ 向指定的串口写批定的字符串 }
{ *********************************************************************** }
procedure PortOut(APortName,AExpress:string);
var
CustomerDisplay:TextFile;
begin
AssignFile(CustomerDisplay,APortName);
ReWrite(CustomerDisplay);
Write(CustomerDisplay,AExpress);
CloseFile(CustomerDisplay);
end;

{ *********************************************************************** }
{ 开钱箱 }
{ *********************************************************************** }
procedure OpenCashBox;
begin
PortOut('LPT1',#27+#112+#0+#20+#80);
PortOut('LPT1',#27+#112+#1+#20+#80);
end;

 
后退
顶部