【问题标题】:LPT control on WindowsWindows 上的 LPT 控制
【发布时间】:2010-05-26 21:43:46
【问题描述】:

我进入了一个应该使用微控制器的新项目。最简单的编程方法是使用并行端口。但是,有几件事我希望你能帮助我。哦,首选语言是 C 和平台 Windows。

所以,我对 LPT 端口和 Windows 进行了一些研究,从中学到的最重要的一点是:由于基于 Windows NT 的系统,您不能使用指令来直接操作端口。应该是这样,因为现在程序在不同的特权模式下运行,不支持outport()函数使用的那种指令。

但在这一点上,我不明白一些事情。首先,我认为 Windows 实际上从第一个保护模式版本开始就使用特权级别,但这是错误的假设。

但更重要的是,我认为 Windows 包含了几乎所有硬件通信的功能。我的意思是,这些天你在 Windows 中所做的任何事情,你只需要调用进一步调用内核服务的 Windows 函数。我假设outport() 不使用任何Windows 功能,只是自己进行通信,现在是禁止的。但令我震惊的是,在现代 Windows 系统中没有控制并行端口的系统功能。至少我是这么读的。

但即使我可以控制并口,我的第二个问题也随之而来。 为了对控制器进行编程,我需要遵循特殊的协议,尤其是时序。但由于 Windows 是多任务的,我担心如果调度程序切换到另一个应用程序会怎样,因此何时是在 LPT 上切换信号的合适时间,我的程序将无法运行。

哦,顺便说一句,我知道我可以使用任何 3rd-party 应用程序,但我只是希望自己能够做到这一点,或者至少在我使用某些 3rd-party 应用程序之前,我想知道它是如何实现的作品。是的,你可以通过带有一些电阻的并行端口对一些微控制器进行编程,我肯定知道这一点。

谢谢。

【问题讨论】:

    标签: windows microcontroller lpt


    【解决方案1】:

    对于 Windows,您需要安装一个包含驱动程序的 DLL,该驱动程序以提升的权限运行以访问硬件端口。

    您可以在以下位置找到这样的库:

    http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html

    还有一些示例代码的链接。

    我不知道您使用的是哪个 uController,但我过去曾编写过各种类型的 uController,并且从未遇到过时序问题,至少对于编程来说是这样。编程协议通常足够健壮,可以处理由多任务处理引起的抖动。只要保持时钟边沿和信号边沿分开就可以了。

    【讨论】:

      猜你喜欢
      • 2011-07-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
      相关资源
      最近更新 更多