【问题标题】:How to set and read pins on the parallel port from C++?如何从 C++ 设置和读取并行端口上的引脚?
【发布时间】:2011-02-13 18:11:31
【问题描述】:

我正在帮助一位朋友完成一个最后一年的项目,他有一个我们想使用 C++ 程序打开和关闭的电路。

我最初认为这很容易,但我未能实施此程序。 主要问题是

  • Windows XP 及以上版本不允许直接访问硬件,所以some websites 建议我需要编写驱动程序或查找驱动程序。
  • 我还查看了一些在线项目,但它们似乎适用于 Windows XP,但不适用于 Windows 7。
  • 此外,大多数项目都是用我不熟悉的 VB 或 C# 编写的。

问题:

  • 是否有适用于 Windows XP 和 Windows 7 的驱动程序,如果有,我如何在我的代码中使用它? (代码 sn-ps 将不胜感激)
  • 是否有一种跨平台的方式来处理与并行端口的通信?

【问题讨论】:

  • 你原来的头衔让我相信你正在寻求电路方面的帮助,如果electronics.stackexchange.com 会更好。我希望这会更好。
  • 下一期:你在正文中写了“并行端口”(我复制了修改后的标题),你的图像说“打印机端口”并且你已经标记了它[串行端口]。您应该清楚您的意思,因为答案取决于您的选择。

标签: c++ serial-port device-driver


【解决方案1】:

查看代码项目:hereherehere。你会找到宝藏的。

第一个链接适用于 Windows 7 - 32 位和 64 位。

【讨论】:

  • 通过研究这些项目,我意识到这很容易。谢谢
  • #include "pt_ioctl.c" #define printerAddress 0x378 OpenPortTalk();//启动驱动。输出(打印机地址,0x01); ClosePortTalk();
  • 请回答,不要链接更多。我在你的第一个链接中找到了 23 个文件,不知道如何编译,也不知道哪个函数适用于 lpt。
【解决方案2】:

您不需要编写驱动程序或任何东西 - 您只需调用 CreateFile 并使用类似 "LPT1" 的文件名打开并行端口的句柄,然后您可以使用 WriteFile 写入数据给它。例如:

HANDLE parallelPort = CreateFile("LPT1", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(parallelPort == INVALID_HANDLE_VALUE)
{
    // handle error
}
...
// Write the string "foobar" (and its null terminator) to the parallel port.
// Error checking omitted for expository purposes.
const char *data = "foobar";
WriteFile(parallelPort, data, strlen(data)+1, NULL, NULL);
...
CloseHandle(parallelPort);

【讨论】:

  • 我认为他不想为理解某些协议的“智能”外设写入数据,而只是使用并行端口的各个引脚的状态来打开/关闭一些负载(通过光隔离器,ULN2803 & co.);在这种情况下,您的方法不起作用。
猜你喜欢
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多