问题:
一台电脑,能同时控制连接到它的多个打印机打印。详细点说,是控制多个不同房间小票打印机打印,要求能做到不需要等待前一台打印机打印完,后面的打印机才能继续打,而是发送完一台打印机的任务之后,继续发送任务给下一台打印机,这时候下一台打印机也能打印。我试过在windos上安装多个这样的打印机,然后根据上面要求每次通过代码设置不同的默认打印机,然后发任务,此时任务是发送过去了,多台打印机都有打印任务,可是没法做到同时打,只能这台打印机的任务都处理完了,才能到下一台打印机的任务启动。这样的效率不行。有什么方法可以做到多个打印机都一起打

解决方案 »

  1.   

    先在本地电脑上添加打印机,再连接到不同的COM中去,在一个任务中,不同的COM打印出不同的东西。
      

  2.   

    补充一下:
    多台打印机是已经通过设置不同com口连接到一台电脑上的,epson tm 220,4、5台。lxq19851204 能详细说一下怎么弄吗
      

  3.   


    打印小票,可以有其他选择:1 买多端口外置打印服务器。2 放弃打印机对象编程方式,直接对 COM 口进行读写操作。优点是不需要额外硬件开支,缺点是操作更加趋于底层,需要了解打印机的命令格式。
      

  4.   

    lxq19851204 :目前就是这样做,发送任务给每个打印机是没有问题的,都能发过去,只是现在是用打印机对象printers的控制,所以现在做法是:设置一台默认打印机,发送任务,改变另外一个打印机为默认打印机,发送任务此时每个打印机都有了打印任务在里面,只是,真正的情况是一台打完,才到另外一台
    of123:你完全理解我的意思。现在就是用多端口外置服务器,打印机都连到那个上,然后这个小小的外置服务器盒子连到我的电脑上。照你看法是必须通过com和使用打印机的指令集编码是吧?现在的方法不行吗?我就是担心按照指令集去一点点写,耗时、打印格式需要变化时候不灵活,这就是你说的缺点
      

  5.   

    还有这事,因为我们这也是小票打印的,设置COM后,每次发送任务过去,多台打印机接收到命令都可以同时打印。
      

  6.   

    我目前的打印方式就是:
    放弃打印机对象编程方式,直接对 COM 口进行读写操作。优点是不需要额外硬件开支,缺点是操作更加趋于底层,需要了解打印机的命令格式。
      

  7.   


    还有一种方法可以试试,把打印任务细碎切分。比如说,你的程序最多支持 5 台打印机。
    在窗体上放 5 个 Visual = False 的 ListBox,作为任务池。当一个打印任务到来时,将所有的 Print 语句放入对应的 ListBox。用一个 Timer 轮流查询这 5 个 ListBox。如果其 ListCount > 0 则:1 Set  Printer = Printers(i+1) 2 打印当前语句,并删除之
      Printer.Print List1(i).List(0)
      Printer.EndDoc  '注意这个,将任务放入队列
      List1(i).RemoveItem 0我估计你原来是将一台打印机的所有打印内容 Print 之后,才用 EndDoc 提交到队列的。
      

  8.   

    杯具,现在重新试,是可以的。lxq19851204。。of123感谢