Click here to Skip to main content
Licence 
First Posted 17 Aug 2004
Views 115,868
Bookmarked 37 times

Port Access

By | 17 Aug 2004 | Article
A way to access parallel port in Windows XP

Introduction

At first I want to thank Mr. Tomas Franzon as I used his help a lot in this project. This code opens and closes 0x378 port ( printer port ) manually. In XP we have no permission to access external port like Printer. Here we copy a sys file to system32 and use it in the code so we can send and receive data through this port.

Using the code

For using the code you have to copy PortAccess.sys ( exists in source ) to system32\drivers. Then you can run the program.

For sending and receiving data we do this :

#include <conio.h>
#include <math.h>
// 

         // for sending data
         _outp(Port_Address,iByte); 

//

Return Value:

This function returns data output . There is no error return.

Parameters:

Unsigned short Port Number ( defined 0x378 )

Int Output value

         // for receiving data
         iByte=_inp(Port_Address); 

Return Value:

This function returns the byte, word or int from port. There is no error report

Parameters:

Unsigned short Port Number ( defined 0x378 )

When you check a check box the iBitOut value is Set or Reset.

// to set or reset a bit
iBitOut[i]=1-iBitOut[i];
 

When you click output button the Bits are changed to int value to send to port.

 
         // to send value to port

         iByte=0;

         for (i=0;i<=7;i++)

         {

                 iTemp=pow(2,i);

                 nIndex=iTemp*iBitOut[i];

                 iByte=iByte+nIndex;

         }

         _outp(Port_Address,iByte);
 

When you click input button the input value is read and iBitIn[i] becomes set or reset.

 

         // to get data from port 

         iByte=_inp(Port_Address);

         for (i=7;i>=0;i--)

         {

                 nIndex=pow(2,i);

                 if (iByte>=nIndex)

                 {        iByte=iByte-nIndex;

                          iBitIn[i]=1;

                 }

                 else iBitIn[i]=0;

         } 

For checking a check box we use code below :

         // to check a check box

         if (iBitIn[0]==1)
                 CheckDlgButton(hDlg,IDC_CHECKINPUT1,BST_CHECKED);
 

Points of Interest

I always work with peripheral devices. In these cases, communicating in parallel mode is more flexible and easier than the other modes like serial communication. So I am forced to go to this field. You can send and receive int, long, Byte, unsigned short, unsigned char etc as easy as possible.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

asef

Web Developer

Iran (Islamic Republic Of) Iran (Islamic Republic Of)

Member

I live in Iran . I started hardware programming when I was young. I designed and built some ISA cards for attaching to PC.like ocsiloscope and signal generator. Now I am working for a engineering company and Manager of some project.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 4 PinmemberMember 870111422:19 28 Apr '12  
GeneralRun file PinmemberROVIO3:47 5 Oct '09  
Questionemergency help Pinmembermechatron0:39 19 Apr '08  
QuestionI have a problem with a parallel port, could you please help me? Pinmemberluixilva11:53 9 Oct '07  
QuestionInput Problem Pinmembermirispearl19:37 5 Sep '07  
Questiona question from lovers_ali PinadminSean Ewington8:41 6 Jun '07  
AnswerRe: a question from lovers_ali Pinmemberasef19:26 9 Jun '07  
GeneralPort access project PinmemberRupanagudi15:25 4 May '07  
GeneralRe: Port access project Pinmemberf216:49 27 May '07  
GeneralRe: Port access project Pinmemberasef19:42 9 Jun '07  
GeneralRe: Port access project PinmemberWamuti6:07 16 Nov '07  
Generalplotting a graph in VC++ PinmemberMember #343294422:07 19 Mar '07  
hi.my name is Smart.in my project, how do i plot graphs using VC++?
pliz help.
GeneralVisual C++ 6 Or Visual C++.Net 2005 Pinmembersaman_programing1:13 29 May '06  
GeneralRe: Visual C++ 6 Or Visual C++.Net 2005 Pinmemberasef2:40 29 May '06  
Questionejraye barname dar Turbo C++ 3.0 DOS Pinmembersaman_programing18:55 24 May '06  
AnswerRe: ejraye barname dar Turbo C++ 3.0 DOS Pinmemberasef18:49 26 May '06  
Generalserial ( COM) port accessing Pinmemberbala nagesh18:29 15 May '06  
GeneralRe: serial ( COM) port accessing Pinmemberasef20:14 15 May '06  
QuestionInput Probs Pinmemberbhaskar_gupta8:31 8 Feb '06  
AnswerRe: Input Probs Pinmemberasef17:45 11 Feb '06  
GeneralHow to control parallel port by programming Visual C++ PinmemberBK20074:07 25 Dec '06  
GeneralParallel port Pinmemberdzldan10:46 2 Nov '05  
GeneralRe: Parallel port Pinmemberasef17:36 4 Nov '05  
GeneralRe: Parallel port PinmemberBK20074:05 25 Dec '06  
Generalport Programming Problem In XP PinmemberMasoud Aghapour17:49 7 Sep '05  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120529.1 | Last Updated 18 Aug 2004
Article Copyright 2004 by asef
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid