直接打印到USB打印机,绕过Windows假脱机程序

我正在试验一台Zebra TTP8200热敏打印机。 对于我的应用程序,我需要不断打印绘图仪types的迹线,直到用户点击一个停止button。 我已经玩了ZPL语言,我可以成功地生成位图数据,并通过输出ZPL作为原始数据一次将我的位图转储出一行(或几行)。

我正在使用一些微软的演示代码来输出原始数据到打印机,这很好,一个问题吧:后台打印程序。 事实certificate,每次我使用MS rawprn.exe代码输出一些数据时,它实际上被假脱机为打印作业,然后传输到打印机。 这需要10秒才能通过假脱机程序,显然太慢了。 在驱动程序中禁用假脱机程序并没有帮助,这只是意味着程序在作业通过假脱机程序并打印完成时挂起。

有没有办法绕过假脱机程序,并直接输出数据到这台USB打印机? 到目前为止,我的研究还没有发现任何可能在Windows API中寻找的东西。 理想情况下,我想能够像使用串行打印机一样使用打印机 – 打开端口并input数据。

提前非常感谢任何提示!

如果USB打印机可用作COM端口,则只需写入COM端口即可。 像这样,从DOS提示符下:

dir > com1 

前面的例子将把dir命令的结果输出到打印机。

或者,这是另一个例子:

 copy file.txt com1 

前面的例子将输出file.txt的内容到打印机。

输出格式正确的ZPL数据将比纯文本更难。 但是,我已经从Linux使用Ruby(和Epson / ESC命令)得到了这个工作。

有没有办法绕过假脱机程序,并直接输出数据到这台USB打印机?

是的,一点没错。 它被嵌入到大多数操作系统中,通过USB打印原始数据只是比以太网和COM / LPT少一些。 请注意,许多应用程序(例如记事本)无法打印原始文件,因此您的应用程序也需要支持此功能。

  1. 为您的USB打印机安装适当的驱动程序。 检查打印机属性以查看它使用的是哪个USB端口。 可能是USB001等
  2. 使用设备和打印机,添加另一台打印机。 本地端口,选择刚刚创建的端口(例如USB001)注意:某些版本的Windows有自动检测的复选框,如果有的话,取消选中。
  3. 制造商:通用,打印机:通用/纯文本
  4. 使用当前安装的驱动程序
  5. 给打印机一个与已经创建的打印机名称不同的名称,即Zebra TTP8200 Raw。
  6. 不要分享
  7. 不要打印测试页,完成

现在使用原始打印应用程序,使用新创建的打印机。

PS这些指令也可以在这里作为Java开源原始打印教程的一部分。 该项目也为其他平台(Ubuntu,OS X)提供了教程。

http://qzindustries.com/TutorialRawWin

-Tres

您应该尝试下面的链接中概述的方法。 这使您可以将原始数据发送到打印机。

http://support.microsoft.com/kb/322091/en-us

感谢您的意见。

经过更多的挖掘,我发现这个有趣的文章使用由usbprint.sys提供的Windows打印机功能。 有一些黑客的示例代码似乎工作。 我想我会走这条路。

再次感谢您的建议。