简体   繁体   中英

How to set and read pins on the parallel port from C++?

I am helping a friend to finish a final year project in which he has this circuit that we want to switch on and off using a C++ program.

我想要的图像

I initially thought it would be easy, but I have failed to implement this program. The main problem is that

  • Windows XP and above don't allow direct access to hardware so some websites are suggesting that I need to write a driver or find a driver.
  • I have also looked at some projects online but they seem to work for Windows XP but fail to work for Windows 7.
  • Also, most projects were written in VB or C# which I am not familiar with.

Question:

  • Is there a suitable driver that works for Windows XP and Windows 7, and if yes how can I use it in my code? (code snippets would be appreciated)
  • Is there a cross platform way of dealing communicating with parallel ports?

You shouldn't need to write a driver or anything -- you just call CreateFile with a filename like "LPT1" to open up a handle to the parallel port, and then you can use WriteFile to write data to it. For example:

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);

Have a look at codeproject: here , here and here . You'll find treasures.

The 1st link works for Windows 7 - both 32 bit and 64 bit.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM