在现代硬件和操作系统上通过 USB 适配器控制并行端口
Posted
技术标签:
【中文标题】在现代硬件和操作系统上通过 USB 适配器控制并行端口【英文标题】:Controlling a parallel port via USB adaptor on modern hardware and OS 【发布时间】:2010-07-05 23:20:00 【问题描述】:我有一个 USB 转并行端口设备,我想在现代 Windows 操作系统(xp 和更新版本)上通过 c++ 与之交互。
我做了一些研究,但在对这些 USB 转并行端口设备之一进行编程时,信息有点不完整(大部分信息都已过时,并假设您在主板,我全新的电脑没有的东西)。一份参考资料甚至说,如果不进行某种软件更改,就不可能从 C++ 程序将 USB 连接到并行端口。
我想要做的就是能够在运行现代 Windows 操作系统的现代计算机上通过 USB 到并行端口设备读取或写入 8 位到并行端口(端口专用于读取或写入) .
有什么快速简便的方法吗?一些示例代码将不胜感激。
另外,我可以与我的计算机连接多少个这些 USB 转并行端口?由于某种遗留寻址,我是否限制为 3 个,或者我可以拥有尽可能多的 USB 和 CPU 能够支持的数量?
使用 VC++ 2008,运行 Windows 7 x64 和 Core i7 860。
编辑:更多信息...
我尝试过使用 inpout23 和一些预先编写的测试程序。它编译得很好,运行得很好,声称可以读取和写入并行端口。我将我的 USB 转并行端口连接到计算机,并将该端口连接到我已经识别、剥离并焊接到一种插头上的电缆上,以便快速插入面包板进行测试。没有一个输出引脚更改为程序所说的写入它们的内容(相反,它们都设置为高电平并且从未更改)。
【问题讨论】:
我也对此感兴趣。几年前我做了一些研究,我所能找到的基本上是:买一张带有并行端口的卡。我现在使用的是笔记本电脑,ExpressCard 并行端口卡的价格往往是 PCI 并行端口卡的 10 倍左右。 :( 是的,同样的想法。我的想法:并口应该易于编程,USB不会过时,Windows不会过时,USB转并口非常便宜(来自中国的 5 美元,免费送货)。所有这一切都等同于廉价的数字 I/O,可保持多年的兼容性,是家用电子产品和控制的绝佳平台。 【参考方案1】:我过去曾这样做过,我有好消息也有坏消息。
好消息是它始终有效(有时需要调整),这是对设计极其强大协议的电子制造商的致敬。显然 USB 到并行转换器都提供了硬件端口仿真。
坏消息是“bitbanging”接口模型的性能很糟糕。如果您不介意缓慢的更新,这根本不是问题。我用它来编程 uControllers,很快我的不耐烦就克服了串行或 USB 编程器的价格。
只需使用 windows API 读取/写入 LPT 或 COM 端口,它就可以工作(缓慢)。
【讨论】:
调整是什么意思?另外,我的计算机无法识别 LPT1 端口,而是“IEEE 1284 控制器”,这会是个问题吗?【参考方案2】:我之前使用过 USB 转串口适配器,我猜 USB 转并口应该是一样的。您应该有一个驱动程序和适配器 - 这为您完成了大部分工作,隐藏 USB 接口并将其作为传统的并行端口呈现给操作系统。例如,当我将适配器插入 USB 端口时,它只会在设备管理器中显示为 COM4。我猜你的会显示为 LPT1 或其他东西。从那时起,就可以使用标准的 Windows API 访问这些端口了。 (请参阅 MSDN 上的 Communications Resources)
【讨论】:
我也玩过那些USB转串口,这些似乎工作正常,我的电脑将它们识别为COM端口。此串行端口不需要驱动程序(Windows 已经有),但它显示为“IEEE 1284 控制器”,并在设备属性下定义为“打印机端口”。我找不到任何将并行端口打开为“LPT1”端口的代码,就像我能够使用“COM1”端口一样。我在研究中看到的所有 I/O 都表明它输出到某种旧的 16 位寻址系统,这似乎对我不起作用。【参考方案3】:我在 ebay.com 上购买的 USB 转 LPT-DB25 线成功了。
我们应该在 /LF Line Feed 和 GND 引脚之间连接一个 LED。
在丢弃 USB 寄存器以找到与 USB 电缆相关联的寄存器后,我们应该构建一个 API(应用程序编程接口)来与输出/寄存器交互。
我将尝试附上一张图片来看看我是如何管理它的:
【讨论】:
以上是关于在现代硬件和操作系统上通过 USB 适配器控制并行端口的主要内容,如果未能解决你的问题,请参考以下文章