also wenn du jeden pin einzeln setzen willst dann kannst du das unter win98 (unter nt/2000) geht das nur mit
nem treiber den status eines einzelnen pins mittels assembler abfragen.
erstmal die pins in einer übersicht
##########################################
DataRegister, 0, Out printerdata
StatusRegister, 1, IN printerstatus
ControlRegister, 2, Control printerfunctions.
(Dataregister (offset = 0))
----------------------------------
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
----------------------------------
..|...|...|...|...|...|...|...|_____ D0 Out.
..|...|...|...|...|...|...|________D1 Out.
..|...|...|...|...|...|__________ D2 Out.
..|...|...|...|...|____________ D3 Out.
..|...|...|...|_______________ D4 Out.
..|...|...|__________________D5 Out.
..|...|____________________ D6 Out.
..|_______________________D7 Out.
(Statusregister (offset = 1))
----------------------------------
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | (all read)
----------------------------------
..|...|...|...|...|____________ Error.
..|...|...|...|_______________ Select.
..|...|...|__________________PE.
..|...|____________________ ACK.
..|_______________________Busy (inverted)
(Controlregister (offset = 2))
----------------------------------
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | (OUT AND IN.)
----------------------------------
..........|...|...|...|...|...|
..........|...|...|...|...|...|
..........|...|...|...|...|...|____ Strobe (inverted.)
..........|...|...|...|...|_______ Auto Feed.
..........|...|...|...|_________ Init (inverted.)
..........|...|...|____________ SLCT IN (inverted.)
tech60....|...|_______________ IRQ Enable
tech60....|__________________ Direction, PS2 or later AT Devices, 0 = write, 1 = read
*)
asm geht dann ungefähr so
#############################
Delphi-Quellcode:
Const
lptport = $378;
DataRegister = $00;
StateRegister = $01;
ControlRegister = $02;
// lesen
port := lptport + gewünschtes
register
asm
mov dx, Port
in al, dx
Mov Value, AL
end;
Value beinhaltet den aktuellen wert deines registers
// schreiben
port := lptport + gewünschtes
register
value hat den wert den du
in das
register schreiben willst
asm
mov al, Value
mov dx, Port
out dx, al
end;
wenn dir das ungefähr weiterhilft sag bescheid dann poste ich mal kompletten code hier.
mfg, mika