Hi!
Im Internet habe ich ein kleines Programm gefunden für die Ansteuerung
eines Displays T6963 an die LPT.
Ich verstehe nicht, warum hier "PortReadB(printerport+$402);"
verwendet wird. Was genau soll das bezwecken?
procedure TForm1.WaitDispRdy;
// Warten, bis das Display bereit ist
var tmp: byte;
t: TDateTime;
begin
if BiDirLPT THEN begin
// LPT im ECP-Control-Register auf PS/2-Mode setzen
// nötig, falls es ein ECP-Port ist
tmp:=PortReadB(printerport+$402);
tmp:=tmp AND $1F;
tmp:=tmp OR $20; // Bidirektionaler Modus = PS/2
PortWriteB(printerport+$402,tmp);
t:=now+(5/86400); // Begrenzt auf 5 Sekunden
repeat
// Auf Eingang schalten und abfragen
PortWriteB(printerport+2,$20+4+2); //In, CD=1, CS=0, Wr=1
PortWriteB(printerport+2,$20+4+2+8); //In, CD=1, CS=0, Wr=1,
Rd=0
tmp:=PortReadB(printerport);
PortWriteB(printerport+2,$20+4+2); //In, CD=1, CS=0, Wr=1
until ((tmp AND 3)=3) OR (now>t); // Maximal 5 Sekunden warten
PortWriteB(printerport+2,0);
end else
Delay(1); // Ohne bidirektionalen Parallelport ist Handshaking
nicht möglich
end;
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.