给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口的却怎么也不行。

posted @ 2013-04-28 11:43  小天1981  阅读(1574)  评论(0编辑  收藏  举报