Parallel Port Programming with Delphi
This article demonstration how to access parallel port with delphi 6. to access parallel port for all Windows platform i use driver file inpout32.dll becuase it easily to use with delphi.You can dowload from http://www.logix4u.net and it included in the example which you can download at the buttom of this page.
PC Parallel Port Basic
As we know the standard parallel port have 3 port for controll
1. Status port
2. Control Port
3. Data Port
each port have own address like this
Register | LPT1 | LPT2 |
data registar(baseaddress + 0) | 0x378 | 0x278 |
status register (baseaddress + 1) | 0x379 | 0x279 |
control register (baseaddress + 2) | 0x37a | 0x27a |
Pin No (DB25) | Signal name | Direction | Register - bit | Inverted |
1 | nStrobe | Out | Control-0 | Yes |
2 | Data0 | In/Out | Data-0 | No |
3 | Data1 | In/Out | Data-1 | No |
4 | Data2 | In/Out | Data-2 | No |
5 | Data3 | In/Out | Data-3 | No |
6 | Data4 | In/Out | Data-4 | No |
7 | Data5 | In/Out | Data-5 | No |
8 | Data6 | In/Out | Data-6 | No |
9 | Data7 | In/Out | Data-7 | No |
10 | nAck | In | Status-6 | No |
11 | Busy | In | Status-7 | Yes |
12 | Paper-Out | In | Status-5 | No |
13 | Select | In | Status-4 | No |
14 | Linefeed | Out | Control-1 | Yes |
15 | nError | In | Status-3 | No |
16 | nInitialize | Out | Control-2 | No |
17 | nSelect-Printer | Out | Control-3 | Yes |
18-25 | Ground | - | - | - |
* leading n = Active low or invert logic
How to use inpout32.dll with Delphi
After download inpout32.dll copy it to Windows\system32\
1. Open Delphi program
2. place component on from like this
3. write program following
1: unit main; 2: interface 3: uses 4: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 5: Dialogs, StdCtrls; 6: type 7: TForm1 = class(TForm) 8: Button1: TButton; 9: Button2: TButton; 10: Edit1: TEdit; 11: Label1: TLabel; 12: Label2: TLabel; 13: procedure Button1Click(Sender: TObject); 14: procedure Button2Click(Sender: TObject); 15: private 16: { Private declarations } 17: public 18: { Public declarations } 19: end; 20: 21: var 22: Form1: TForm1; 23: 24: procedure Out32(wAddr:word;bOut:byte); stdcall; external 'inpout32.dll' 25: function Inp32(wAddr:word):integer; stdcall; external 'inpout32.dll' 26: 27: implementation 28: 29: {$R *.dfm} 30: 31: procedure TForm1.Button1Click(Sender: TObject); 32: begin 33: Out32($378,$53); // Out32 34: end; 35: 36: procedure TForm1.Button2Click(Sender: TObject); 37: begin 38: edit1.Text:=IntToHex(Inp32($378),2); // Edit1 39: end; 40: end.
This program load inpout32.dll in static type in line 24,25.In event Button1Click program send data(53h) to data port (378h) in line 33. In line 38 we can read data(8 bit ) from data port(Set to bidirection Port only)
This picture used to test for output
Download Example
No comments:
Post a Comment