Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Datenabfrage am parallelen Port - Druckerport - LPT1 (https://www.delphipraxis.net/43780-datenabfrage-am-parallelen-port-druckerport-lpt1.html)

Tazidus 8. Apr 2005 14:52


Datenabfrage am parallelen Port - Druckerport - LPT1
 
Hallo,

ich habe ein Problem bei meinem Programm. Und zwar will ich den Status an der parallelen Schnittstelle abfragen.

Hierzu ist zwar schon viel in diesem Forum berichtet worden, aber entweder ging es hier nur um eine Abfrage oder es funktionierte bei mir nicht.

Also beschreibe ich mal, was ich will.

Ich habe einen Bondrucker und der steuert eine Kassenlade an. Ich kann drucken, Kassenlade öffnen und so, alles kein Problem.
Jetzt bietet der Drucker die Möglichkeit den Status abzufragen (Papierleer, Drucker offen und das was ich will, Kassenlade geöffnet).

Problem ist jetzt folgendes. Ich müsste eine ESC-Sequent an den Drucker schicken und danach direkt ein Byte lesen und das dritte Bit auswerten ob High oder Low (Null oder eins).

Genauer Vorgang wie folgt:

Code:
  AssignFile(d,'LPT1');
  Rewrite(d);
  Write  (d,#016#004#001); //Mit diesem ESC-Sequenz wird der Status abgefragt.
  CloseFile(d)
genauer gesagt, sieht der Befehl wie folgt aus:
Die Sequenz zum Abfragen des Druckerstatus ist:

ASCII: DLE EOT <n>
Hex: 10 04 <n>
Decimal: 16 4 <n>

n = 1: Transmit printer status
n = 2: Transmit off-line status
n = 3: Transmit error status
n = 4: Transmit paper roll sensor status

Nachdem die Sequenz mit n=1 an den Drucker gesendet wurde, wird von dem Drucker über den üblichen Datankanal der Schnittstelle ein Byte gesendet. Jetzt muss an der Schnittstelle dieses Byte entgegen genommen werden und das 3. Bit ausgewerten.

Ich habe es schon mit Assembler Einbindung versucht und auch schon den Hinweis mit der IO.dll verwertet, aber irgend wie kommt bei mir nur das letzte Zeichen an, was ich an die Schnittstelle sende - in diesem Fall eine "1"

Kann mir einer helfen? Vielleicht eine Lösung anbieten oder einen Denkanstoß liefern.

Betriebssystem ist mir egal. Zurzeit habe ich Win XP Pro, habe aber auch noch einen Rechner mit Win 98 SE. Bin da sehr flexibel. Nur funktionieren sollte es.

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz