小弟现要在windows下开发一套超市用的POS收款机程序,要求每扫描出一件商品后即时在小票上打印出来,等顾客所有商品扫描完并付款后只用打合计项目以提高收款速度。因此每扫描一件货物成功后就需要打印出一行该商品内容,因此不能像平时整页打印那样操作。有知道如何控制这类EPSON票据打印机能一行行送打印机打印的高手吗?小弟感激不尽!先谢了!

解决方案 »

  1.   

    仔细看看《Delphi4开发大全》中关于打印机的操作即可。
      

  2.   

    一段实时打印的代码
    LIBRARY MYDLL;VAR CHARAL,PORTDX:BYTE;FUNCTION PRINTCHAR(CHARAL,PORTDX:BYTE):INTEGER;EXPORT;BEGIN;ASM;MOV AL,CHARALMOV DL,PORTDXMOV AH,00HINT 17HMOV CHARAL,AHEND;PRINTCHAR:=CHARAL;END;FUNCTION PRINTINIT (PORTDX:BYTE):INTEGER;EXPORT;BEGIN;ASM;MOV DL,PORTDXMOV AH,01HINT 17HMOV AH,CHARALEND;PRINTINIT:=CHARAL;END;EXPORTSPRINTCHAR INDEX 1;PRINTINIT INDEX 2;BEGINEND.
      

  3.   

    To: zzheaptech(风的往事) 
    你用的好象是Dos命令
    Windows能运行吗?
      

  4.   

    to Wnyu(过年了,向大家要红包回家) :
    是汇编语句,delphi里是可以编译的
      

  5.   

    这个能完全解决您的问题!RawPrinter - v. 1.1
    http://www.grupoalbor.com/Componentes/C3/RPrinter.ZIP
      

  6.   

    zzheaptech(风的往事) :怎么这么复杂啊?能不能用在PB上用啊?其实我Delphi不熟,能帮编译成个Dll给我调用吗?(应包含打印一行字、向下走纸一行等基本功能)谢谢了!  [email protected]一下3贴内容相同,解决问题共400分全送!
    http://expert.csdn.net/Expert/TopicView1.asp?id=1392276
    http://expert.csdn.net/Expert/TopicView1.asp?id=1392265
    http://expert.csdn.net/Expert/TopicView1.asp?id=1392259
      

  7.   

    bkfx兄,你的RPrinter.ZIP怎么用?我现在没有Delphi编译环境,你能提供个dll给我在PB调用吗?谢谢![email protected]
      

  8.   

    To: zzheaptech(风的往事) 
    你的程序里有调用INT17. Windows里用INT会用问题的。
      

  9.   

    我最近在用delphi开发pos前台,用的是Tm-200打印机,应该和你说的差不多.
    我所与到的问题是,每次打印完后总要走大约十来行的纸.
    不知道你与到没,通过修改打印驱动文件:tm300s.drv可以解决.
    如果你的打印机带有硬字库,你可以采用直接向端口写数据的方法来解决.
    可以到www.epson.com.cn上下载Esc-pos指令集.
      

  10.   

    to: newfang(方方) 
    我也是这种情况,每次打印完后总要走几行的纸.你是怎么修改打印驱动文件解决的?可以告诉我吗?另外看了EPSON手册,下面是它打开钱箱的例子,里面的字体"control"去那里找啊?6.2.4. Opening the Cash Drawer
    The next example shows how to open the desired cash drawer at the desired speed.Printer.FontSize = 10         'Set up the control font.
    Printer.FontName = "control"
    Printer.Print "A"             'Use special-function character to open the  cash drawer.
                                  'A: Open drawer 1 at 50 ms.
                                  'B: Open drawer 1 at 100 ms.
                                  'C: Open drawer 1 at 150 ms.
                                  'D: Open drawer 1 at 200 ms.
                                  'E: Open drawer 1 at 250,ms.
                                  'a: Open drawer 2 at 50ms.
                                  'b: Open drawer 2 at 100ms.
                                  'c: Open drawer 2 at 150ms.
                                  'd: Open drawer 2 at 200ms.
                                  'e: Open drawer 2 at 250 ms.
    Printer.EndDoc