初步的故事
有这个程序使用并行端口与其他硬件同步。 它将并行端口输出设置为指定的(字节)值。 使用PC的内置并行端口时,这种方式没有问题。 目标平台是Windows XP到7,到目前为止一切正常。 源代码是在Delphi中,可访问,可以修改。
怎么运行的
在Delphi中,我可以使用io.dll来设置并行端口的值,但也有其他解决scheme,如inpout32.dll或port.dll 。 我打电话像PortOut
,指定一个端口号,字节值和端口设置。
我现在想要做的 – 以及我需要帮助的地方
现在改变了:这需要在没有内置并行端口(甚至在主板上)的机器上工作。 有几个选项可用:
我目前正在努力寻找最简单和最便宜的可能性:一个USB到并行端口适配器。
主要问题
并行端口适配器之间似乎有区别,只是连接打印机和其他似乎更强大的适配器。 真的有区别吗? 或者我可以使用这些5 $打印机适配器之一,插入我自己的硬件,并从Delphi代码访问端口? 或者我需要一个特殊的适配器? 有没有人有这方面的经验? 这里有一个相关的问题,但不同的适配器types(如果存在)在那里没有提到。 这个页面表明确实存在差异:
与所有其他可以连接到打印机的USB并行端口相反,这可以连接到大多数硬件。
我希望有一个通过USB的解决scheme,因为这样你就不必打开PC,这意味着可以根据需要添加适配器。
子问题
你有PCI(Express)解决scheme的经验吗? 如果USB方法不成功,我必须使用一个。
最近我一直在和这件事情搏斗,这是我发现的。 如果你的意思是使用IO端口寻址(由你对inpout32.dll的引用来表示),否。 除非您的USB并口驱动程序支持完整的端口仿真或虚拟化(大多数情况下不支持),否则这通常是不可能的。 如果您需要直接访问该端口来执行正常的“bit-twiddling”,则应该获得一个单独的并行端口PCI卡。 他们中的大多数在自己的标准地址上表现为正常的IO。 我假设你不打算使用并行端口来实际与打印机通信,对吧?
有趣的是,USB串行适配器更容易使用,因为它们看起来像简单的虚拟设备,只需使用简单的流“打开”即可; TFileStream.Create(“COM1”,fmOpenRead)或Windows.CreateFile(“COM2”,…);
以下是一些声称通过USB完全并行端口仿真的设备:
https://www-user.tu-chemnitz.de/~ygu/bastelecke/PC/USB2LPT/index.en.htm