【问题标题】:Can I access the Parallel Port normally when using USB to Parallel Port adapter?使用 USB 转并口适配器时可以正常访问并口吗?
【发布时间】:2010-11-18 16:47:20
【问题描述】:

初步故事

有这个程序使用并行端口与其他硬件同步。它将并行端口输出设置为指定的(字节)值。这在使用 PC 的内置并行端口时可以正常工作。目标平台是 Windows XP 到 7,到目前为止一切正常。源代码在 Delphi 中,可访问且可以修改。

工作原理

在 Delphi 中,我可以使用 io.dll 来设置并行端口的值,但也有其他可用的解决方案,例如 inpout32.dllport.dll。我调用类似PortOut 的东西,指定端口号和字节值并设置端口。

我现在想做什么 - 以及我需要帮助的地方

现在的变化:这需要在没有内置并行端口的机器上工作(甚至在主板上也不行)。有多种选择:

  • 使用 USB 转并行端口适配器将 LPT 端口添加到 PC
  • 使用向 PC 添加 LPT 端口的 PCI 卡
  • 使用向 PC 添加 LPT 端口的 PCI Express 卡

我目前正致力于并专注于最简单和最便宜的可能性:USB 到并行端口适配器。

主要问题

仅用于连接打印机的并行端口适配器与其他功能似乎更强大的适配器之间似乎存在差异。真的有区别吗?或者我可以只使用这 5 美元的打印机适配器之一,插入我自己的硬件并从 Delphi 代码访问端口吗?还是我需要一个特殊的适配器?有没有人有这方面的经验?有一个相关的问题here,但那里没有提到不同的适配器类型(如果存在)。 This page 表示确实存在差异:

与只能连接打印机的所有其他 USB 并行端口相反,它可以连接大多数硬件。

我希望有一个通过 USB 的解决方案,因为为此您不必打开 PC,这意味着可以按需添加适配器。

子问题

您有使用 PCI (Express) 解决方案的经验吗?如果 USB 方法不成功,我必须使用一个。

【问题讨论】:

    标签: windows delphi usb delphi-2009 parallel-port


    【解决方案1】:

    由于我最近一直在努力解决这个问题,这就是我的发现;如果您的意思是使用 IO 端口寻址(由您对 inpout32.dll 的引用表示),则不。除非您的 USB 并行端口驱动程序支持全端口仿真或虚拟化(大多数情况下不支持),否则这通常是不可能的。如果您需要直接访问该端口进行正常的“bit-twiddling”,您应该获得一个单独的并行端口PCI卡。他们中的大多数在标准地址上将自己表现为普通的 IO。我假设您不打算使用并行端口与打印机进行实际通信,对吧?

    有趣的是,USB-Serial 适配器更易于使用,因为它们显示为简单的虚拟设备,您只需使用简单的流“打开”它们即可; TFileStream.Create("COM1", fmOpenRead) 或 Windows.CreateFile("COM2", ...);

    以下是一些声称可以通过 USB 完全模拟并行端口的设备:

    https://www-user.tu-chemnitz.de/~ygu/bastelecke/PC/USB2LPT/index.en.htm

    【讨论】:

    • 非常感谢您分享您的见解!我们现在在这里也做了一些测试,我们的发现与你的一致。有一些 hacky 方法可以控制 USB 设备(也可以通过 CreateFile),但是通过 WriteFile 设置单个位失败,(可能)因为适配器然后发送响应并等待应答。不,我们没有连接打印机。我们只想为自定义设备设置单个位。但没办法 :( 我也来到了 TU Chemnitz 的页面,但这似乎有点矫枉过正。它只需要快速工作并且没有定制设备的开销。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多