3
votes

I try to find out how to access a parallel port for writing some bits on a Windows7 machine. This parallel port ist located on a PCI-Card, and is automatically installed by Windows7 and can be monitored as LPT2. The adresses assigned to the Port are E800-E807 and E480-E487 . This looks to me like non-pyhsical adresses. I already tried different methods to write on the port like using inpout32.dll from http://www.logix4u.net/inpout32.htm or parport.dll as a Java solution. To free these ports I installed Userport but I think with this app it's only possible to free real physical ports. So, how can i either change the port adress to e.g. 378, or get my app writing on a virtual adress with inpout32.dll?

I already tried some google-found-advices like disabling the 378-adress in BIOS so it is 'free' for beeing used by the PCI-Card. Or like switching between assingement to LPT1, LPT2, LPT3 but nothing seems to work.

EDIT: Maybe someone knows a specific driver for this PCI-Card, so that I don't need to use the default one? It's: http://www.delock.de/produkte/gruppen/IO+Karten/1x_Parallel_UND_2x_Seriell_-_PCI_Karte_89004.html

1
Just to make sure, are you using 32 bit or 64 bit Win 7 ?user957902
64 bit Win 7. AMD Athlon II X3 455 Processor 3.30 GHz.Milla Well
I am thinking that the 64bit os is your issue. The dll drivers you have been using are 32bit and are talking to the wow64 layer and not to the physical hardware. I would suspect that the 64bit address space is different.user957902
So if i change to 32bit, I would be able to write to the real 378-default-port address, but will I also be able to write to this strange E800... address space?Milla Well

1 Answers

0
votes

E800-E807 and E480-E487 are 16-bit I/O addresses. So, you can use a toolkit like WinIO to read/write them. Note that because it is a PCI device, the I/O addresses are assigned dynamically at bootup, and may change at any time. A well-written program will ask Windows what the I/O address of the card is and use that instead of hard-coding it.