使用USB转并口适配器时,是否可以正常访问并口?

时间:2010-11-18 16:47:20

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

初步故事

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

工作原理

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

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

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

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

我目前正在前往并专注于最简单和最便宜的可能性:USB转并口适配器。

主要问题

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

  

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

我希望通过USB存在解决方案,因为这样您就不必打开PC,这意味着可以按需添加适配器。

子问题

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

1 个答案:

答案 0 :(得分:9)

因为我最近一直在努力解决这个问题,所以我发现了这个;如果你的意思是使用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