给USB口的打印机发ESC转义指令开钱箱
var sMoneyBoxOpenCommand='海宏软件,不同的打印机,指令不同';
TOutBufPassThrough = record //调用windows.extEscape可以直接用extEscape(handle, PASSTHROUGH, sizeOf(outBuf), @outBuf, 0, nil)向设备发送esc命令
nDataLen:word;
sEscData:array [0..1024] of char;
end;
var prt:TPrinter;
esc:TOutBufPassThrough;
try //驱动开
prt:=printers.Printer;
prt.beginDoc; //没办法,必须的
esc.nDataLen:=length(sMoneyBoxOpenCommand);
strpCopy(esc.sEscData, sMoneyBoxOpenCommand);
windows.ExtEscape(prt.Handle, PASSTHROUGH, sizeOf(esc), @esc, 0, nil); ////PASSTHROUGH:允许程序直接发送数据到设备
prt.endDoc; //这里会导致打印机走一小段纸,也没找到好办法
except
on x:Exception do ;
end;
另外,可以用printers.assignprt直接向USB口打印机写字符,但是lpt口的可以直接发esc指令开钱箱,usb口的却怎么也不行。