代码之家  ›  专栏  ›  技术社区  ›  p.marino

DOS带USB打印机的传统应用程序

  •  6
  • p.marino  · 技术社区  · 15 年前

    我有一个不幸的任务,就是在dbiii+/clipper'87中开发的两个遗留应用程序上进行(最少的)维护工作。

    我可以完全访问源代码,并且在需要时可以使用最少的工具链重新编译应用程序,但是由于主要用户的各种(主要是心理上的)原因,我不能从头开始重新实现它。

    不管怎样,虽然应用程序在XP下工作正常,但是硬件支持却变得很麻烦。用户需要更换出现故障的打印机(带有并行接口的旧Impact HP)和486(!)托管应用程序的桌面。

    现在的主要问题是找到一台可以在xp下使用的打印机,可能是通过usb(一个asus eee设备是完美的,它没有并行端口),并使其对DOS应用程序“可见”。

    到目前为止,我找到了一个解决办法:

    http://geekswithblogs.net/dtotzke/articles/26204.aspx

    加上一些实用程序:

    http://www.dosprn.com/ http://www.dos2usb.com/index.htm http://www.printfil.com/english.htm

    这些实用程序似乎更好,因为它们为旧转义序列提供了某种过滤器(比如epson的esc/p或hp方言),使其对打印机透明。 至少他们这么说。

    所以问题是:有没有人有经验在XP下把旧的DOS程序和现代打印机连接起来?有什么警告吗?您是否使用了列出的实用程序之一(或另一个我还没有找到的实用程序),如果是,您会推荐哪一个?

    1 回复  |  直到 9 年前
        1
  •  5
  •   Douglas Anderson    15 年前

    我们通常会按照您的链接中提到的内容进行操作。也就是说,在Windows下的任何端口(即USB等)上安装打印机。

    接下来,共享打印机(假设工作站名为computer1,您的共享名为hpprinter)。

    接下来创建一个批处理文件来启动应用程序,它应该如下所示:

    net use lpt1 /d
    net use lpt1 \\COMPUTER1\HPPRINTER
    <yourapp.exe>
    

    在应用程序中,将输出设置为lpt1。

    还有其他更复杂的解决方案,但这是迄今为止最简单的。我们仍然有一个DOS应用程序是多年前建立的,我们仍然积极市场和销售。这就是我们处理印刷品的方法。它工作得很好。现在还可以使用Windows对打印作业进行排队,以便暂停打印机队列等。打印机甚至可能已关闭或缺纸,而作业仍在Windows Spooler中排队。

    警告:这假定新打印机将支持输出。如果它是“旧”的HP LaserJet,那么它可能是PCL5,只要找到一个支持PCL5的设备就可以了。

    在过滤方面,不知道你为什么需要这个。只要输出是PCL或PostScript或其他标准,那么您仍然可以找到支持该打印描述语言的打印机。如果您有任何问题,只需添加关于当前设备的评论,我可以提供关于兼容性的想法,因为我们每天都在处理这个问题。

    推荐文章